본문 바로가기

인프라,데이터/Argo

VSCode+Dev-Container로 Argo-Workflows 설치하기

Argo-Workflows

  • 쿠베에서 병렬 job을 오케스트레이팅하는 컨테이너-네이티브한 오픈 소스 워크플로우 엔진이다.
  • kubernetes CRD(Custom Resource Definition)으로 구현된다.
  • 워크플로우의 각 단계가 컨테이너인 워크플로우를 정의한다. 
  • 여러 단계의 워크플로우를 일련의 작업(task)으로 모델링하거나 DAG를 이용하여 순서가 있는 작업을 실행할 수 있다. 
  • 컴퓨팅 리소스를 많이 사용하는 머신러닝/데이터 처리 작업을 쉽게 빠른 시간 안에 돌릴 수 있다.. 고 하는데 이건 젠킨스/Airflow 등에 비해서 얼마나 좋은지는 지표를 따로 찾아봐야 할 듯 하다. 

 

Argo Workflows를 사용하는 이유

  • 쿠버네티스에서 사용하기에 가장 인기 있는 워크플로우 실행 엔진이다.
  • 가볍고, 확장 가능하며, 사용하기 쉽다.
  • 레거시 VM/서버 기반 환경의 한계와 오버헤드 없이 컨테이너를 위해 고안되었다.
  • 어떤 쿠버네티스 컨테이너에서건 구동시킬 수 있고, 클라우드 밴더에 구애받지 않는다.

 

Dev-Container + VSCode 환경에서 Argo Workflows 실행하기

Dev-Container를 사용하면 로컬 PC에 여러 도구들을 설치할 필요 없이 필요한 사항들이 구비된 컨테이너를 만들어 사용할 수 있다.

Dev-Container를 사용하는 것은 argo-workflows을 로컬 환경에 설치할 경우 권장하는 사항이다.

 

* 먼저 설치되어야 하는 것들

argo-workflows 레파지토리를 클론한다.

export GOPATH=$HOME/go
echo $GOPATH # 결과물이 출력되는지 확인한다.
git clone https://github.com/argoproj/argo-workflows.git $GOPATH/src/github.com/argoproj/argo-workflows

 

dev container cli를 설치한다.

npm install -g @devcontainers/cli

 

깃 클론받은 폴더 $GOPATH/src/github.com/argoproj/argo-workflows 로 이동한다.

cd $GOPATH/src/github.com/argoproj/argo-workflows
devcontainer up --workspace-folder .

그러면 데브 컨테이너가 설치되는데... 시간이 쫌 걸린다. 7분 이상 걸렸던 것 같다. 

 

다음으로 데브 컨테이너 안에 들어가서 argo workflows를 구동시켜줘야 한다.

 

방법1) VSCode Extension 사용

VSCode에서 Microsoft의 Dev Containers 익스텐션을 설치한다.

Show All Commands 를 누르고 (맥 기준 ⇧⌘P, F1) 

Dev Containers: Open Folder in Container... 를 실행한다.

 

방법2) dev container cli 사용 

devcontainer exec --workspace-folder . /bin/bash

로 생성한 데브컨테이너에 접속한다.

 

컨테이너 안에 접속했으면

make clean
make start UI=true

를 해준다.

 

dev container cli로 데브 컨테이너를 만들 때 현재 위치한 경로 ($GOPATH/src/github.com/argoproj/argo-workflows)를 컨테이너와 볼륨 마운트 하는데, 컨테이너 WORKDIR($GOPATH/src/github.com/argoproj/argo-workflows)에 위치한 Makefile을 읽어서 빌드를 시작한다.

Makefile 내용 : https://github.com/argoproj/argo-workflows/blob/master/Makefile 

 

무튼... make start UI=true 명령어를 실행하면 꽤 오래 기다려야 한다. 10분 이상.

VSCode Extension을 사용하는 경우엔 기다리고 나면 8080 포트가 연결되었다고 팝업이 뜬다.

그러면 그때 localhost:8080 으로 접속하면 된다. 

마운트된 폴더에 examples 폴더 하위에 Workflow 파일이 많아서 꽤 많이 참고하고 테스트해볼 수 있다.

 

 

참고

https://github.com/argoproj/argo-workflows/blob/master/docs/running-locally.md#development-container

https://code.visualstudio.com/docs/devcontainers/containers