Sidecar 自动注入

Sidecar 自动注入机制是将 sidecar 代理自动添加到用户创建的 pod。

它使用 MutatingWebhook 机制在 pod 创建的时候将 sidecar 的容器和卷添加到每个 pod 的模版里。

用户可以通过 webhooks namespaceSelector 机制来限定需要启动自动注入的范围,也可以通过注解的方式针对每个 pod 来单独启用和禁用自动注入功能。

Sidecar 是否会被自动注入取决于下面 3 条配置和 2 条安全规则:

配置:

  • webhooks namespaceSelector
  • 默认策略 policy
  • pod 级别的覆盖注解

安全规则:

  • sidecar 默认不能被注入到 kube-systemkube-public 这两个 namespace
  • sidecar 不能被注入到使用 host network 网络的 pod 里

下面的表格展示了基于上述三个配置条件的最终注入状态。上述的安全规则不会被覆盖。

namespaceSelector 匹配默认策略Pod 覆盖 sidecar.istio.io/inject 注解Sidecar 是否注入?
yesenabledtrue (default)yes
yesenabledfalseno
yesdisabledtrueyes
yesdisabledfalse (default)no
noenabledtrue (default)no
noenabledfalseno
nodisabledtrueno
nodisabledfalse (default)no