|
この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。 |
|
これは未公開の文書です Admission Controller 1.34-dev. |
ValidatingAdmissionPolicyマイグレーション
Kubernetes v1.26以降、https://kubernetes.io/docs/reference/access-authn-authz/validating-admission-policy/[ValidatingAdmissionPolicy]は、KubernetesでカスタムAdmissionポリシーを記述する方法を提供します。ポリシーは、https://cel.dev/[Common Expression Language (CEL)]を使用して記述され、いくつかのhttps://kubernetes.io/docs/reference/using-api/cel/[Kubernetes特有の拡張]が追加されています。 ValidatingAdmissionPolicyはKubernetes v1.30で安定版となりました。
SUSE Security Admission Controllerは、変更なしでKubernetes VAPポリシーを実行できるCELポリシーを提供します。 CELポリシーに関する詳細は、Admission Controllerのドキュメント内のこのセクションでご覧いただけます。 この段落は、Admission Controllerを使用してVAPポリシーを実行する利点を説明します。
このガイドでは、`kwctl`ツールを使用してVAPポリシーをAdmission Controllerに移行する方法を説明します。
移行手順
|
このガイドに従うには、`kwctl`のバージョン1.14.0以上を使用する必要があります。 |
次のYAML定義を含むファイルが与えられた場合、ValidatingAdmissionPolicy:
`ValidatingAdmissionPolicy`定義
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingAdmissionPolicy
metadata:
name: "force-liveness-probe"
spec:
failurePolicy: Fail
variables:
- name: containers_without_liveness_probe
expression: |
object.spec.template.spec.containers.filter(c, !has(c.livenessProbe)).map(c, c.name)
matchConstraints:
resourceRules:
- apiGroups: ["apps"]
apiVersions: ["v1"]
operations: ["CREATE", "UPDATE"]
resources: ["deployments"]
validations:
- expression: |
size(variables.containers_without_liveness_probe) == 0
messageExpression: |
'These containers are missing a liveness probe: ' + variables.containers_without_liveness_probe.join(' ')
reason: Invalid
および`ValidatingAdmissionPolicyBinding`リソースを含むファイルがある場合:
`ValidatingAdmissionPolicyBinding`定義
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingAdmissionPolicyBinding
metadata:
name: "kw-scaffold-demo"
spec:
policyName: "force-liveness-probe"
validationActions: [Deny]
matchResources:
namespaceSelector:
matchLabels:
docs.kubewarden.io/vap-migration: enabled
次の手順に従って、ポリシーをAdmission Controllerに移行できます:
ポリシー移行のための`kwctl`コマンド
$ kwctl scaffold vap \
-p vap.yml \
-b vap-binding.yml
コマンドは、次のような出力を生成します:
マイグレーションからの出力
apiVersion: policies.kubewarden.io/v1
kind: ClusterAdmissionPolicy
metadata:
name: kw-scaffold-demo
spec:
module: ghcr.io/kubewarden/policies/cel-policy:latest
settings:
failurePolicy: Fail
variables:
- expression: |
object.spec.template.spec.containers.filter(c, !has(c.livenessProbe)).map(c, c.name)
name: containers_without_liveness_probe
validations:
- expression: |
size(variables.containers_without_liveness_probe) == 0
messageExpression: |
'These containers are missing a liveness probe: ' + variables.containers_without_liveness_probe.join(' ')
reason: Invalid
rules:
- apiGroups:
- apps
apiVersions:
- v1
resources:
- deployments
operations:
- CREATE
- UPDATE
mutating: false
namespaceSelector:
matchLabels:
docs.kubewarden.io/vap-migration: enabled
|
このコマンドは、CELポリシーの`latest`バージョンの使用についてユーザーに警告します。
破壊的な変更を避けるために、特定のバージョンを使用することをお勧めします。 このように`--cel-policy`フラグを使用してこれを行うことができます。
|