0부터 시작하는 TEKTON 공부 - PipelineRun generateName

Jaehong Lee·2023년 4월 21일
2
post-thumbnail

1. PipelineRun generateName

PipelineRun은 Pipeline을 오직 한 번 실행시킬 수 있다. 이미 실행한 PipelineRun을 다시 실행할 수 없으며, Pipeline을 다시 실행하고 싶으면, 새로운 PipelineRun을 만들어야 한다

  • 만약 동일한 PipelineRun 매니페스트 파일 내용을 사용하고 싶다면, PipelineRun metadata의 Name을 바꿔서 새로운 PipelineRun을 배포해야 한다

허나 사용자의 Push가 일어날 때마다 Pipeline을 실행해야 할 경우, 매번 이름을 수동으로 바꿔주는 것은 불편한 일이다. 따라서 PipelineRun을 생성할 때마다 자동으로 이름을 생성해주는 generateName 옵션을 사용해야 한다

apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
  generateName: pipelinerunexample-
spec:
  pipelineRef:
    name: pipelineforexample
  params:
    - name: string_from_pprun
      value: "this is from pipelinerun2 string"

    - name: array_from_pprun
      value:
        - "this is array1 from ppr"
        - "this is array2 from ppr"
  • 위와 같이 generateName 옵션을 사용하면, 생성할 때마다 이름 뒤에 랜덤한 값이 자동으로 붙여진다. 따라서 동일한 PipelineRun 매니페스트 파일로 다수의 PipelineRun을 배포할 수 있다
  • 다수의 PipelineRun을 배포하는 것은, 동일한 PipelineRun 매니페스트 파일로 Pipeline을 여러번 실행할 수 있다는 것이다

2. cannot use generate name with apply

주의할 점! generateName을 사용하면, PipelineRun 배포 시 apply가 아닌 create를 사용해야 한다

[ec2-user@ip-100-0-1-19 pprt]$ cat pr.yaml
apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
  generateName: pipelinerunexample
spec:
  pipelineRef:
    name: pipelineforexample
  params:
    - name: string_from_pprun
      value: "this is from pipelinerun2 string"

    - name: array_from_pprun
      value:
        - "this is array1 from ppr"
        - "this is array2 from ppr"
[ec2-user@ip-100-0-1-19 pprt]$ k apply -f pr.yaml
error: from pipelinerunexample: cannot use generate name with apply
  • generateName으로 이름을 설정한 PipelineRun을 apply로 배포하려고 하면 오류가 발생한다. 그 이유를 알아보자
명령어createapplyreplace
리소스 존재 x생성생성오류
리소스 존재 o오류업데이트리소스 삭제 후 새로 생성
  • kubectl apply는 리소스 생성 후 리소스 수정이 가능하지만, create는 리소스 수정이 불가능하다
  • apply 사용 시, 해당 리소스가 존재하는지 확인하는 작업을 먼저 수행한다. 리소스가 없다면 생성하고, 리소스가 있다면 변경된 내용을 적용한다
kubectl create -f pr.yaml
  • kubectl apply는 create와 modify가 합쳐진 것이다. apply를 사용하게 되면, 생성이나 수정 작업 전에 해당 리소스가 존재하는지 확인하는 작업을 수행한다. 허나 generateName을 사용하면, 해당 리소스의 이름이 생성되지 않았으므로 리소스 조회 작업 수행에 문제가 생긴다. 따라서 create를 사용해야 한다

  • PipelineRun 이름 뒤에 랜덤한 값이 생성된 것을 확인할 수 있다. 이를 통해 동일한 PipelineRun 매니페스트 파일을 이용하여 Pipeline을 여러번 실행할 수 있다
profile
멋진 엔지니어가 될 때까지

0개의 댓글