cfanbo / cfanbo.github.io

1 stars 0 forks source link

istio 中 sidecar 注入实现原理 | 学习笔记 #233

Open cfanbo opened 11 months ago

cfanbo commented 11 months ago

https://blog.haohtml.com/posts/istio-sidecar/

在 istio 中为了对流量进行有效的管理,一般通过注入的方式将代理 istio-proxy 与应用程序一起位于同一个Pod,然后通过 istio-init initContainer修改 iptables 实现 ingress 或 egress,那么在 istio 中这个注入是如何实现的呢,本节对其实现原理进行一些分析。 实现原理 在上一节《apiserver 中的webhook开发教程》 我们介绍过admission controller 基本实现原理,由此得知当创建一个资源对象的时候,可以通过定义 ValidatingWebhookConfiguration 或 MutatingWebhookConfiguration 实现在创建的进程中对这些 webhook 进行调用。而 MutatingWebhookConfiguration 则可以对请求的资源进行修改。在istio中的 injection 正是基于此原理实现的。 webhook配置 当我们在k8s集群中安装 istio 后,会创建一些资源,如 deployment、service、crd 等 $ istioctl install --set profile=demo -y ✔ Istio core installed ✔ Istiod installed ✔ Egress gateways installed ✔ Ingress gateways installed ✔ Installation complete $ kubectl get deployment -n istio-system NAME READY UP-TO-DATE AVAILABLE AGE istio-egressgateway 1/1 1 1 126m istio-ingressgateway 1/1 1 1 126m istiod 1/1 1 1 131m $ kubectl get pod -n istio-system -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES istio-egressgateway-7b8b76f497-w2xvj 1/1 Running 0 139m 10.