应用服务网格

注入策略配置

2025-08-13 06:49:17

应用服务网格基于K8s webhook技术,通过给业务pod内增加sidecar容器实现治理能力注入;sidecar注入策略受多种配置影响,包括pod所在命名空间的标签、pod注解、自动注入匹配、特殊匹配规则等,您可以在服务网格控制台sidecar管理->注入策略配置菜单配置,如下图所示:


只有当Pod所在的命名空间标签和Pod自身的标签/注解同时满足注入策略配置中的设置时,才能够实现Pod的sidecar注入。配置说明如下:

配置

说明

Pod所在命名空间的标签需要满足的条件

包含istio-inject:enabled:需要注入sidecar的Pod所在命名空间必须包含istio-inject:enabled标签。

不包含istio-inject:disabled:需要注入sidecar的Pod所在命名空间不能包含istio-inject:disabled标签。

Pod自身的标签/注解需要满足的条件

不包含sidecar.istio.io/inject:false:需要注入sidecar的Pod自身的标签/注解不能包含sidecar.istio.io/inject:false。

包含sidecar.istio.io/inject:true:需要注入sidecar的Pod自身的标签/注解必须包含sidecar.istio.io/inject:true。

AlwaysInjectSelector

注入sidecar的Pod标签选择器,多个标签是and关系;被选中的pod可以视为Pod包含sidecar.istio.io/inject:true标签或注解。

NeverInjectSelector

不注入sidecar的Pod标签选择器,多个标签是and关系;被选中的pod可以视为包含sidecar.istio.io/inject:false标签或注解;优先级高于AlwaysInjectSelector。

 

注:AlwaysInjectSelector和NeverInjectSelector分别看作为匹配的Pod添加sidecar.istio.io/inject:true和sidecar.istio.io/inject:false,但是这个添加的标签优先级低于Pod原本的标签。也就是说,即使 Pod 匹配 NeverInjectSelector,但 Pod 本身具有 sidecar.istio.io/inject:true 标签时,仍然会被视为只包含 sidecar.istio.io/inject:true 标签。

 

在不同注入策略设置下,对于各种Pod所在命名空间标签以及Pod自身注解情况,Pod最终注入策略生效结果参考下表(表中的“Pod所在命名空间需要满足的条件”列中“包含标签”表示包含istio-inject:enabled设置;“不包含标签”表示不包含istio-inject:disabled设置。同理“Pod自身的注解/标签需要满足的条件”列中的“包含标签”表示包含sidecar.istio.io/inject:true设置;“不包含标签”表示不包含sidecar.istio.io/inject:false设置):

命名空间标签(istio-injection)

Pod自身注解(sidecar.istio.io/inject)

Pod所在命名空间需要满足的条件

Pod自身的注解/标签需要满足的条件

AlwaysInjectSelector

NeverInjectSelector

结果

enabled

true

◊

◊

◊

◊

注入

enabled

false

◊

 

◊

◊

◊

不注入

enabled

未设置

◊

◊

匹配

匹配

不注入

enabled

未设置

◊

◊

匹配

不匹配

注入

enabled

未设置

◊

◊

不匹配

匹配

不注入

enabled

未设置

◊

包含

不匹配

不匹配

不注入

enabled

未设置

◊

不包含

不匹配

不匹配

注入

disabled

◊

◊

◊

◊

◊

不注入

未设置

true

包含

◊

◊

◊

不注入

未设置

true

不包含

◊

◊

◊

注入

未设置

false

◊

◊

◊

◊

不注入

未设置

未设置

◊

◊

◊

◊

不注入