ML OPS

argo workflow - cron workflow

seokhyun2 2022. 10. 2. 01:42

지난 글(https://seokhyun2.tistory.com/86)에서 argo workflow를 로컬에 세팅하는 방법에 대해서 알아보았었는데요.

오늘은 설치한 argo workflow에서 cron workflow를 생성하는 방법에 대해서 한 번 알아보도록 하겠습니다.

cron workflow 생성

cron workflow는 정해진 시간에 주기적으로 실행이 되는 workflow입니다.

기본적으로 웹 화면에서, ui로 간단하게 실행할 수 있습니다.

아래에서 왼쪽에 4번째에 시계 아이콘을 선택하면 Cron Workflows 탭에 들어갈 수 있고 그러면 CREATE NEW CRON WORKFLOW 버튼을 눌러서 간편하게도 생성할 수 있습니다.

버튼을 눌러보면, 아래의 내용이 기본 예제로 이미 입력이 되어 있습니다.

metadata:
  name: fantastic-tiger
  namespace: argo
  labels:
    example: 'true'
spec:
  workflowMetadata:
    labels:
      example: 'true'
  schedule: '* * * * *'
  workflowSpec:
    entrypoint: argosay
    arguments:
      parameters:
        - name: message
          value: hello argo
    templates:
      - name: argosay
        inputs:
          parameters:
            - name: message
              value: '{{workflow.parameters.message}}'
        container:
          name: main
          image: 'argoproj/argosay:v2'
          command:
            - /argosay
          args:
            - echo
            - '{{inputs.parameters.message}}'
    ttlStrategy:
      secondsAfterCompletion: 300
    podGC:
      strategy: OnPodCompletion

schedule이 어떤 주기로 실행할 지 설정하는 부분이고 templates 아래의 container 부분이 기존의 k8s에서 설정하던 내용들입니다.

'argoproj/argosay:v2'라는 이미지를 활용하고 /argosay 라는 command를 실행하게 되어있습니다.

바로 밑에 args: 에서 보면, '{{inputs.parameters.message}}' 부분은 parameter를 넣어주는 부분인데요.

template을 생성해두고 parameter를 다르게 입력해주는 식으로 template을 쉽게 재사용 할 수 있도록 도와줍니다.

CREATE 버튼을 눌러서 생성하면 cron workflow가 생성이 되고 1분마다 실행이 될 것 입니다.

생성된 cron workflow는 기본적으로 설정된 시간에 맞춰서 주기적으로 실행이 되지만, cron workflow를 선택하여 아래와 같은 화면에서 SUBMIT 버튼을 누르면 즉시 시작도 수행할 수 있는 장점이 있습니다.

수정은 고친뒤에 UPDATE 버튼을 누르면 되고, cron workflow 자체를 중지시키기 위해서는 SUSPEND 버튼을 활용하면 됩니다.

 

생성된 cron workflow가 실제로 수행된 workflow들에 대해서는 아래와 같이 왼쪽에서 제일 위에 있는 버튼을 눌러서 workflows 탭에서 확인할 수 있습니다. 

workflow가 언제 시작되고 끝났는지, 얼마나 걸렸는지에 대해서 편하게 볼 수 있고, workflow를 세부화면으로 들어가면 로그도 볼 수 있고 재시작이나 삭제도 할 수 있습니다.

 

argo workflow에서 cron workflow를 기본적으로 쉽게 생성하는 방법과 어떻게 활용하는지 간단하게 정리해보았는데요.

위와 같이만 사용하면 k8s에서 cronjob을 활용하는거에 비해서 장점이 없습니다.

workflow의 제일 강점 자체가 여러 개의 task를 순차적 혹은 병렬적으로 실행하게 할 수 있는 것이기 때문에 cron workflow에서도 여러 개의 task가 순차적으로 실행이 되도록 설정할 수 있습니다.

 argo workflow에서는 step이라는 것이 존재하여 step을 활용하면 여러 task를 쉽게 설정할 수 있는데요.

관련해서는 다음글에서 또 더 다루어보도록 하겠습니다.

'ML OPS' 카테고리의 다른 글

[MLOps, LLMOps] PagedAttention, vLLM 소개  (0) 2023.12.09
argo workflow 구성해보기  (0) 2022.09.18