3.8.2. 使用自定义 SCC 和自定义服务帐户运行管道运行和任务
使用与默认管道 服务帐户
关联的 pipelines-scc
安全性上下文约束(SCC)时,管道运行和任务运行 pod 可能会面临超时问题。这是因为在默认的 pipelines-scc
SCC 中,fsGroup.type
参数设置为 MustRunAs
。
有关 pod 超时的更多信息,请参阅 BZ#779。
为避免 pod 超时,您可以创建一个自定义 SCC,并将 fsGroup.type
参数设置为 RunAsAny
,并将它与自定义服务帐户关联。
作为最佳实践,使用自定义 SCC 和自定义服务帐户来运行管道运行和任务运行。这种方法具有更大的灵活性,在升级过程中修改默认值时不会中断运行。
流程
定义自定义 SCC,并将
fsGroup.type
参数设置为RunAsAny
:示例:自定义 SCC
apiVersion: security.openshift.io/v1 kind: SecurityContextConstraints metadata: annotations: kubernetes.io/description: my-scc is a close replica of anyuid scc. pipelines-scc has fsGroup - RunAsAny. name: my-scc allowHostDirVolumePlugin: false allowHostIPC: false allowHostNetwork: false allowHostPID: false allowHostPorts: false allowPrivilegeEscalation: true allowPrivilegedContainer: false allowedCapabilities: null defaultAddCapabilities: null fsGroup: type: RunAsAny groups: - system:cluster-admins priority: 10 readOnlyRootFilesystem: false requiredDropCapabilities: - MKNOD runAsUser: type: RunAsAny seLinuxContext: type: MustRunAs supplementalGroups: type: RunAsAny volumes: - configMap - downwardAPI - emptyDir - persistentVolumeClaim - projected - secret
创建自定义 SCC:
示例:创建
my-scc
SCC$ oc create -f my-scc.yaml
创建自定义服务帐户:
示例:创建一个
fsgroup-runasany
服务帐户$ oc create serviceaccount fsgroup-runasany
将自定义 SCC 与自定义服务帐户关联:
示例:
将 my-scc
SCC 与fsgroup-runasany
服务帐户关联$ oc adm policy add-scc-to-user my-scc -z fsgroup-runasany
如果要将自定义服务帐户用于特权任务,您可以通过运行以下命令将
特权
SCC 与自定义服务帐户关联:示例:将
特权
SCC 与fsgroup-runasany
服务帐户关联$ oc adm policy add-scc-to-user privileged -z fsgroup-runasany
在管道运行和任务运行中使用自定义服务帐户:
示例:Pipeline 使用
fsgroup-runasany
自定义服务帐户运行 YAMLapiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: name: <pipeline-run-name> spec: pipelineRef: name: <pipeline-cluster-task-name> serviceAccountName: 'fsgroup-runasany'
示例:任务使用
fsgroup-runasany
自定义服务帐户运行 YAMLapiVersion: tekton.dev/v1beta1 kind: TaskRun metadata: name: <task-run-name> spec: taskRef: name: <cluster-task-name> serviceAccountName: 'fsgroup-runasany'