为了充分利用服务网格的所有特性,服务网格中ACK集群的应用Pod必须包含一个Sidecar代理。除了手动注入方式外,通常建议启用自动注入的方式来简化部署。本文介绍如何使用多种方式开启自动注入。
背景信息
ASM默认提供了一个Webhook控制器,可以将Sidecar代理自动添加到可用的Pod中。Sidecar代理的详细介绍请参见设置Sidecar。
说明 请确保ASM实例的Istio为v1.6.8.17及以上版本。
Sidecar注入优先级
Sidecar注入的设置存在优先级关系,逻辑决策如下图所示:

开启自动注入
其他主动注入的配置
您可以在其他自动注入中配置标签,匹配Pod上的标签,从而控制Pod是否需要中注入Sidecar。
- 使用一个
alwaysInjectSelector
的字段,总是将Sidecar注入匹配标签选择器的Pod中,而忽略全局策略。{ "alwaysInjectSelector": [ { "matchExpressions": [ { "key": "key1", "operator": "Exists" } ] }, { "matchExpressions": [ { "key": "key2", "operator": "Exists" } ] } ] }
- 使用一个
neverInjectSelector
的字段,总是不会将Sidecar注入匹配标签选择器的Pod中,而忽略全局策略。{ "neverInjectSelector": [ { "matchExpressions": [ { "key": "key3", "operator": "Exists" } ] }, { "matchExpressions": [ { "key": "key4", "operator": "Exists" } ] } ] }
- 其他配置参数。
{ "replicaCount": 2, "injectedAnnotations": { "test/istio-init": "runtime/default", "test/istio-proxy": "runtime/default" }, "nodeSelector": { "beta.kubernetes.io/os": "linux" } }
- replicaCount:部署的副本数。
- injectedAnnotations:注入的其他注解。
- nodeSelector:注入部署的节点,本文设置为
linux
,表示注入到带有标签linux
的Node节点上。
场景示例一:某命名空间开启自动注入的情况下,该命名空间下某些Pod关闭自动注入
如果您希望命名空间能够开启自动注入功能,但是该命名空间下某些Pod关闭自动注入。您可以进行以下操作:
使用其他自动注入的配置实现命名空间开启自动注入情况下,该命名空间下某些Pod关闭自动注入
使用Annotations方式实现命名空间开启自动注入情况下,该命名空间下某些Pod关闭自动注入
场景示例二:单独为Pod设置自动注入策略
如果您不想以命名空间为维度批量设置自动注入策略,您也可以单独为Pod设置自动注入策略。