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