第4章 MutatingWebhookConfiguration [admissionregistration.k8s.io/v1]
- 説明
- MutatingWebhookConfiguration は、オブジェクトを受け入れるか拒否し、変更する可能性のある Webhook の設定と承認について説明します。
- タイプ
-
object
4.1. 仕様
プロパティー | タイプ | 説明 |
---|---|---|
|
| APIVersion はオブジェクトのこの表現のバージョンスキーマを定義します。サーバーは認識されたスキーマを最新の内部値に変換し、認識されない値は拒否することがあります。詳細は、https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources を参照してください。 |
|
| kind はこのオブジェクトが表す REST リソースを表す文字列の値です。サーバーはクライアントが要求を送信するエンドポイントからこれを推測できることがあります。これを更新することはできません。CamelCase を使用します。詳細は、https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds を参照してください。 |
| 標準のオブジェクトメタデータ。詳細は https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata を参照してください。 | |
|
| Webhook は、Webhook と影響を受けるリソースおよび操作のリストです。 |
|
| MutatingWebhook は、アドミッション Webhook と、それが適用されるリソースと操作について説明しています。 |
4.1.1. .webhooks
- 説明
- Webhook は、Webhook と影響を受けるリソースおよび操作のリストです。
- タイプ
-
array
4.1.2. .webhooks[]
- 説明
- MutatingWebhook は、アドミッション Webhook と、それが適用されるリソースと操作について説明しています。
- タイプ
-
object
- 必須
-
name
-
clientConfig
-
sideEffects
-
admissionReviewVersions
-
プロパティー | タイプ | 説明 |
---|---|---|
|
|
AdmissionReviewVersions は、Webhook が期待する優先 |
|
| WebhookClientConfig には、Webhook との TLS 接続を確立するための情報が含まれています |
|
| FailurePolicy は、アドミッションエンドポイントからの認識されないエラーの処理方法を定義します。許可される値は Ignore または Fail です。デフォルトは失敗です。
使用可能な列挙値: - |
|
| MatchConditions は、この Webhook にリクエストを送信するために満たす必要がある条件のリストです。matchConditions は、ルール、namespaceSelector、および objectSelector ですでに一致しているリクエストをフィルター処理します。matchConditions の空のリストは、すべてのリクエストに一致します。最大 64 個の一致条件が使用できます。 完全に一致するロジックは 1 です (順番)。いずれかの matchCondition が FALSE と評価された場合、Webhook はスキップされます。2.すべての matchConditions が TRUE と評価された場合、Webhook が呼び出されます。3.いずれかの matchCondition がエラーと評価された場合 (ただし、どれも FALSE ではない): - FailurePolicy=Fail の場合、リクエストは拒否されます。- FailurePolicy=Ignore の場合、エラーは無視され、Webhook はスキップされます。 これはアルファ機能であり、AdmissionWebhookMatchConditions フィーチャーゲートによって管理されます。 |
|
| MatchCondition は、リクエストが Webhook に送信されるために満たされる必要がある条件を表します。 |
|
| matchPolicy は、ルールリストを使用して着信要求を照合する方法を定義します。許可される値は正確または同等です。
- 完全: 指定されたルールに完全に一致する場合にのみ、要求に一致します。例えば、デプロイメントが apps/v1、apps/v1beta1、extensions/v1beta1 を通して変更できるのに、rule が
- 同等: 別の API グループまたはバージョンを介してでも、ルールにリストされているリソースを変更する場合は、リクエストに一致します。例えば、deployments が apps/v1、apps/v1beta1、extensions/v1beta1 を介して変更可能で、rules が デフォルトは同等
使用可能な列挙値: - |
|
| アドミッション Webhook の名前。名前は完全修飾する必要があります。たとえば、imagepolicy.kubernetes.io です。ここで、imagepolicy は Webhook の名前であり、kubernetes.io は組織の名前です。必須。 |
| 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 は、オブジェクトに一致するラベルがあるかどうかに基づいて、Webhook を実行するかどうかを決定します。objectSelector は、Webhook に送信される oldObject と newObject の両方に対して評価され、いずれかのオブジェクトがセレクターと一致する場合に一致すると見なされます。null オブジェクト (create の場合は oldObject、delete の場合は newObject) またはラベルを持つことができないオブジェクト (DeploymentRollback または PodProxyOptions オブジェクトなど) は一致するとは見なされません。エンドユーザーはラベルを設定することでアドミッション Webhook をスキップできるため、Webhook がオプトインの場合にのみオブジェクトセレクターを使用してください。デフォルトは空の LabelSelector で、すべてに一致します。 | |
|
| reinvocationPolicy は、単一のアドミッション評価の一部として、この Webhook を複数回呼び出す必要があるかどうかを示します。許可される値は Never と IfNeeded です。 決して:Webhook は 1 回の入場評価で 2 回以上呼び出されることはありません。 IfNeeded: 最初の Webhook 呼び出しの後に、許可されているオブジェクトが他の許可プラグインによって変更された場合、許可評価の一部として Webhook が少なくとも 1 回追加で呼び出されます。このオプションを指定する Webhook はべき等であり、以前に許可したオブジェクトを処理できる 必要 があります。注:*追加の呼び出しの数は、正確に 1 つであるとは限りません。*追加の呼び出しによってオブジェクトがさらに変更された場合、Webhook が再度呼び出されることは保証されません。*このオプションを使用する Webhook は、追加の呼び出しの数を最小限に抑えるために並べ替えられる場合があります。*すべての変更が完了したことが保証された後でオブジェクトを検証するには、代わりに検証アドミッション Webhook を使用します。 デフォルトはなしです。
使用可能な列挙値: - |
|
| ルールは、Webhook が気にするリソース/サブリソースに対する操作を記述します。Webhook は、操作が いずれかの ルールに一致する場合、その操作を考慮します。ただし、ValidatingAdmissionWebhooks と MutatingAdmissionWebhooks が、プラグインを完全に無効にしないと回復できない状態にクラスターを置くことを防ぐために、ValidatingAdmissionWebhooks と MutatingAdmissionWebhook は、ValidatingWebhookConfiguration オブジェクトと MutatingWebhookConfiguration オブジェクトの認可要求で呼び出されることはありません。 |
|
| RuleWithOperations は、操作とリソースのタプルです。すべてのタプル拡張が有効であることを確認することを推奨します。 |
|
| SideEffects は、この Webhook に副作用があるかどうかを示します。許容される値は、None、NoneOnDryRun です (v1beta1 を介して作成された Webhook は、Some または Unknown を指定する場合もあります)。副作用のある Webhook は、調整システムを実装する必要があります。これは、リクエストがアドミッションチェーンの将来のステップで拒否される可能性があるため、副作用を元に戻す必要があるためです。dryRun 属性を持つリクエストは、sideEffects==Unknown または Some の Webhook と一致する場合に自動拒否されます。
使用可能な列挙値: - |
|
| TimeoutSeconds は、この Webhook のタイムアウトを指定します。タイムアウトが経過すると、Webhook 呼び出しは無視されるか、失敗ポリシーに基づいて API 呼び出しが失敗します。タイムアウト値は 1〜30 秒である必要があります。デフォルトは 10 秒です。 |
4.1.3. .webhooks[].clientConfig
- 説明
- WebhookClientConfig には、Webhook との TLS 接続を確立するための情報が含まれています
- タイプ
-
object
プロパティー | タイプ | 説明 |
---|---|---|
|
|
|
|
| ServiceReference は、Service.legacy.k8s.io への参照を保持します |
|
|
この Webhook を呼び出す必要がある可能性のある apiserver を実行するすべてのホストでこの Webhook を実行するように細心の注意を払わない限り、 スキームは https である必要があります。URL は https://で始まる必要があります。 パスはオプションであり、存在する場合は、URL で許可される任意の文字列にすることができます。パスを使用して、クラスター識別子などの任意の文字列を Webhook に渡すことができます。 ユーザーまたは基本認証 (user:password @ など) を使用することは許可されていません。フラグメント ("#…") とクエリーパラメーター ("?…") も許可されていません。 |
4.1.4. .webhooks[].clientConfig.service
- 説明
- ServiceReference は、Service.legacy.k8s.io への参照を保持します
- タイプ
-
object
- 必須
-
namespace
-
name
-
プロパティー | タイプ | 説明 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
指定されている場合、Webhook をホストしているサービスのポート。下位互換性のために、デフォルトは 443 です。 |
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 は、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 はこの一致条件の識別子であり、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 は、リソースが属する API グループです。'' はすべてのグループです。もしも '' が存在する場合、スライスの長さは 1 でなければなりません。必須。 |
|
| APIVersions は、リソースが属する API バージョンです。'' はすべてのバージョンです。もしも '' が存在する場合、スライスの長さは 1 でなければなりません。必須。 |
|
| 操作は、アドミッションフックが気にする操作です - これらすべての操作および追加される将来のアドミッション操作に対して、CREATE、UPDATE、DELETE、CONNECT、または*。'*' が存在する場合、スライスの長さは 1 でなければなりません。必須。 |
|
| リソースは、このルールが適用されるリソースのリストです。 例:Pod は Pod を意味します。pods/log は、Pod のログサブリソースを意味します。' ' はすべてのリソースを意味しますが、サブリソースは意味しません。'pods/ ' は、Pod のすべてのサブリソースを意味します。' /scale' は、すべてのスケールサブリソースを意味します。/*は、すべてのリソースとそのサブリソースを意味します。 ワイルドカードが存在する場合、検証ルールはリソースが互いに重複しないことを保証します。 囲んでいるオブジェクトによっては、サブリソースが許可されない場合があります。必須。 |
|
| scope は、このルールのスコープを指定します。有効な値は、Cluster、Namespaced、およびクラスターとは、クラスタースコープのリソースのみがこのルールに一致することを意味します。名前空間 API オブジェクトはクラスタースコープです。名前空間は、名前空間付きのリソースのみがこのルールに一致することを意味します。は、スコープの制限がないことを意味します。サブリソースは、親リソースのスコープと一致します。デフォルトは "*" です。 |