텍톤 태스크(Tekton Task)는 Tekton Pipelines의 핵심 실행 단위로, 하나의 독립적인 작업을 정의하는 Kubernetes Custom Resource Definition(CRD)이다. 각 Task는 하나 이상의 Step으로 구성되며, Step은 컨테이너 기반 명령을 실행하는 최소 단위이다.
개요
Tekton Task는 빌드, 테스트, 배포, 이미지 빌드, Git 클론, 보안 스캔 등 CI/CD 과정의 단일 작업을 캡슐화한다. 모든 Task는 YAML로 정의되며, Kubernetes 클러스터 내부에서 컨테이너로 구동된다.
구조
Task는 일반적으로 다음과 같은 구성 요소로 이루어진다:
- metadata — 이름, 라벨 등 리소스 식별 정보
- params — Task 실행 시 전달받는 파라미터
- workspaces — 파일 공유 및 마운트 구조
- steps — 실제 명령을 수행하는 컨테이너 실행 단계
- results — Task 실행 결과를 다른 Task로 전달하는 출력 값
예시
아래는 간단한 "Hello World" Task 예시이다.
apiVersion: tekton.dev/v1
kind: Task
metadata:
name: hello
spec:
steps:
- name: say-hello
image: ubuntu
script: |
#!/bin/bash
echo "Hello Tekton"
Step
Task 내부에서 가장 작은 실행 단위이며, 아래 특성을 가진다:
- 각 Step은 독립적인 컨테이너로 실행
- 순차로 실행되며 병렬 실행은 불가
- script 또는 command를 통해 동작 정의
예시:
steps:
- name: build
image: golang:1.18
script: |
go build main.go
- name: test
image: golang:1.18
script: |
go test ./...
파라미터 (Params)
Task는 외부 입력을 받아 동적으로 동작할 수 있다.
예시:
params:
- name: repo-url
type: string
steps:
- name: clone
image: alpine/git
script: |
git clone $(params.repo-url)
워크스페이스 (Workspaces)
Task 간 데이터를 공유하기 위한 파일 시스템 영역이다. Pipeline에서 여러 Task가 동일 Workspace를 공유할 수 있다.
예시:
workspaces:
- name: source
steps:
- name: list
image: alpine
script: |
ls $(workspaces.source.path)
결과값 (Results)
Task는 실행 결과를 문자열 형태로 다른 Task에 전달할 수 있다.
예시:
results:
- name: image-url
steps:
- name: set-result
image: ubuntu
script: |
echo -n "myregistry/myimage:latest" > $(results.image-url.path)
Tekton Hub의 표준 Task 예시
Tekton Hub에서 제공되는 대표적인 Task는 다음과 같다:
- git-clone
- buildpacks
- kaniko
- docker-build
- trivy
- kubernetes-actions
Pipeline에서의 사용
Task는 Pipeline 내부에서 PipelineTask로 호출된다.
apiVersion: tekton.dev/v1
kind: Pipeline
metadata:
name: sample-pipeline
spec:
tasks:
- name: clone
taskRef:
name: git-clone
- name: build
taskRef:
name: buildpacks
장점
- 완전한 컨테이너 기반 구조
- 재사용 가능한 워크로드 단위
- Tekton Hub에서 수천 개의 Task를 공유
- 쿠버네티스 네이티브 방식으로 안전하고 확장 가능
단점
- YAML 리소스 정의량이 많아질 수 있음
- Step 간 병렬 실행이 불가능
- 고급 기능 사용 시 RBAC·워크스페이스 구성 복잡성 증가
Tekton Task와 관련된 리소스
- Pipeline
- PipelineRun
- TaskRun
- TriggerTemplate / TriggerBinding
- Workspace
- Results
같이 보기
참고 문헌
- Tekton Pipelines 공식 문서
- Tekton Hub
- Tekton CLI(tkn) 문서