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

Container Service for Kubernetes:ALB Ingress コントローラーの Webhook 検証を有効にする

最終更新日:Feb 21, 2025

Webhook 検証は、Application Load Balancer(ALB)Ingress コントローラー 2.15.0 でサポートされています。ALB Ingress コントローラー 2.15.0 は、アドミッション Webhook を使用して API リクエストのパラメーターを検証できます。API リクエストに無効な構成が含まれている場合、システムはリクエストをインターセプトし、エラーメッセージを返します。これは、無効なパラメーター形式が原因で発生する調整エラーを防ぐのに役立ちます。このトピックでは、Webhook 検証の実装方法と一般的なエラーメッセージについて説明します。

Webhook 検証の実装方法

  • 動的アドミッション Webhook

    Kubernetes の動的アドミッション制御機能によって提供されるアドミッション Webhook は、Kubernetes 1.9 でサポートされています。クラスタにアドミッション Webhook のコンポーネントをデプロイした後、Webhook を使用して [API サーバー] に送信されるリクエストを検証できます。リクエストが [API サーバー] に送信されると、Webhook はリクエストをインターセプトし、リクエストが認証および承認された後、リクエストに必要なリソースオブジェクトが永続化される前に、リクエストを検証します。

  • Webhook 検証の利点

    • 無効なリクエストをできるだけ早くインターセプトする: Webhook は、無効な構成を含む API リクエストをできるだけ早くインターセプトできます。これは、無効な作成リクエストを減らし、計算リソースとネットワークリソースの無駄を防止します。また、異常なクラスタ状態のリスクも軽減します。

    • コントローラーロジックの分離: Webhook は、検証を ALB Ingress コントローラーのロジックから分離します。これにより、ALB Ingress コントローラーはリソースのデプロイと管理に集中できます。これは、単一責任の原則に基づいてシステムをモジュール化するのに役立ちます。モジュール化されたシステムは、サービスのメンテナンスと拡張を容易にします。

    • セキュリティの向上: YAML 検証ロジックは、個別の Webhook サービスに基づいて実装されます。これにより、Webhook サービスを使用して、クラスタ内のリソース作成リクエストを集中管理および制御し、悪意のある構成や無効な構成のリスクを軽減できます。

    • 無効な構成の認識を可能にする: Webhook 検証サービスは、無効なパラメーターをできるだけ早くインターセプトし、エラーメッセージを提供できます。エラーメッセージによって提供される情報に基づいて、問題のトラブルシューティングと修正を行うことができます。

  • Webhook コンポーネント

    • ValidatingAdmissionWebhook: [API サーバー] が Ingress の作成または更新リクエストを受信したときに呼び出される Webhook の URL を指定し、Webhook 検証をトリガーする操作とリソースを指定します。ValidatingAdmissionWebhook リソースは、ALB Ingress コントローラーと共にデプロイされます。

    • TLS 証明書: [API サーバー] と Webhook サービス間の通信を暗号化します。

    • Webhook Service: AdmissionReview リクエストを処理し、Ingress リソースを検証してから、AdmissionResponse を生成します。

Webhook インターセプト メッセージ

  • Webhook インターセプト メッセージの例

    次の例は、Ingress YAML ファイルに無効な構成が含まれている場合に表示される Webhook インターセプト メッセージを示しています。インターセプト メッセージには、Webhook によって返されるエラーメッセージが含まれており、listen-ports アノテーションが無効な形式で指定されていることを示しています。エラーメッセージのエラーの詳細に基づいて、この問題を解決できます。

    • コンソールに表示されるエラーメッセージ

      81e4a843f5a45ef060c8c92ceefb6595

    • [CLI] に表示されるエラーメッセージ

      image

  • エラーメッセージの情報

    リクエストはアドミッション検証に失敗しました。admission webhook "validate.alb.ingress.kubernetes.io" エラーメッセージは、構成を解析できないためリクエストが拒否されたことを示しています。原因は、リスナー構成の配列要素の末尾に無効な文字(:)が追加されていることです。

次の表に、AlbConfig と Ingress に関連する検証エラーメッセージを示します。

リソースの種類

エラーの種類

エラーメッセージ

AlbConfig

albconfig unmarsh failed

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-scheduler

the 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-protocol

the 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-protocol

the 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-method

the 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-httpcode

the 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-httpversion

the 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-port 形式

webhook validate ingress ingress: check ingress listen port invalid

パスにはキャレット(^)を含めることができません

webhook validate ingress ingress: path is invalid because path contains ^ character

カスタム転送アクション unmarsh failed

webhook validate ingress test: the value of actions annotation is invalid