LabHub

CAPA — Argo 프로젝트 인증 어소시에이트 · Argo Workflows 와 Events · 실습

DAG 파이프라인과 Job 의 거리 재기

LabHub 에서 이어서 보기

목표

Argo Workflows 의 DAG·아티팩트·템플릿 재사용을 매니페스트로 표현하고, 같은 일을 쿠버네티스 Job 과 CronJob 으로도 실제로 올려 두 모델의 표현력 차이를 눈으로 확인합니다.

왜 중요한가

Workflows 를 도입할지 판단하려면 Job 으로 어디까지 되는지 알아야 합니다. Job 은 재시도(backoffLimit)와 병렬(parallelism)까지는 표현하지만 작업 사이의 의존성과 파일 전달은 표현하지 못합니다. 그래서 Job 만 쓰는 조직은 결국 컨테이너 하나에 셸 스크립트를 몰아넣거나 클러스터 밖 오케스트레이터에 순서를 맡기게 되고, 두 방법 모두 실패 지점을 잃습니다. 이 실습에서 두 매니페스트를 나란히 만들어 보면 그 경계선이 어디인지 손에 남습니다.

단계

1. /root/capa-wf/ 디렉터리를 만들고 workflow.yaml 에 apiVersion argoproj.io/v1alpha1, kind Workflow, metadata.name capa-build, spec.entrypoint main 을 쓰세요. spec.templates 에는 name 이 main 인 템플릿이 있어야 합니다.
2. main 템플릿에 dag.tasks 를 만들고 checkout, build, test 세 태스크를 넣으세요. buildcheckout 에, testbuild 에 의존하게 하고 checkout 에는 dependencies 를 붙이지 마세요.
3. spec.templates 에 name 이 build 인 템플릿을 두고, inputs.parameters 에 이름이 revision 인 파라미터를, outputs.artifacts 에 이름이 binary 이고 path 가 /out/app 인 아티팩트를 선언하세요.
4. /root/capa-wf/cronworkflow.yaml 에 kind CronWorkflow, metadata.name capa-nightly, spec.schedule 0 3 * * *, spec.concurrencyPolicy Forbid, spec.workflowSpec.entrypoint main 을 쓰세요.
5. /root/capa-wf/workflowtemplate.yaml 에 kind WorkflowTemplate, metadata.name capa-common 을 쓰고 그 안에 name 이 notify 인 템플릿을 두세요. 그리고 workflow.yamlmain dag 에 notify 태스크를 추가하되 templateRef.namecapa-common, templateRef.templatenotify, dependencies 는 test 로 하세요.
6. 클러스터에 네임스페이스 capa-wf 를 만들고 그 안에 Job capa-build-job 을 실제로 만드세요. spec.backoffLimit2, 파드의 restartPolicyNever, 컨테이너 이미지는 busybox:1.36 입니다.
7. 같은 네임스페이스에 CronJob capa-nightly-job 을 실제로 만드세요. spec.schedule0 3 * * *, spec.concurrencyPolicyForbid, spec.successfulJobsHistoryLimit1 입니다.
8. 같은 네임스페이스에 컨피그맵 capa-wf-summary 를 실제로 만드세요. 키 dag-tasks 에는 workflow.yamlmain dag 태스크 개수를, 키 cron-schedule 에는 cronworkflow.yaml 의 schedule 값을, 키 job-name 에는 capa-build-job 을 넣으세요.

참고

단계 8개

  1. Workflow 골격과 entrypoint
  2. 의존성 그래프 그리기
  3. 파라미터와 아티팩트
  4. CronWorkflow 로 주기 실행
  5. WorkflowTemplate 재사용
  6. 같은 일을 하는 Job 을 실제로 올리기
  7. CronJob 으로 같은 주기 표현하기
  8. 파일과 클러스터를 잇는 요약