back

argowf synchronization

개요

Argo Workflows에서 하나의 Workflow Template 동시실행을 방지하는 설정을 추가합니다.

처음 요청 배경은 5분 간격으로 CronWorkflow(이것 또한 WorkflowTemplate을 참고함)로 돌아가는 배치 작업의 동시실행을 방지하고 단일 실행을 보장하고 싶어하는 개발자의 니즈가 있었습니다.

배경지식

WorkflowTemplate은 재사용 가능한 워크플로우 정의를 제공하는 핵심 리소스입니다. 하나의 WorkflowTemplate으로부터 여러 개의 독립적인 Workflow 인스턴스를 생성할 수 있어 효율적이고 일관된 워크플로우 관리가 가능합니다.

주요 특징

이러한 재사용성 때문에 WorkflowTemplate에서 생성되는 여러 Workflow의 동시 실행을 제어하는 동기화 메커니즘이 중요합니다.

환경

설정 방법

WorkflowTemplate 리소스에 설정할 수 있습니다.

# workflowtemplate yaml
spec:
  synchronization:
    mutex:
      name: only-single-job

이후 동일한 workflowTemplate에서 Workflow를 2개 이상 실행할 경우, 한 workflow가 종료되기 전까진 Lock에 의해 workflow가 대기 상태에 빠집니다.

Argo Workflows UI에서 synchronization에 의해 대기중인 Workflow는 다음과 같이 표시됩니다:

Pending: Waiting for argo-workflows/Mutex/<MUTEX_NAME> lock. Locks tatus: 0/1

Waiting workflow due to locking

관련자료