在 istio 中,可以通过 Kubernetes 的标签机制来指定需要注入 sidecar 的 deployment 和 stateful set。具体步骤如下:
- 为需要注入 sidecar 的命名空间打上标签 “istio-injection=enabled”。例如,执行以下命令:
kubectl label namespace default istio-injection=enabled
确认需要注入 sidecar 的 deployment 或 stateful set 所在的 Pod 没有被手动打上
sidecar.istio.io/inject: "false"
标签,以避免被 istio 忽略。对于 deployment,可以在其对应的 YAML 文件中添加如下注释来启用自动注入:
metadata:
name: my-deployment
annotations:
# 启用 istio 自动注入
sidecar.istio.io/inject: "true"
- 对于 stateful set,可以在其对应的 YAML 文件中添加如下模板来启用自动注入:
spec:
template:
metadata:
annotations:
# 启用 istio 自动注入
sidecar.istio.io/inject: "true"
spec:
containers:
- name: my-container
image: my-image
# ...
initContainers:
- name: my-init-container
image: my-image-init
# ...
serviceAccountName: my-service-account-name
volumeClaimTemplates:
- metadata:
name: my-volume-claim-template-name
annotations:
# 启用 istio 自动注入
sidecar.istio.io/inject: "true"
# ...
在添加完注释后,只需使用 kubectl apply 命令或其他适当的命令来更新 deployment 或 stateful set 的 YAML 文件即可。此时,Kubernetes 将会自动为指定的 Pod 注入 istio sidecar。