Skip to main content

Argo Workflows CRD


Workflow

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: hello-world-
spec:
entrypoint: container-test # 처음 시작되어야 할 템플릿 이름
templates:
- <template>

volumes

container가 마운트할 수 있는 볼륨 목록을 선언할 수 있습니다.

spec:
volumes:
- name: volume-1
persistentVolumeClaim:
claimName: test-pvc-1
volumes:
- name: volume-2
persistentVolumeClaim:
claimName: test-pvc-2
entrypoint: container-test
templates:
- name: container-test
container:
image: ubuntu:20.04
command:
- ls
args:
- /data
volumeMounts:
- name: volume-1 # 사용하고자 하는 volume의 name을 적어주면 됩니다.
mountPath: /data

templates 선언

container

쿠버네티스의 container spec을 그대로 사용하시면 됩니다.

spec:
entrypoint: container-test
templates:
- name: container-test
container:
image: docker/whalesay
command: [cowsay]
args: ["hello world"]

script

spec:
entrypoint: script-test
templates:
- name: script-test
script:
image: python:alpine3.6
command: [python]
source: |
import random
i = random.randint(1, 100)
print(i)

resource

쿠버네티스 resource를 직접 선언할 수 있습니다.

spec:
entrypoint: resource-test
serviceAccountName: argo-workflow
templates:
- name: resource-test
steps:
- - name: submit-resource
template: create-pod

- - name: delete-resource
arguments:
parameters:
- name: selector
value: cleanup=true
template: delete-resource

- name: create-pod
resource:
action: create
manifest: |
apiVersion: v1
kind: Pod
metadata:
generateName: hello-world-
labels:
cleanup: "true"
spec:
containers:
- name: hello-world
image: docker/whalesay
command: [cowsay]
args: ["hello world"]

- name: delete-resource
inputs:
parameters:
- name: selector
resource:
action: delete
flags: ["pod", "--selector", "{{inputs.parameters.selector}}"]

suspend

spec:
entrypoint: suspend-test
templates:
- name: suspend-test
suspend:
duration: "20s"

templates 호출

steps

steps는 연속적인 작업의 실행 순서를 정의할 수 있는 방법 중 하나입니다. 리스트 안의 리스트로 구성됩니다.

spec:
entrypoint: steps-test
templates:
- name: steps-test
steps:
- - name: a1
template: work1
- name: a2
template: work2
- - name: b1
template: work3
- name: b2
template: work4
when: "{{steps.b1.outputs.result}} == success"

위와 같이 정의한 경우 아래와 같은 순서로 진행됩니다. a1, a2는 병렬로 실행되고, b2b1의 결과에 따라 실행됩니다.

dag

dag는 연속적인 작업의 실행 순서를 정의할 수 있는 방법 중 하나입니다. 의존성이 없는 작업은 바로 실행됩니다.

spec:
entrypoint: dag-test
templates:
- name: dag-test
dag:
tasks:
- name: a1
template: work1
- name: a2
template: work2
- name: b1
dependencies: [a1, a2]
template: work3
- name: b2
dependencies: [b1]
template: work4
when: "{{tasks.b1.outputs.result}} == success"

Variables

Reference