8.4. Webhook 受付プラグインのタイプ
クラスター管理者は、API サーバーの受付チェーンで変更用の受付プラグインまたは検証用の受付プラグインを使用して Webhook サーバーを呼び出すことができます。
8.4.1. 受付プラグインの変更
変更用の受付プラグインは、受付プロセスの変更フェーズで起動します。これにより、リソースコンテンツが永続化する前にそれらを変更することができます。変更用の受付プラグインで呼び出し可能な Webhook の一例として、Pod ノードセレクター機能があります。 この機能は namespace でアノテーションを使用してラベルセレクターを検索し、これを Pod 仕様に追加します。
変更用の受付プラグインの設定例:
apiVersion: admissionregistration.k8s.io/v1beta1 kind: MutatingWebhookConfiguration 1 metadata: name: <webhook_name> 2 webhooks: - name: <webhook_name> 3 clientConfig: 4 service: namespace: default 5 name: kubernetes 6 path: <webhook_url> 7 caBundle: <ca_signing_certificate> 8 rules: 9 - operations: 10 - <operation> apiGroups: - "" apiVersions: - "*" resources: - <resource> failurePolicy: <policy> 11 sideEffects: None
- 1
- 変更用の受付プラグイン設定を指定します。
- 2
MutatingWebhookConfiguration
オブジェクトの名前。<webhook_name>
を適切な値に置き換えます。- 3
- 呼び出す Webhook の名前です。
<webhook_name>
を適切な値に置き換えます。 - 4
- Webhook サーバーに接続し、これを信頼し、データをこれに送信する方法についての情報です。
- 5
- フロントエンドサービスが作成される namespace です。
- 6
- フロントエンドサービスの名前です。
- 7
- 受付要求に使用される Webhook URL です。
<webhook_url>
を適切な値に置き換えます。 - 8
- Webhook サーバーで使用されるサーバー証明書に署名する PEM でエンコーディングされた CA 証明書です。
<ca_signing_certificate>
を base64 形式の適切な証明書に置き換えます。 - 9
- API サーバーがこの Webhook 受付プラグインを使用する必要があるタイミングを定義するルールです。
- 10
- API サーバーをトリガーしてこの Webhook 受付プラグインを呼び出す 1 つ以上の操作です。使用できる値は、
create
、update
、delete
、またはconnect
です。<operation>
および<resource>
を適切な値に置き換えます。 - 11
- Webhook サーバーが利用できない場合にポリシーを実行する方法を指定します。
<policy>
をIgnore
(失敗した場合に要求を無条件で受け入れる) またはFail
(失敗した要求を拒否する) のいずれかに置き換えます。Ignore
を使用すると、すべてのクライアントの予測できない動作が生じる可能性があります。
OpenShift Container Platform 4.10 では、ユーザーによって作成されるオブジェクト、または変更用の受付プラグインを使用するコントロールループは、初回の要求で設定される値が上書きされる場合などに予期しない結果を返す場合があるため、推奨されていません。
8.4.2. 受付プラグインの検証
検証用の受付 Webhook は受付プロセスの検証フェーズで起動します。このフェーズでは、特定 API リソースの変更がない項目の実施を可能にし、リソースが再び変更されないようにすることができます。Pod ノードセレクターは、すべての nodeSelector
フィールドが namespace のノードセレクターの制限の制約を受けるようにするために、検証用の受付プラグインによって呼び出される Webhook の一例です。
検証用の受付 Webhook 設定の例:
apiVersion: admissionregistration.k8s.io/v1beta1 kind: ValidatingWebhookConfiguration 1 metadata: name: <webhook_name> 2 webhooks: - name: <webhook_name> 3 clientConfig: 4 service: namespace: default 5 name: kubernetes 6 path: <webhook_url> 7 caBundle: <ca_signing_certificate> 8 rules: 9 - operations: 10 - <operation> apiGroups: - "" apiVersions: - "*" resources: - <resource> failurePolicy: <policy> 11 sideEffects: Unknown
- 1
- 検証用の受付 Webhook 設定を指定します。
- 2
ValidatingWebhookConfiguration
オブジェクトの名前。<webhook_name>
を適切な値に置き換えます。- 3
- 呼び出す Webhook の名前です。
<webhook_name>
を適切な値に置き換えます。 - 4
- Webhook サーバーに接続し、これを信頼し、データをこれに送信する方法についての情報です。
- 5
- フロントエンドサービスが作成される namespace です。
- 6
- フロントエンドサービスの名前です。
- 7
- 受付要求に使用される Webhook URL です。
<webhook_url>
を適切な値に置き換えます。 - 8
- Webhook サーバーで使用されるサーバー証明書に署名する PEM でエンコーディングされた CA 証明書です。
<ca_signing_certificate>
を base64 形式の適切な証明書に置き換えます。 - 9
- API サーバーがこの Webhook 受付プラグインを使用する必要があるタイミングを定義するルールです。
- 10
- API サーバーをトリガーしてこの Webhook 受付プラグインを呼び出す 1 つ以上の操作です。使用できる値は、
create
、update
、delete
、またはconnect
です。<operation>
および<resource>
を適切な値に置き換えます。 - 11
- Webhook サーバーが利用できない場合にポリシーを実行する方法を指定します。
<policy>
をIgnore
(失敗した場合に要求を無条件で受け入れる) またはFail
(失敗した要求を拒否する) のいずれかに置き換えます。Ignore
を使用すると、すべてのクライアントの予測できない動作が生じる可能性があります。