istioctl check-inject による Istio サイドカーインジェクションの検証
istioctl experimental check-inject
は、特定のWebhookがPodにIstioサイドカーの注入を実行するかどうかを確認するのに役立つ診断ツールです。このツールを使用して、サイドカー注入の設定がライブクラスターに正しく適用されているかどうかを確認します。
クイックスタート
特定のPodでIstioサイドカー注入が実行された/されなかった(または実行される/されない)理由を確認するには、以下を実行します。
$ istioctl experimental check-inject -n <namespace> <pod-name>
デプロイメントの場合は、以下を実行します。
$ istioctl experimental check-inject -n <namespace> deploy/<deployment-name>
または、ラベルペアの場合は、以下を実行します。
$ istioctl experimental check-inject -n <namespace> -l <label-key>=<label-value>
たとえば、hello
名前空間に httpbin
というデプロイメントがあり、app=httpbin
というラベルを持つ httpbin-1234
というPodがある場合、次のコマンドは同等です。
$ istioctl experimental check-inject -n hello httpbin-1234
$ istioctl experimental check-inject -n hello deploy/httpbin
$ istioctl experimental check-inject -n hello -l app=httpbin
結果の例:
WEBHOOK REVISION INJECTED REASON
istio-revision-tag-default default ✔ Namespace label istio-injection=enabled matches
istio-sidecar-injector-1-18 1-18 ✘ No matching namespace labels (istio.io/rev=1-18) or pod labels (istio.io/rev=1-18)
INJECTED
フィールドが ✔
とマークされている場合、その行のWebhookは注入を実行し、そのWebhookがサイドカー注入を実行する理由が表示されます。
INJECTED
フィールドが ✘
とマークされている場合、その行のWebhookは注入を実行せず、その理由も表示されます。
Webhookが注入を実行しない、または注入にエラーが発生する可能性のある理由:
一致する名前空間ラベルまたはPodラベルがない:名前空間またはPodに適切なラベルが設定されていることを確認してください。
特定のリビジョンの名前空間ラベルまたはPodラベルが一致しない:目的のIstioリビジョンに一致するように正しいラベルを設定してください。
Podラベルが注入を妨げている:ラベルを削除するか、適切な値に設定してください。
名前空間ラベルが注入を妨げている:ラベルを適切な値に変更してください。
複数のWebhookがサイドカーを注入している:注入用に有効になっているWebhookが1つだけであることを確認するか、名前空間またはPodに特定のWebhookを対象とする適切なラベルを設定してください。