第6章 ValidatingAdmissionPolicyBinding [admissionregistration.k8s.io/v1]
- 説明
ValidatingAdmissionPolicyBinding は、ValidatingAdmissionPolicy をパラメーター化されたリソースにバインドします。ValidatingAdmissionPolicyBinding とパラメーター CRD の組み合わせにより、クラスター管理者がクラスターのポリシーを設定する方法が定義されます。
特定のアドミッションリクエストに対して、各バインディングによりポリシーが N 回評価されます。N は、パラメーターを使用しないポリシー/バインディングの場合は 1、それ以外の場合はバインディングによって選択されるパラメーターの数です。
ポリシーの CEL 式では、計算された CEL コストが CEL 最大予算を下回る必要があります。ポリシーの各評価には、独立した CEL コスト予算が与えられます。ポリシー、バインディング、またはパラメーターを追加/削除しても、特定の (ポリシー、バインディング、パラメーターの) 組み合わせがそれぞれの CEL 予算内に収まるかどうかには影響しません。
- 型
-
object
6.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 を参照してください。 | |
|
| ValidatingAdmissionPolicyBindingSpec は、ValidatingAdmissionPolicyBinding の仕様です。 |
6.1.1. .spec
- 説明
- ValidatingAdmissionPolicyBindingSpec は、ValidatingAdmissionPolicyBinding の仕様です。
- 型
-
object
プロパティー | 型 | 説明 |
---|---|---|
|
| MatchResources は、一致基準を満たしているかどうかに基づいて、オブジェクトに対してアドミッションコントロールポリシーを実行するかどうかを決定します。除外ルールは包含ルールよりも優先されます (リソースが両方に一致する場合は除外されます)。 |
|
| ParamRef は、ポリシーバインディングによって適用されるルールの式への入力として使用するパラメーターを検索する方法を表します。 |
|
| PolicyName は、ValidatingAdmissionPolicyBinding のバインド先の ValidatingAdmissionPolicy 名を参照します。参照されるリソースが存在しない場合、このバインディングは無効とみなされ、無視されます。必須です。 |
|
| validationActions は、参照される ValidatingAdmissionPolicy の検証を適用する方法を宣言します。検証が false と評価された場合、これらのアクションに従って、検証が常に適用されます。 ValidatingAdmissionPolicy の FailurePolicy によって定義された失敗は、FailurePolicy が Fail に設定されている場合にのみ、これらのアクションに従って適用されます。それ以外の場合、失敗は無視されます。これには、コンパイルエラー、ランタイムエラー、ポリシーの誤った設定が含まれます。 validationActions はアクション値のセットとして宣言されます。順序は関係ありません。validationActions に同じアクションを重複して含めることはできません。 サポートされているアクション値は次のとおりです。 "Deny" を指定すると、検証が失敗した場合にリクエストが拒否されます。 "Warn" を指定すると、警告コード 299 とともに、HTTP 警告ヘッダーで検証の失敗がリクエストクライアントに報告されます。許可されたアドミッションレスポンスと拒否されたアドミッションレスポンスの両方に対して警告を送信できます。
"Audit" を指定すると、リクエストに対して公開される監査イベントに検証の失敗が含まれます。監査イベントには、 クライアントは、認識されない値を無視して追加の値を処理することを想定する必要があります。 "Deny" と "Warn" を一緒に使用することはできません。API レスポンスボディーと HTTP 警告ヘッダーで検証の失敗が余計に重複するためです。 必須。 |
6.1.2. .spec.matchResources
- 説明
- MatchResources は、一致基準を満たしているかどうかに基づいて、オブジェクトに対してアドミッションコントロールポリシーを実行するかどうかを決定します。除外ルールは包含ルールよりも優先されます (リソースが両方に一致する場合は除外されます)。
- 型
-
object
プロパティー | 型 | 説明 |
---|---|---|
|
| ExcludeResourceRules は、ValidatingAdmissionPolicy で考慮しないリソース/サブリソースに対する操作を表します。除外ルールは包含ルールよりも優先されます (リソースが両方に一致する場合は除外されます)。 |
|
| NamedRuleWithOperations は、ResourceNames を持つ操作とリソースのタプルです。 |
|
| matchPolicy は、"MatchResources" リストを使用して受信リクエストを照合する方法を定義します。許可される値は "Exact" または "Equivalent" です。
- Exact: 指定されたルールにリクエストが完全に一致する場合にのみ、リクエストを一致させます。たとえば、apps/v1、apps/v1beta1、extensions/v1beta1 を介してデプロイメントを変更できても、"rules" に含まれているのが
- Equivalent: 別の API グループまたはバージョンを介してでも、ルールにリストされているリソースを変更する場合に、リクエストを一致させます。たとえば、apps/v1、apps/v1beta1、extensions/v1beta1 を介してデプロイメントを変更でき、"rules" に含まれているのが デフォルトは "Equivalent" です。
使用可能な列挙値: - |
| NamespaceSelector は、オブジェクトの namespace がセレクターと一致するかどうかに基づいて、オブジェクトに対してアドミッションコントロールポリシーを実行するかどうかを決定します。オブジェクト自体が namespace である場合、object.metadata.labels に対して照合が実行されます。オブジェクトがクラスタースコープの別のリソースである場合、ポリシーはスキップされません。 たとえば、"0" または "1" の "runlevel" に関連付けられていない namespace のオブジェクトに対して Webhook を実行するには、"namespaceSelector": { "matchExpressions": [ { "key": "runlevel", "operator": "NotIn", "values": [ "0", "1" ] } ] } のようにセレクターを設定します。 代わりに、"prod" または "staging" の "environment" に関連付けられている namespace のオブジェクトに対してのみポリシーを実行する場合は、"namespaceSelector": { "matchExpressions": [ { "key": "environment", "operator": "In", "values": [ "prod", "staging" ] } ] } のようにセレクターを設定します。 ラベルセレクターのその他の例は、https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ を参照してください。 デフォルトは空の LabelSelector で、すべてに一致します。 | |
| ObjectSelector は、オブジェクトに一致するラベルがあるかどうかに基づいて検証を実行するかどうかを決定します。objectSelector は、cel 検証に送信される oldObject と newObject の両方に対して評価され、いずれかのオブジェクトがセレクターに一致する場合、一致すると見なされます。null オブジェクト (create の場合は oldObject、delete の場合は newObject) またはラベルを持つことができないオブジェクト (DeploymentRollback または PodProxyOptions オブジェクトなど) は一致するとは見なされません。エンドユーザーはラベルを設定することでアドミッション Webhook をスキップできるため、Webhook がオプトインの場合にのみオブジェクトセレクターを使用してください。デフォルトは空の LabelSelector で、すべてに一致します。 | |
|
| ResourceRules は、ValidatingAdmissionPolicy で照合する、リソース/サブリソースに対する操作を表します。ポリシーは、操作が いずれか のルールに一致する場合、その操作を考慮します。 |
|
| NamedRuleWithOperations は、ResourceNames を持つ操作とリソースのタプルです。 |
6.1.3. .spec.matchResources.excludeResourceRules
- 説明
- ExcludeResourceRules は、ValidatingAdmissionPolicy で考慮しないリソース/サブリソースに対する操作を表します。除外ルールは包含ルールよりも優先されます (リソースが両方に一致する場合は除外されます)。
- 型
-
array
6.1.4. .spec.matchResources.excludeResourceRules[]
- 説明
- NamedRuleWithOperations は、ResourceNames を持つ操作とリソースのタプルです。
- 型
-
object
プロパティー | 型 | 説明 |
---|---|---|
|
| APIGroups は、リソースが属する API グループです。'' はすべてのグループです。もしも '' が存在する場合、スライスの長さは 1 でなければなりません。必須。 |
|
| APIVersions は、リソースが属する API バージョンです。'' はすべてのバージョンです。もしも '' が存在する場合、スライスの長さは 1 でなければなりません。必須。 |
|
| 操作は、アドミッションフックが気にする操作です - これらすべての操作および追加される将来のアドミッション操作に対して、CREATE、UPDATE、DELETE、CONNECT、または*。'*' が存在する場合、スライスの長さは 1 でなければなりません。必須。 |
|
| ResourceNames は、ルールが適用される名前のオプションのホワイトリストです。空のセットは、すべてが許可されていることを意味します。 |
|
| リソースは、このルールが適用されるリソースのリストです。 例: 'Pod' は Pod を意味します。'pods/log' は、Pod のログサブリソースを意味します。'' はすべてのリソースを意味しますが、サブリソースは意味しません。'pods/' は、Pod のすべてのサブリソースを意味します。'/scale' は、すべてのスケールサブリソースを意味します。'/*' は、すべてのリソースとそのサブリソースを意味します。 ワイルドカードが存在する場合、検証ルールはリソースが互いに重複しないことを保証します。 囲んでいるオブジェクトによっては、サブリソースが許可されない場合があります。必須。 |
|
| scope は、このルールのスコープを指定します。有効な値は、"Cluster"、"Namespaced"、および "" "クラスター" とは、クラスタースコープのリソースのみがこのルールに一致することを意味します。名前空間 API オブジェクトはクラスタースコープです。"Namespaced" は、名前空間付きのリソースのみがこのルールに一致することを意味します。"" は、スコープの制限がないことを意味します。サブリソースは、親リソースのスコープと一致します。デフォルトは "*" です。 |
6.1.5. .spec.matchResources.resourceRules
- 説明
- ResourceRules は、ValidatingAdmissionPolicy で照合する、リソース/サブリソースに対する操作を表します。ポリシーは、操作が いずれか のルールに一致する場合、その操作を考慮します。
- 型
-
array
6.1.6. .spec.matchResources.resourceRules[]
- 説明
- NamedRuleWithOperations は、ResourceNames を持つ操作とリソースのタプルです。
- 型
-
object
プロパティー | 型 | 説明 |
---|---|---|
|
| APIGroups は、リソースが属する API グループです。'' はすべてのグループです。もしも '' が存在する場合、スライスの長さは 1 でなければなりません。必須。 |
|
| APIVersions は、リソースが属する API バージョンです。'' はすべてのバージョンです。もしも '' が存在する場合、スライスの長さは 1 でなければなりません。必須。 |
|
| 操作は、アドミッションフックが気にする操作です - これらすべての操作および追加される将来のアドミッション操作に対して、CREATE、UPDATE、DELETE、CONNECT、または*。'*' が存在する場合、スライスの長さは 1 でなければなりません。必須。 |
|
| ResourceNames は、ルールが適用される名前のオプションのホワイトリストです。空のセットは、すべてが許可されていることを意味します。 |
|
| リソースは、このルールが適用されるリソースのリストです。 例: 'Pod' は Pod を意味します。'pods/log' は、Pod のログサブリソースを意味します。'' はすべてのリソースを意味しますが、サブリソースは意味しません。'pods/' は、Pod のすべてのサブリソースを意味します。'/scale' は、すべてのスケールサブリソースを意味します。'/*' は、すべてのリソースとそのサブリソースを意味します。 ワイルドカードが存在する場合、検証ルールはリソースが互いに重複しないことを保証します。 囲んでいるオブジェクトによっては、サブリソースが許可されない場合があります。必須。 |
|
| scope は、このルールのスコープを指定します。有効な値は、"Cluster"、"Namespaced"、および "" "クラスター" とは、クラスタースコープのリソースのみがこのルールに一致することを意味します。名前空間 API オブジェクトはクラスタースコープです。"Namespaced" は、名前空間付きのリソースのみがこのルールに一致することを意味します。"" は、スコープの制限がないことを意味します。サブリソースは、親リソースのスコープと一致します。デフォルトは "*" です。 |
6.1.7. .spec.paramRef
- 説明
- ParamRef は、ポリシーバインディングによって適用されるルールの式への入力として使用するパラメーターを検索する方法を表します。
- 型
-
object
プロパティー | 型 | 説明 |
---|---|---|
|
| name は、参照されるリソースの名前です。
|
|
|
namespace は、参照されるリソースの namespace です。パラメーターの検索を特定の namespace に制限できます。
ポリシーで namespace スコープの
-
- |
|
|
許可される値は 必須 |
| selector を使用すると、ラベルに基づいて複数のパラメーターオブジェクトを一致させることができます。ParamKind のすべてのリソースに一致させるには、selector: {} を指定します。 複数のパラメーターが見つかった場合、それらはすべてポリシー式で評価され、結果が AND 演算されます。
|