0부터 시작하는 TEKTON 공부 - Parameter

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

1. 파라미터 정의

Tekton을 사용하면, 상위 단계에서 하위 단계로 특정 파라미터를 넘겨야할 경우가 생긴다. Tekton의 Params에 대해 알아보자

참조 : https://tekton.dev/docs/pipelines/tasks/#specifying-parameters

넘겨줄 파라미터 정의

  • 넘겨줄 파라미터 정의는 아래와 같이 하위 단계 설정 부분에 해야 한다 ( pipelinerun은 spec 부분, pipeline은 tasks 부분, taskrun은 spec 부분 ). 파라미터 이름 ( name ) 과 값 ( value ) 로 이루어진다

    • Pipeline의 경우, task 하위에 정의한다
    • 파라미터의 값을 사용하여 상위 단게에서 넘겨 받은 파리미터를 하위 단계에 넘겨 줄 수 있다
    • PipelineRun의 경우, spec 하위에 정의한다
  • 파라미터 정의는 task에서는 불가능하다. task는 매개변수를 넘겨받기만 가능하기에 value 를 사용하지 못한다


넘겨 받을 파라미터 정의

  • 넘겨 받을 파라미터는 spec 하위의 params에 정의해야 한다

    • 위와 같이 spec 하위의 params에 정의하면 된다
params: 
  - name: 
    type: 
    description: 
    default:
  • 다음 요소들을 정의해야 한다

    • name : 넘겨 받을 파라미터의 이름 ( 필수 )
    • type : 넘겨 받을 파라미터의 Type ( 필수 아님 )
    • default : 넘겨 받는 값이 없을 때, 해당 파라미터의 기본 값 ( 필수 아님 )
    • description : 파라미터 설명 ( 필수 아님 )
  • default를 사용하면, 넘겨 받는 파라미터 외에 스스로 사용할 파라미터를 정의할 수 있다

    • 위와 같이 이름과 기본 값만으로 지정하면, 해당 파리미터를 설정한 기본 값으로 사용할 수 있다

  • 만약 default를 설정하지 않고 파라미터를 넘겨주지 않았을 때, 위와 같이 오류가 발생하므로 default를 설정해주는 것이 좋다

파라미터 사용

Pipeline과 Task의 Spec에 정의한 workspace / result/ params 와 같은 리소스 변수들은 리눅스 변수처럼 사용한다. 정의한 name이 변수의 이름이며, value는 해당 변수의 값으로 담긴다. 따라서 정의한 리소스를 사용할 때, $name을 통해 해당 리소스 변수의 value를 가져와 사용한다

  • $(변수종류.변수이름) 으로 사용된다
$(params.파라미터이름)
  • 파라미터를 사용할 경우, 위와 같이 $(params.파라미터이름)을 통해 파라미터의 value를 가져올 수 있다

  • 위와 같이 넘겨 받은 파라미터를 사용하여, 하위 단계에 넘겨줄 수 있다

2. 파라미터 Type

Tekton 파라미터 Type

구분stringobjectarray
개념type의 기본 값으로, 하나의 key-value 파라미터를 가진다여러 종류의 파라미터의 묶음파라미터의 배열
type 선언type: stringtype: object , properties에 파라미터 name과 type을 각각 정의type : array
사용“$(params.변수이름)”“$(params.매개변수그룹이름.매개변수이름)”“$(params.배열[ ])”
# string
params: 
  - name: 이름 
    value:# object
params: 
  - name: 이름
    value: 
       key1: value1 
       key2: value2 
# array 
params: 
  - name: 이름 
    value: 
      - 'asd' 
      - 'adasdasd' 
      - 'asfafasfaf2f2'
  • Tekton에서 파라미터 Type은 3 가지가 존재하며, String / Object / Array로 구성된다

String

  • String Type은 파라미터 Type의 기본 값으로, 하나의 Key-Value 형태의 파라미터를 가진다
params: 
  - name: 이름 
    value:
  • 넘겨줄 파라미터 정의에서 위와 같이 파라미터 name과 value를 정의하면 된다
params: 
  - name: 이름
    type: string 
  • 넘겨 받을 파라미터 정의애서 위와 같이 type을 String으로 정의한다
“$(params.파라미터이름)”
  • String 파라미터를 사용할 경우, 위와 같이 파라미터 이름을 지정하면 된다

Object

  • Object Type은 여러 종류의 파리미터들을 묶음이다
# object
params: 
  - name: 이름
    value: 
       key1: value1 
       key2: value2 
  • 넘겨줄 파라미터 정의에서 위와 같이 파라미터 묶음 name과 포함될 파리미터들을 정의하면 된다
params: 
  - name: 이름 
    properties: 
      key1: 
        type: string 
      key2: 
        type: string
  • 넘겨 받을 파리미터 정의에서 위와 같이 properties에 파라미터 묶음에 포함된 파리미터들을 각각 정의해야 한다
"$(params.파라미터묶음이름.파라미터이름)"
  • 사용 시, 파라미터 묶음 이름과 묶음 내부의 파리미터 이름을 지정하면 된다
  • 허나, Object는 alpha & beta 기능이기에 enable-api-fields를 통해 사용 가능한 기능을 alpha나 beta 기능으로 설정해야 한다. enable-api-fields의 기본 값은 stable이므로, Object Type을 사용하지 못한다
    • enable-api-fields은 Tekton Pipeline Controller 설정 중 하나이다. 해당 설정을 변경하여 사용 가능한 기능을 지정할 수 있다

array

  • array Type은 배열이다
params: 
  - name: 이름 
    value: 
      - 'asd' 
      - 'adasdasd' 
      - 'asfafasfaf2f2'
  • 넘겨줄 파라미터 정의에서 위와 같이 다수의 값을 value에 정의하면 된다
params; 
  - name: 이름
    type: array
  • 넘겨 받을 파라미터 정의에서 위와 같이 Type을 array로 지정하면 된다
“$(params.배열이름[*])”
  • 사용 시, 배열처럼 사용하면 된다
profile
멋진 엔지니어가 될 때까지

0개의 댓글