15.5. 配置工作负载以要求特定的 SCC
您可以将工作负载配置为需要特定的安全性上下文约束 (SCC)。当您要将特定 SCC 固定到工作负载,或者要防止集群中被另一个 SCC 抢占时,这非常有用。
如果要求特定的 SCC,在工作负载上设置 openshift.io/required-scc
注解。您可以在可设置 pod 清单模板的任何资源上设置此注解,如部署或守护进程集。
SCC 必须存在于集群中,且必须适用于工作负载,否则 pod 准入会失败。如果用户创建了 Pod,或 Pod 的服务帐户的具有 pod 命名空间中的 SCC 的 use
权限,则 SCC 被视为适用于工作负载。
不要更改 live pod 清单中的 openshift.io/required-scc
注解,因为这样做会导致 pod 准入失败。要更改所需的 SCC,请更新底层 Pod 模板中的注解,这会导致 pod 被删除并重新创建。
先决条件
- 集群中必须存在 SCC。
流程
为部署创建 YAML 文件,并通过设置
openshift.io/required-scc
注解来指定所需的 SCC:deployment.yaml
示例apiVersion: config.openshift.io/v1 kind: Deployment apiVersion: apps/v1 spec: # ... template: metadata: annotations: openshift.io/required-scc: "my-scc" 1 # ...
- 1
- 指定需要的 SCC 的名称。
运行以下命令来创建资源:
$ oc create -f deployment.yaml
验证
验证部署使用指定的 SCC:
运行以下命令,查看 pod 的
openshift.io/scc
注解的值:$ oc get pod <pod_name> -o jsonpath='{.metadata.annotations.openshift\.io\/scc}{"\n"}' 1
- 1
- 将
<pod_name>
替换为部署 pod 的名称。
检查输出,并确认显示的 SCC 与您在部署中定义的 SCC 匹配:
输出示例
my-scc