Sidecar 注入是指将一个 sidecar 容器自动注入到应用程序容器中的过程。在 Istio 中,sidecar 是一个专门的 Envoy 代理容器,它与应用程序容器一起部署,并且处理所有进出该容器的网络流量。通过 sidecar 注入,Istio 可以对所有部署在 Kubernetes 集群中的应用程序进行拦截并添加额外的功能,例如流量管理、安全性和可观测性。
Sidecar 注入通常使用 Kubernetes 的 Admission Controller 和 MutatingWebhook 实现。Admission Controller 允许您定义策略来控制 Pod 部署之前是否允许进行修改,MutatingWebhook 则可以在 Pod 创建时自动修改 Pod 规范。
当启用了 Istio 的 sidecar 注入功能后,在创建或更新 Pod 时,Kubernetes API Server 将会调用 MutatingWebhook,并向其传递要创建或更新的 Pod 的详细信息。MutatingWebhook 将检查这些信息并生成包含注入 sidecar 容器的新 Pod 规范。最终生成的规范将由 Kubernetes 使用来创建或更新 Pod。