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が注入を実行しない、または注入にエラーが発生する可能性のある理由:

  1. 一致する名前空間ラベルまたはPodラベルがない:名前空間またはPodに適切なラベルが設定されていることを確認してください。

  2. 特定のリビジョンの名前空間ラベルまたはPodラベルが一致しない:目的のIstioリビジョンに一致するように正しいラベルを設定してください。

  3. Podラベルが注入を妨げている:ラベルを削除するか、適切な値に設定してください。

  4. 名前空間ラベルが注入を妨げている:ラベルを適切な値に変更してください。

  5. 複数のWebhookがサイドカーを注入している:注入用に有効になっているWebhookが1つだけであることを確認するか、名前空間またはPodに特定のWebhookを対象とする適切なラベルを設定してください。

この情報は役に立ちましたか?
改善のための提案はありますか?

フィードバックありがとうございます!