|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
|
这是尚未发布的文档。 Admission Controller 1.34-dev. |
ValidatingAdmissionPolicy 迁移
从 Kubernetes v1.26 开始,https://kubernetes.io/docs/reference/access-authn-authz/validating-admission-policy/[ValidatingAdmissionPolicy] 提供了一种在 Kubernetes 中编写自定义准入策略的方法。这些策略是使用 通用表达语言 (CEL) 编写的,并扩展了一些 Kubernetes 特定扩展。 ValidatingAdmissionPolicy 在 Kubernetes v1.30 中进入稳定状态。
SUSE Security Admission Controller 提供了一个 CEL 策略,能够在不进行任何修改的情况下运行 Kubernetes VAP 策略。 您可以在 本节 的 Admission Controller 文档中阅读有关 CEL 策略的更多信息。 本段 解释了使用 Admission Controller 运行 VAP 策略的好处。
本指南解释了如何使用 kwctl 工具将 VAP 策略迁移到 Admission Controller。
迁移步骤
|
您必须使用 |
给定一个包含此 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
|
该命令警告用户关于使用
建议使用特定版本以避免破坏性更改。 您可以使用
|