전공영역 공부 기록

Argo workflow - WorkflowTemplate

악분 2022. 7. 24. 17:37
반응형

안녕하세요. 이 글은 workflowtemplate에 대해 설명합니다. 

영상: https://youtu.be/F4Eg4hKgmVc

 

- YouTube

 

www.youtube.com

 

1. 개요

workflow를 템플릿으로 정의하는 것을 workflow template입니다. workflow에서 템플릿을 정의하여 불러쓰는 것처럼, argoworkflow를 템플릿으로 불러서 쓰고 싶을 때 사용합니다.

 

2. 어떤 곳에 사용될까?

사용자 관점에서는, 공통으로 사용하는 부분을 묶어서 관리하거나 workflow 동작 일부를 공유할 때 사용합니다.개발관점에서 쉽게 비유하면 workflow를 함수로 정의해서 다른 workflow에서 호출해서 사용한다고 생각하시면 됩니다.

 

운영관점에서는 WorkflowTemplate을 IAC처럼 사용할 수 있습니다. 운영하다 보면 workflow를 관리할 필요가 있는데, worfklowTemplate을 활용하자 사용자가 이용할 workflow를 코드로 관리할 수 있습니다.

 

3. 예제

아래 그림 예제는 argoworkflow 공식문서(https://argoproj.github.io/argo-workflows/workflow-templates/#working-with-parameters)에서 가져왔습니다. 예제는 WorkflowTemplate CRD로 정의한 템플릿을 Workflow CRD에서 호출해서 사용합니다.

apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
  name: hello-world-template-global-arg
  namespace: argo
spec:
  serviceAccountName: argo
  templates:
    - name: hello-world
      container:
        image: docker/whalesay
        command: [cowsay]
        args: ["{{workflow.parameters.global-parameter}}"]
---
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: hello-world-wf-global-arg-
  namespace: argo
spec:
  serviceAccountName: argo
  entrypoint: whalesay
  arguments:
    parameters:
      - name: global-parameter
        value: hello
  templates:
    - name: whalesay
      steps:
        - - name: hello-world
            templateRef:
              name: hello-world-template-global-arg
              template: hello-world

 

kubectl create로 WorkflowTempalte과 Workflow를 생성합니다.

kubectl create -f workflow.yaml

 

argo workflow UI의 왼쪽 메뉴 두번째에서 생성한 WorkflowTemplate목록을 볼 수 있습니다. 현재는 1개 생성했으므로, 1개만 보입니다. 

 

첫 번째 메뉴로 이동하면 실행성공한 workflow가 보입니다.

 

workflow상세 조회창에서 Manifest 버튼을 클릭하면, workflow가 어떤 WorkflowTemplate을 사용했는지 확인할 수 있습니다.

 

사용한 workflowTemplate확인

반응형