|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
|
这是尚未发布的文档。 Admission Controller 1.34-dev. |
变更策略
变更策略接收一个对象请求并将其重建(变更)为一个新请求。这根据策略设置中预定义的值执行。请求通过Kubernetes API进行,可能会被其他策略评估。
要允许变更请求行为,请将`ClusterAdmissionPolicy.mutating`字段设置为`true`。
然而,如果将`ClusterAdmissionPolicy.mutating`字段设置为`false`,变更请求将被拒绝。
为什么变更策略可能是危险的
示例
您可以看到变更策略的实际应用。创建以下`ClusterAdmissionPolicy`,并将`mutating`字段设置为`true`:
# Command
kubectl apply -f - <<EOF
apiVersion: policies.kubewarden.io/v1alpha2
kind: ClusterAdmissionPolicy
metadata:
name: psp-user-group
spec:
module: "registry://ghcr.io/kubewarden/policies/user-group-psp:v0.1.5"
rules:
- apiGroups: [""]
apiVersions: ["v1"]
resources: ["pods"]
operations:
- CREATE
- UPDATE
mutating: true
settings:
run_as_user:
rule: "MustRunAs"
ranges:
- min: 1000
max: 2000
- min: 3000
max: 4000
run_as_group:
rule: "RunAsAny"
supplemental_groups:
rule: "RunAsAny"
EOF
# Output
clusteradmissionpolicy.policies.kubewarden.io/psp-user-group created
您使用https://github.com/kubewarden/user-group-psp-policy[psp-user-group]策略来控制容器中的用户和组,并可以变更请求。在前面的示例中,您设置了`runAsUser`字段,并将其添加到容器`securityContext`部分。
由于`mutating`字段是`true`,以下请求成功:
# Command
kubectl apply -f - <<EOF
apiVersion: v1
kind: Pod
metadata:
name: pause-user-group
spec:
containers:
- name: pause
image: registry.k8s.io/pause
EOF
# Output
pod/pause-user-group created
您可以看到容器的`securityContext`结果:
# Command
kubectl get pods pause-user-group -o jsonpath='{ .spec.containers[].securityContext }'
# Output
{"runAsUser":1000}
现在,通过将字段`mutating`设置为`false`来修改`ClusterAdmissionPolicy`:
# Command
kubectl apply -f - <<EOF
apiVersion: policies.kubewarden.io/v1alpha2
kind: ClusterAdmissionPolicy
metadata:
name: psp-user-group
spec:
module: "registry://ghcr.io/kubewarden/policies/user-group-psp:v0.1.5"
rules:
- apiGroups: [""]
apiVersions: ["v1"]
resources: ["pods"]
operations:
- CREATE
- UPDATE
mutating: false
settings:
run_as_user:
rule: "MustRunAs"
ranges:
- min: 1000
max: 2000
- min: 3000
max: 4000
run_as_group:
rule: "RunAsAny"
supplemental_groups:
rule: "RunAsAny"
EOF
# Output
clusteradmissionpolicy.policies.kubewarden.io/psp-user-group configured
由于`mutating`字段是`false`,以下请求失败:
# Command
kubectl apply -f - <<EOF
apiVersion: v1
kind: Pod
metadata:
name: pause-user-group
spec:
containers:
- name: pause
image: registry.k8s.io/pause
EOF
# Output
Error from server: error when creating ".\\pause-user-group.yaml": admission webhook "psp-user-group.kubewarden.admission" denied the request: Request rejected by policy psp-user-group. The policy attempted to mutate the request, but it is currently configured to not allow mutations.
总之,您可以看到Admission Controller复制了已弃用的 Kubernetes Pod 安全策略(PSP)的相同行为。