確認したこと
既に存在する名前空間に対して自動的にサイドカーが付与される設定を行った瞬間に
$ kubectl label namespace xx istio-injection=enabled
全Podにそれらが反映させるかを確認する。
環境情報
- IKS v1.18.13
- Debian GNU/Linux 9
- istio-1.8.1
尚、付与されるIstioのコンテナイメージ情報は
$ kubectl -n istio-system get configmap istio-sidecar-injector
の中にある以下項目より確認可能。
image: "{{ .Values.global.hub }}/{{ .Values.global.proxy_init.image }}:{{ .Values.global.tag }}"
確認結果
以下のように標準出力に結果が返り
$ kubectl label namespace xx istio-injection=enabled namespace/xx labeled
確かにlabelsに付与されるも
$ kubectl get ns xx -o=yaml apiVersion: v1 kind: Namespace metadata: creationTimestamp: ... labels: istio-injection: enabled name: xx ... spec: finalizers: - kubernetes status: phase: Active
即座にPodが更新されるわけではない。
$ kubectl get pod -n xx NAME READY STATUS RESTARTS AGE test-pod 1/1 Running 1 ...
以下、補足です。
補足
下記のように手動でYAMLを生成することも可能ですが
名前空間全体に付与すれば自動的にサイドカーが付与されます。
labelsを変えただけではPodに反映されませんが、Podを再起動させると
$ kubectl get pod -n x NAME READY STATUS RESTARTS AGE test-pod 2/2 Running 0 2m13s
コンテナが付与されて上がってきます。
ちなみに同Podを管理するDeploymentをeditとして以下を付与すると
spec: template: metadata: annotations: sidecar.istio.io/inject: "false"
を即時にサイドカーは外れます。
以上です。