第4章 MutatingWebhookConfiguration [admissionregistration.k8s.io/v1]


説明
MutatingWebhookConfiguration は、オブジェクトを受け入れるか拒否し、変更する可能性のある Webhook の設定と承認について説明します。
タイプ
object

4.1. 仕様

プロパティータイプ説明

apiVersion

string

APIVersion はオブジェクトのこの表現のバージョンスキーマを定義します。サーバーは認識されたスキーマを最新の内部値に変換し、認識されない値は拒否することがあります。詳細は、https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources を参照してください。

kind

string

kind はこのオブジェクトが表す REST リソースを表す文字列の値です。サーバーはクライアントが要求を送信するエンドポイントからこれを推測できることがあります。これを更新することはできません。CamelCase を使用します。詳細は、https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds を参照してください。

metadata

ObjectMeta

標準のオブジェクトメタデータ。詳細は https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata を参照してください。

webhooks

array

Webhook は、Webhook と影響を受けるリソースおよび操作のリストです。

webhooks[]

object

MutatingWebhook は、アドミッション Webhook と、それが適用されるリソースと操作について説明しています。

4.1.1. .webhooks

説明
Webhook は、Webhook と影響を受けるリソースおよび操作のリストです。
タイプ
array

4.1.2. .webhooks[]

説明
MutatingWebhook は、アドミッション Webhook と、それが適用されるリソースと操作について説明しています。
タイプ
object
必須
  • name
  • clientConfig
  • sideEffects
  • admissionReviewVersions
プロパティータイプ説明

admissionReviewVersions

array (string)

AdmissionReviewVersions は、Webhook が期待する優先 AdmissionReview バージョンの順序付きリストです。API サーバーは、サポートするリストの最初のバージョンを使用しようとします。このリストで指定されたバージョンのいずれも API サーバーでサポートされていない場合、このオブジェクトの検証は失敗します。永続化された Webhook 設定で許可されたバージョンが指定され、API サーバーに認識されているバージョンが含まれていない場合、Webhook の呼び出しは失敗し、失敗ポリシーの対象となります。

clientConfig

object

WebhookClientConfig には、Webhook との TLS 接続を確立するための情報が含まれています

failurePolicy

string

FailurePolicy は、アドミッションエンドポイントからの認識されないエラーの処理方法を定義します。許可される値は Ignore または Fail です。デフォルトは失敗です。

使用可能な列挙値: - "Fail は、Webhook 呼び出しエラーにより受付が失敗することを意味します。- "Ignore" は、Webhook を呼び出すエラーが無視されることを意味します。

matchConditions

array

MatchConditions は、この Webhook にリクエストを送信するために満たす必要がある条件のリストです。matchConditions は、ルール、namespaceSelector、および objectSelector ですでに一致しているリクエストをフィルター処理します。matchConditions の空のリストは、すべてのリクエストに一致します。最大 64 個の一致条件が使用できます。

完全に一致するロジックは 1 です (順番)。いずれかの matchCondition が FALSE と評価された場合、Webhook はスキップされます。2.すべての matchConditions が TRUE と評価された場合、Webhook が呼び出されます。3.いずれかの matchCondition がエラーと評価された場合 (ただし、どれも FALSE ではない): - FailurePolicy=Fail の場合、リクエストは拒否されます。- FailurePolicy=Ignore の場合、エラーは無視され、Webhook はスキップされます。

これはアルファ機能であり、AdmissionWebhookMatchConditions フィーチャーゲートによって管理されます。

matchConditions[]

object

MatchCondition は、リクエストが Webhook に送信されるために満たされる必要がある条件を表します。

matchPolicy

string

matchPolicy は、ルールリストを使用して着信要求を照合する方法を定義します。許可される値は正確または同等です。

- 完全: 指定されたルールに完全に一致する場合にのみ、要求に一致します。例えば、デプロイメントが apps/v1、apps/v1beta1、extensions/v1beta1 を通して変更できるのに、rule が apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"] のみを含む場合、apps/v1beta1 または extensions/v1beta1 へのリクエストは Webhook に送信されません。

- 同等: 別の API グループまたはバージョンを介してでも、ルールにリストされているリソースを変更する場合は、リクエストに一致します。例えば、deployments が apps/v1、apps/v1beta1、extensions/v1beta1 を介して変更可能で、rules が apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"] のみ含むとします。apps/v1beta1 または extensions/v1beta1 へのリクエストは apps/v1 に変換されて Webhook に送信されます。

デフォルトは同等

使用可能な列挙値: - "Equivalent" は、ルールにリストされているリソースを別の API グループまたはバージョン経由で変更する場合、リクエストが Webhook に送信される必要があることを意味します。- "Exact" は、リクエストが特定のルールに正確に一致する場合にのみ Webhook に送信されることを意味します。

name

string

アドミッション Webhook の名前。名前は完全修飾する必要があります。たとえば、imagepolicy.kubernetes.io です。ここで、imagepolicy は Webhook の名前であり、kubernetes.io は組織の名前です。必須。

namespaceSelector

LabelSelector

NamespaceSelector は、オブジェクトの名前空間がセレクターと一致するかどうかに基づいて、オブジェクトで Webhook を実行するかどうかを決定します。オブジェクト自体が名前空間である場合、マッチングは object.metadata.labels で実行されます。オブジェクトが別のクラスタースコープのリソースである場合、Webhook をスキップすることはありません。

たとえば、名前空間が 0 または 1 のランレベルに関連付けられていないオブジェクトで Webhook を実行するには、セレクターは次のように設定します。"namespaceSelector":{"matchExpressions":{"key": "runlevel"、"operator": "NotIn"、"values":"0"、"1"} }

代わりに、名前空間が prod または staging の environment に関連付けられているオブジェクトに対してのみ Webhook を実行する場合。セレクターは次のように設定します。"namespaceSelector":{"matchExpressions":{"key": "environment"、"operator": "In"、"values":"prod"、"staging"} }

ラベルセレクターのその他の例については、https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ を参照してください。

デフォルトは空の LabelSelector で、すべてに一致します。

objectSelector

LabelSelector

ObjectSelector は、オブジェクトに一致するラベルがあるかどうかに基づいて、Webhook を実行するかどうかを決定します。objectSelector は、Webhook に送信される oldObject と newObject の両方に対して評価され、いずれかのオブジェクトがセレクターと一致する場合に一致すると見なされます。null オブジェクト (create の場合は oldObject、delete の場合は newObject) またはラベルを持つことができないオブジェクト (DeploymentRollback または PodProxyOptions オブジェクトなど) は一致するとは見なされません。エンドユーザーはラベルを設定することでアドミッション Webhook をスキップできるため、Webhook がオプトインの場合にのみオブジェクトセレクターを使用してください。デフォルトは空の LabelSelector で、すべてに一致します。

reinvocationPolicy

string

reinvocationPolicy は、単一のアドミッション評価の一部として、この Webhook を複数回呼び出す必要があるかどうかを示します。許可される値は Never と IfNeeded です。

決して:Webhook は 1 回の入場評価で 2 回以上呼び出されることはありません。

IfNeeded: 最初の Webhook 呼び出しの後に、許可されているオブジェクトが他の許可プラグインによって変更された場合、許可評価の一部として Webhook が少なくとも 1 回追加で呼び出されます。このオプションを指定する Webhook はべき等であり、以前に許可したオブジェクトを処理できる 必要 があります。注:*追加の呼び出しの数は、正確に 1 つであるとは限りません。*追加の呼び出しによってオブジェクトがさらに変更された場合、Webhook が再度呼び出されることは保証されません。*このオプションを使用する Webhook は、追加の呼び出しの数を最小限に抑えるために並べ替えられる場合があります。*すべての変更が完了したことが保証された後でオブジェクトを検証するには、代わりに検証アドミッション Webhook を使用します。

デフォルトはなしです。

使用可能な列挙値: - "IfNeeded" は、最初の Webhook 呼び出し後に許可されるオブジェクトが他の受付プラグインによって変更された場合に、受付評価の一部として Webhook が少なくとも 1 回追加で呼び出される可能性があることを示します。- "Never" は、1 回の受付評価で Webhook を複数回呼び出してはいけないことを示します。

rules

array

ルールは、Webhook が気にするリソース/サブリソースに対する操作を記述します。Webhook は、操作が いずれかの ルールに一致する場合、その操作を考慮します。ただし、ValidatingAdmissionWebhooks と MutatingAdmissionWebhooks が、プラグインを完全に無効にしないと回復できない状態にクラスターを置くことを防ぐために、ValidatingAdmissionWebhooks と MutatingAdmissionWebhook は、ValidatingWebhookConfiguration オブジェクトと MutatingWebhookConfiguration オブジェクトの認可要求で呼び出されることはありません。

rules[]

object

RuleWithOperations は、操作とリソースのタプルです。すべてのタプル拡張が有効であることを確認することを推奨します。

sideEffects

string

SideEffects は、この Webhook に副作用があるかどうかを示します。許容される値は、None、NoneOnDryRun です (v1beta1 を介して作成された Webhook は、Some または Unknown を指定する場合もあります)。副作用のある Webhook は、調整システムを実装する必要があります。これは、リクエストがアドミッションチェーンの将来のステップで拒否される可能性があるため、副作用を元に戻す必要があるためです。dryRun 属性を持つリクエストは、sideEffects==Unknown または Some の Webhook と一致する場合に自動拒否されます。

使用可能な列挙値: - "None" は、Webhook の呼び出しに副作用がないことを意味します。- "NoneOnDryRun" は、Webhook の呼び出しには副作用が発生する可能性がありますが、レビュー対象のリクエストに dry-run 属性がある場合、副作用は抑制されることを意味します。- "Some" は、Webhook の呼び出しに副作用がある可能性があることを意味します。属性が dry-run のリクエストがこの Webhook への呼び出しをトリガーする場合、リクエストは失敗します。- "Unknown" は、Webhook 呼び出しの副作用に関する情報が不明であることを意味します。属性が dry-run のリクエストがこの Webhook への呼び出しをトリガーする場合、そのリクエストは失敗します。

timeoutSeconds

integer

TimeoutSeconds は、この Webhook のタイムアウトを指定します。タイムアウトが経過すると、Webhook 呼び出しは無視されるか、失敗ポリシーに基づいて API 呼び出しが失敗します。タイムアウト値は 1〜30 秒である必要があります。デフォルトは 10 秒です。

4.1.3. .webhooks[].clientConfig

説明
WebhookClientConfig には、Webhook との TLS 接続を確立するための情報が含まれています
タイプ
object
プロパティータイプ説明

caBundle

string

caBundle は、PEM でエンコードされた CA バンドルであり、Webhook のサーバー証明書を検証するために使用されます。指定しない場合、apiserver のシステム信頼ルートが使用されます。

service

object

ServiceReference は、Service.legacy.k8s.io への参照を保持します

url

string

url は、Webhook の場所を標準の URL 形式 (scheme://host:port/path) で示します。URL または サービス のいずれかを正確に指定する必要があります。

ホスト は、クラスターで実行されているサービスを参照しないでください。代わりに サービス フィールドを使用してください。一部の apiserver では、ホストが外部 DNS を介して解決される場合があります (たとえば、kube-apiserver は、階層化違反になるため、クラスター内 DNS を解決できません)。ホスト は IP アドレスの場合もあります。

この Webhook を呼び出す必要がある可能性のある apiserver を実行するすべてのホストでこの Webhook を実行するように細心の注意を払わない限り、ホスト として localhost または 127.0.0.1 を使用することは危険であることに注意してください。このようなインストールは移植性がない可能性があります。つまり、新しいクラスターで簡単に起動することはできません。

スキームは https である必要があります。URL は https://で始まる必要があります。

パスはオプションであり、存在する場合は、URL で許可される任意の文字列にすることができます。パスを使用して、クラスター識別子などの任意の文字列を Webhook に渡すことができます。

ユーザーまたは基本認証 (user:password @ など) を使用することは許可されていません。フラグメント ("#…") とクエリーパラメーター ("?…") も許可されていません。

4.1.4. .webhooks[].clientConfig.service

説明
ServiceReference は、Service.legacy.k8s.io への参照を保持します
タイプ
object
必須
  • namespace
  • name
プロパティータイプ説明

name

string

name はサービスの名前です。必須

namespace

string

namespace は、サービスの名前空間です。必須

path

string

path は、このサービスへのリクエストで送信されるオプションの URL パスです。

port

integer

指定されている場合、Webhook をホストしているサービスのポート。下位互換性のために、デフォルトは 443 です。ポート は有効なポート番号 (1〜65535 を含む) である必要があります。

4.1.5. .webhooks[].matchConditions

説明

MatchConditions は、この Webhook にリクエストを送信するために満たす必要がある条件のリストです。matchConditions は、ルール、namespaceSelector、および objectSelector ですでに一致しているリクエストをフィルター処理します。matchConditions の空のリストは、すべてのリクエストに一致します。最大 64 個の一致条件が使用できます。

完全に一致するロジックは 1 です (順番)。いずれかの matchCondition が FALSE と評価された場合、Webhook はスキップされます。2.すべての matchConditions が TRUE と評価された場合、Webhook が呼び出されます。3.いずれかの matchCondition がエラーと評価された場合 (ただし、どれも FALSE ではない): - FailurePolicy=Fail の場合、リクエストは拒否されます。- FailurePolicy=Ignore の場合、エラーは無視され、Webhook はスキップされます。

これはアルファ機能であり、AdmissionWebhookMatchConditions フィーチャーゲートによって管理されます。

タイプ
array

4.1.6. .webhooks[].matchConditions[]

説明
MatchCondition は、リクエストが Webhook に送信されるために満たされる必要がある条件を表します。
タイプ
object
必須
  • name
  • expression
プロパティータイプ説明

expression

string

expression は、CEL によって評価される式を表します。ブール値に対して評価する必要があります。CEL 式は、CEL 変数として整理された AdmissionRequest および Authorizer の内容にアクセスできます。

'object' - 受信リクエストのオブジェクト。DELETE 要求の値は null です。'oldObject' - 既存のオブジェクト。CREATE リクエストの場合、値は null です。'request' - 受付リクエストの属性 (/pkg/apis/admission/types.go#AdmissionRequest)。'authorizer' - CEL オーソライザー。リクエストのプリンシパル (ユーザーまたはサービスアカウント) の承認チェックを実行するために使用される場合があります。https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz を参照してください。 'authorizer.requestResource' - authorizer から構築され、リクエストリソースで設定された CEL ResourceCheck。CEL に関するドキュメント: https://kubernetes.io/docs/reference/using-api/cel/

必須。

name

string

Name はこの一致条件の識別子であり、MatchConditions の戦略的なマージに使用されるほか、ログ記録用の識別子としても使用されます。適切な名前は、関連する式を説明するものでなければなりません。name は、英数字、'-'、''、または '.' で構成される修飾名で、先頭と末尾が英数字である必要があります (例: 'MyName'、'my.name'、'123-abc'。検証に使用される正規表現は '([A-Za-z0-9][-A-Za-z0-9.]*)?[A-Za-z0-9]')。必要に応じて、DNS サブドメイン接頭辞および '/' を指定します (例: 'example.com/MyName')。

必須。

4.1.7. .webhooks[].rules

説明
ルールは、Webhook が気にするリソース/サブリソースに対する操作を記述します。Webhook は、操作が いずれかの ルールに一致する場合、その操作を考慮します。ただし、ValidatingAdmissionWebhooks と MutatingAdmissionWebhooks が、プラグインを完全に無効にしないと回復できない状態にクラスターを置くことを防ぐために、ValidatingAdmissionWebhooks と MutatingAdmissionWebhook は、ValidatingWebhookConfiguration オブジェクトと MutatingWebhookConfiguration オブジェクトの認可要求で呼び出されることはありません。
タイプ
array

4.1.8. .webhooks[].rules[]

説明
RuleWithOperations は、操作とリソースのタプルです。すべてのタプル拡張が有効であることを確認することを推奨します。
タイプ
object
プロパティータイプ説明

apiGroups

array (string)

APIGroups は、リソースが属する API グループです。'' はすべてのグループです。もしも '' が存在する場合、スライスの長さは 1 でなければなりません。必須。

apiVersions

array (string)

APIVersions は、リソースが属する API バージョンです。'' はすべてのバージョンです。もしも '' が存在する場合、スライスの長さは 1 でなければなりません。必須。

operations

array (string)

操作は、アドミッションフックが気にする操作です - これらすべての操作および追加される将来のアドミッション操作に対して、CREATE、UPDATE、DELETE、CONNECT、または*。'*' が存在する場合、スライスの長さは 1 でなければなりません。必須。

resources

array (string)

リソースは、このルールが適用されるリソースのリストです。

例:Pod は Pod を意味します。pods/log は、Pod のログサブリソースを意味します。' ' はすべてのリソースを意味しますが、サブリソースは意味しません。'pods/ ' は、Pod のすべてのサブリソースを意味します。' /scale' は、すべてのスケールサブリソースを意味します。/*は、すべてのリソースとそのサブリソースを意味します。

ワイルドカードが存在する場合、検証ルールはリソースが互いに重複しないことを保証します。

囲んでいるオブジェクトによっては、サブリソースが許可されない場合があります。必須。

scope

string

scope は、このルールのスコープを指定します。有効な値は、Cluster、Namespaced、およびクラスターとは、クラスタースコープのリソースのみがこのルールに一致することを意味します。名前空間 API オブジェクトはクラスタースコープです。名前空間は、名前空間付きのリソースのみがこのルールに一致することを意味します。は、スコープの制限がないことを意味します。サブリソースは、親リソースのスコープと一致します。デフォルトは "*" です。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.