1.3.5. Workspace
PipelineResources는 디버그하기 어렵고 범위가 제한되며 Task의 재사용 가능성을 낮추기 때문에 OpenShift Pipelines에서는 PipelineResources 대신 Workspace를 사용할 것을 권장합니다.
Workspace는 런타임 시 Pipeline의 Task에 필요한 공유 스토리지 볼륨을 선언합니다. 볼륨의 실제 위치를 지정하는 대신 Workspace를 사용하여 런타임 시 필요한 파일 시스템 전체 또는 파일 시스템의 일부를 선언할 수 있습니다. TaskRun 또는 PipelineRun에서 해당 Workspace에 마운트된 볼륨의 특정 위치 세부 사항을 제공해야 합니다. 이러한 방식으로 런타임 스토리지 볼륨에서 볼륨 선언을 분리하면 사용자 환경에 종속되지 않으며 유연성 높고 재사용 가능한 Task로 만들 수 있습니다.
다음과 같은 용도로 Workspace를 활용할 수 있습니다.
- Task 입력 및 출력 저장
- Task 간 데이터 공유
- 시크릿에 보관된 자격 증명의 마운트 지점으로 작업 공간 활용
- ConfigMaps에 보관된 구성의 마운트 지점으로 작업 공간 활용
- 조직에서 공유하는 공통 도구의 마운트 지점으로 작업 공간 활용
- 작업 속도를 높이는 빌드 아티팩트 캐시 생성
다음을 사용하여 TaskRun 또는 PipelineRun에서 Workspace를 지정할 수 있습니다.
- 읽기 전용 ConfigMaps 또는 Secret
- 다른 Task와 공유되는 기존 PersistentVolumeClaim
- 제공된 VolumeClaimTemplate의 PersistentVolumeClaim
- TaskRun이 완료되면 삭제되는 emptyDir
다음은 Pipeline에 정의된 대로 build-image
및 apply-manifests
Task에 대한 shared-workspace
Workspace를 선언하는 build-and-deploy
Pipeline의 코드 스니펫 예입니다.
apiVersion: tekton.dev/v1beta1 kind: Pipeline metadata: name: build-and-deploy spec: workspaces: 1 - name: shared-workspace params: ... tasks: 2 - name: build-image taskRef: name: buildah kind: ClusterTask params: - name: TLSVERIFY value: "false" - name: IMAGE value: $(params.IMAGE) workspaces: 3 - name: source 4 workspace: shared-workspace 5 runAfter: - fetch-repository - name: apply-manifests taskRef: name: apply-manifests workspaces: 6 - name: source workspace: shared-workspace runAfter: - build-image ...
- 1
- Pipeline에 정의된 Task 사이에 공유되는 Workspace 목록입니다. Pipeline은 필요한 만큼 Workspace를 정의할 수 있습니다. 예에서는
shared-workspace
라는 Workspace 한 개만 선언됩니다. - 2
- Pipeline에서 사용되는 Task의 정의입니다. 이 스니펫은 공통 Workspace를 공유하는 두 개의 Task,
build-image
와apply-manifest
를 정의합니다. - 3
build-image
Task에 사용되는 Workspace 목록입니다. Task 정의에 필요한 만큼의 Workspace를 포함할 수 있습니다. 하지만 Task에 사용되는 쓰기 가능한 Workspace를 한 개로 제한하는 것이 좋습니다.- 4
- Task에서 사용되는 Workspace를 고유하게 식별하는 이름입니다. 이 Task는
source
라는 Workspace 한 개를 사용합니다. - 5
- Task에서 사용하는 Pipeline Workspace의 이름입니다. 이어서
source
Workspace는shared-workspace
라는 Pipeline Workspace를 사용한다는 점에 주목하십시오. - 6
apply-manifests
Task에 사용되는 Workspace 목록입니다. 이 Task는build-image
Task와source
Workspace를 공유한다는 점에 주목하십시오.
작업 공간을 사용하면 여러 작업에서 데이터를 공유하고 파이프라인의 각 작업을 실행하는 동안 필요한 하나 이상의 볼륨을 지정할 수 있습니다. 영구 볼륨 클레임을 생성하거나 사용자를 대신하여 영구 볼륨 클레임을 생성하는 볼륨 클레임 템플릿을 제공할 수 있습니다.
다음의 build-deploy-api-pipelinerun
PipelineRun 코드 조각에서는 볼륨 클레임 템플릿을 사용하여 build-and-deploy
파이프라인에 사용된 shared-workspace
작업 공간의 스토리지 볼륨을 정의하는 영구 볼륨 클레임을 생성합니다.
apiVersion: tekton.dev/v1beta1 kind: PipelineRun metadata: name: build-deploy-api-pipelinerun spec: pipelineRef: name: build-and-deploy params: ... workspaces: 1 - name: shared-workspace 2 volumeClaimTemplate: 3 spec: accessModes: - ReadWriteOnce resources: requests: storage: 500Mi