すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:ALB Ingress Controller Webhook 検証ソリューション

最終更新日:Mar 26, 2026

ALB Ingress コントローラー 2.15.0 以降では、API リクエストの検証にアドミッション Webhook を使用します。リクエストに無効な構成が含まれている場合、Webhook はリソースが永続化される前にそのリクエストをインターセプトし、特定のエラーメッセージを返します。これにより、Ingress や AlbConfig の誤った構成を早期に検出し、無効なパラメーター形式による調整(リコンサイル)の失敗を防ぐことができます。

仕組み

ALB Ingress コントローラーは、Kubernetes 1.9 以降で利用可能な Kubernetes の動的アドミッション制御を使用します。リクエストが API サーバーに到達すると、認証および権限付与の後、リソースオブジェクトが etcd に書き込まれる前に Webhook によって検証されます。

ValidatingAdmissionWebhook は ALB Ingress コントローラーと共にデプロイされます。この Webhook は、どの操作およびリソースタイプが検証をトリガーするかを定義します。具体的には、Ingress の作成および更新リクエストが対象です。

image

Webhook は以下の 3 つのコンポーネントで構成されます。

コンポーネント役割
ValidatingAdmissionWebhookWebhook URL を登録し、どのリソースおよび操作が検証をトリガーするかを定義します
TLS 証明書API サーバーと Webhook サービス間の通信を暗号化します
Webhook サービス各 AdmissionReview リクエストを処理し、Ingress リソースを検証して AdmissionResponse を返します

Webhook 検証を使用する理由:

  • 無効なリクエストを早期にキャッチできます。 Webhook はリソースが作成される前にリクエストをインターセプトするため、不要なコンピュートおよびネットワークリソースの消費を削減し、クラスターの異常状態リスクを低減します。

  • 検証ロジックをコントローラーから分離できます。 ALB Ingress コントローラーはリソースのデプロイメントおよび管理に集中できます。検証は個別の Webhook サービスで実行され、単一責任の原則に従います。

  • リソース作成の制御を一元化できます。 Webhook サービスはリソース作成リクエストに対する中央ゲートとして機能し、誤構成または悪意のある YAML がクラスターに到達するリスクを軽減します。

  • 対処可能なエラーメッセージが得られます。 検証に失敗した場合、Webhook は無効なパラメーターを直接指し示す具体的なエラーメッセージを返すため、コントローラーログを詳細に調査することなく問題を修正できます。

Webhook インターセプションメッセージの確認

API サーバーが Webhook 検証によりリクエストを拒否した場合、エラーはコンソールおよび CLI の両方に表示されます。

コンソールでの表示:

81e4a843f5a45ef060c8c92ceefb6595

CLI での表示:

image

エラーメッセージには、Webhook(validate.alb.ingress.kubernetes.io)および具体的な検証エラーが記載されています。例:

Error from server: admission webhook "validate.alb.ingress.kubernetes.io" denied the request:
webhook validate ingress ingress: check ingress listen port invalid

上記のエラーは、listen-ports アノテーションの値が解析できなかったことを示しています。具体的には、リスナー構成の配列要素に無効な文字(:)が追加されています。アノテーションの値を修正してマニフェストを再適用してください。

検証エラー リファレンス

以下の表に、AlbConfig および Ingress リソースのすべての検証エラーを示します。

AlbConfig エラー

エラー種別エラーメッセージ
YAML 解析失敗webhook validate albconfig alb: Unmarshal error : %v Please check the format of albconfig yaml
無効なリスナーポートwebhook validate albconfig alb: listener port number mustbetween [1:65535], or you should set listen port explicitly in listener config. Error listen port : 0
無効なリスナープロトコルwebhook validate albconfig alb: listener protocol is invalid : HTTPP, or you should set listen protocol explicitly in listener config. Please set protocol value HTTP or HTTPS or QUIC
無効な logstore 名webhook validate albconfig alb: logstore name should start with alb_
空のタグキーまたは値webhook validate albconfig alb: empty tag key/value is invalid
無効な IP アドレスタイプthe value Interne is invalid. Please set the value as one of: [Internet Intranet]
無効な IPv6 アドレスタイプthe value Interne is invalid. Please set the value as one of: [Internet Intranet]
無効な IP アドレスモードthe value Dynamicc is invalid. Please set the value as one of: [Dynamic Fixed]
無効なインスタンスタイプthe value Standardd is invalid. Please set the value as one of: [Basic Standard StandardWithWaf]
競合するアクセス制御設定webhook validate albconfig alb: aclEntry and aclIds cannot use together in listener

Ingress エラー

エラー種別エラーメッセージ
無効な backend-schedulerthe value of alb.ingress.kubernetes.io/backend-scheduler annotation is invalid : test. the value wlcc is invalid. Please set the value as one of: [wrr wlc sch uch]
無効な backend-protocolthe value of alb.ingress.kubernetes.io/backend-protocol annotation is invalid : test. the value wlcc is invalid. Please set the value as one of: [HTTP HTTPS gRPC]
無効な healthcheck-protocolthe value of alb.ingress.kubernetes.io/healthcheck-protocol annotation is invalid : test. the value wlcc is invalid. Please set the value as one of: [HTTP HTTPS TCP gRPC]
無効な healthcheck-methodthe value of alb.ingress.kubernetes.io/healthcheck-method annotation is invalid : test. the value wlcc is invalid. Please set the value as one of: [GET HEAD POST]
無効な healthcheck-httpcodethe value of alb.ingress.kubernetes.io/healthcheck-httpcode annotation is invalid : test. the value wlcc is invalid. Please set the value as one of: [http_2xx http_3xx http_4xx http_5xx]
無効な healthcheck-httpversionthe value of alb.ingress.kubernetes.io/healthcheck-httpversion annotation is invalid : test. the value wlcc is invalid. Please set the value as one of: [HTTP1.1 HTTP1.0]
無効な listen-ports 形式webhook validate ingress ingress: check ingress listen port invalid
パスに ^webhook validate ingress ingress: path is invalid because path contains ^ character
カスタム転送アクションの解析失敗webhook validate ingress test: the value of actions annotation is invalid