3.3. 사용자 정의 SCC 및 사용자 정의 서비스 계정을 사용하여 파이프라인 실행 및 작업 실행
기본 파이프라인 서비스 계정과 연결된
SCC(보안 컨텍스트 제약 조건)를 사용하는 경우 파이프라인 실행 및 작업 실행 Pod가 시간 초과에 직면할 수 있습니다. 이는 기본 pipelines
-sccpipelines-scc
SCC에서 fsGroup.type
매개변수가 MustRunAs
로 설정되어 있기 때문에 발생합니다.
Pod 시간 초과에 대한 자세한 내용은 BZ#1995779 를 참조하십시오.
Pod 시간 초과를 방지하려면 fsGroup.type
매개변수를 RunAsAny
로 설정하여 사용자 지정 SCC를 생성하고 사용자 지정 서비스 계정과 연결할 수 있습니다.
가장 좋은 방법은 파이프라인 실행 및 작업 실행을 위해 사용자 정의 SCC 및 사용자 정의 서비스 계정을 사용합니다. 이 접근 방식을 사용하면 유연성이 향상되고 업그레이드 중에 기본값이 수정될 때 실행이 중단되지 않습니다.
프로세스
fsGroup.type
매개변수를RunAsAny
로 설정하여 사용자 지정 SCC를 정의합니다.예: 사용자 정의 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
파이프라인 실행 및 작업 실행에서 사용자 정의 서비스 계정을 사용합니다.
예: 파이프라인은
fsgroup-runasany
사용자 지정 서비스 계정으로 YAML을 실행합니다.apiVersion: tekton.dev/v1 kind: PipelineRun metadata: name: <pipeline-run-name> spec: pipelineRef: name: <pipeline-cluster-task-name> taskRunTemplate: serviceAccountName: 'fsgroup-runasany'
예: 작업에서는
fsgroup-runasany
사용자 지정 서비스 계정으로 YAML을 실행합니다.apiVersion: tekton.dev/v1 kind: TaskRun metadata: name: <task-run-name> spec: taskRef: name: <cluster-task-name> taskRunTemplate: serviceAccountName: 'fsgroup-runasany'