Updated:

less than 1 minute read

설명

  • https://argoproj.github.io/workflows
  • 쿠버네티스 네이티브 워크플로우 엔진
  • CNCF incubating projects
  • 병렬 작업을 오케스트레이션
  • 워크플로우의 각 단계는 컨테이너 레벨에서 수행
  • 작업에 종속성을 부여하여 작업 간의 순서 제어 가능
  • 머신 러닝 파이프라인이나 배치 등에 사용


설치

  • kubectl create ns argo
  • kubectl apply -n argo -f https://raw.githubusercontent.com/argoproj/argo-workflows/master/manifests/quick-start-postgres.yaml


UI

  • 2746 포트에 대한 포트포워딩 또는 해당 서비스를 NodePort로 변경
    • kubectl -n argo port-forward deployment/argo-server 2746:2746
  • https로 붙어야 함


workflow

  • argo 설치 네임스페이스와 같은 네임스페이스에서 호출해야 한다
  • workflow.yaml
    • ---
      apiVersion: argoproj.io/v1alpha1
      kind: Workflow
      metadata:
        generateName: workflow-test-
        namespace: argo
      spec:
        entrypoint: diamond
        templates:
          - name: echo
            inputs:
              parameters:
                - name: message
            container:
              image: 'alpine:3.7'
              command:
                - echo
                - ''
          - name: diamond
            dag:
              tasks:
                - name: A
                  template: echo
                  arguments:
                    parameters:
                      - name: message
                        value: A
                - name: B
                  dependencies:
                    - A
                  template: echo
                  arguments:
                    parameters:
                      - name: message
                        value: B
                - name: C
                  dependencies:
                    - A
                  template: echo
                  arguments:
                    parameters:
                      - name: message
                        value: C
                - name: D
                  dependencies:
                    - A
                  template: echo
                  arguments:
                    parameters:
                      - name: message
                        value: D
                - name: E
                  dependencies:
                    - B
                    - C
                  template: echo
                  arguments:
                    parameters:
                      - name: message
                        value: E
                - name: F
                  dependencies:
                    - D
                  template: echo
                  arguments:
                    parameters:
                      - name: message
                        value: F
      
  • kubectl create -f workflow.yaml