Argo Workflows와 GitHub Actions 연동 가이드

Argo Workflows 소개
Argo Workflows는 쿠버네티스 환경에서 복잡한 작업의 자동화를 돕는 워크플로 엔진입니다. CI/CD 파이프라인이나 데이터 처리, 머신러닝과 같이 여러 단계가 필요한 과정을 효율적으로 관리할 수 있습니다.
GitHub Actions의 역할
GitHub Actions는 코드 변경 시 자동으로 테스트와 배포 과정을 실행하는 도구입니다. 개발자가 직접 GitHub 저장소에서 손쉽게 연동할 수 있어 자동화에 용이합니다.
두 도구 연동의 장점
Argo Workflows와 GitHub Actions을 함께 사용하면 클라우드 환경에서 작업을 크게 확장할 수 있습니다. 작업 병렬 수행(DAG 지원), 재사용 가능한 템플릿, 실시간 모니터링(UI와 CLI 제공), 비용 절감(쿠버네티스 자원 효율 사용) 등의 이점이 있습니다.
활용 사례
CI/CD: 여러 환경에 애플리케이션을 자동 빌드, 테스트, 배포
머신러닝: 데이터 전처리부터 모델 학습, 배포까지의 전체 흐름 관리
대용량 데이터 처리: ETL(추출, 변환, 적재) 작업 자동화
백업 및 복구: 주기적인 백업 및 복구 프로세스 자동 실행
이벤트 기반: GitHub 이벤트 또는 클라우드 저장소 변화에 따라 워크플로 자동 실행
준비사항
쿠버네티스 클러스터(로컬 Minikube, AKS, EKS, GKE 등)
kubectl 설치 및 설정 완료
Argo Workflows 쿠버네티스 클러스터에 설치
GitHub 저장소에 워크플로 활성화
Argo Workflows 설치 및 UI 연결 방법
쿠버네티스에서 Argo Workflows를 설치하려면 다음 명령을 사용합니다.
kubectl create namespace argo
kubectl apply -n argo -f https://github.com/argoproj/argo-workflows/releases/download/v3.4.4/install.yaml
kubectl get pods -n argo운영 환경이 아니거나 디버깅 시 인증 없이 UI에 접근하려면 추가 패치를 적용할 수 있습니다.
kubectl patch deployment argo-server -n argo --type=json -p=[{op: add, path: /spec/template/spec/containers/0/args/-, value: --auth-mode=server}]
kubectl rollout restart deployment argo-server -n argo
kubectl -n argo port-forward deployment/argo-server 8080:2746이후 브라우저에서 http://localhost:8080 으로 접근하면 UI를 볼 수 있습니다.
간단한 워크플로 정의 예시
워크플로 샘플 파일을 프로젝트 루트에 생성합니다.
# sample_deploy.yml
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: github-triggered-workflow-
namespace: argo
spec:
entrypoint: main
templates:
- name: main
container:
image: python:3.8
command: [python, -c]
args: [print(Hello from Argo Workflow...)]AKS 인증 방식과 GitHub Secrets 활용
쿠버네티스 인증은 간편하게 admin 계정 또는 Azure AD, 서비스 프린시펄, kubeconfig 인증서 등 다양한 방식으로 할 수 있습니다. 예시로 base64 인코딩된 kubeconfig를 Secret으로 저장합니다.
az aks get-credentials --resource-group <RESOURCE_GROUP> --name <CLUSTER_NAME> --admin --file kubeconfig
cat kubeconfig | base64 -w 0결과 값을 GitHub 저장소의 Settings > Secrets > Actions에 KUBE_CONFIG_DATA로 등록합니다.
GitHub Actions에서 Argo 워크플로 배포 예시
자동 배포를 위한 workflow 파일 예시는 다음과 같습니다.
# .github/workflows/argo-workflow.yml
name: Deploy to AKS without Azure AD
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Verify File Exists
run: |
if [ ! -f sample_deploy.yml ]; then
echo Error: sample_deploy.yml not found!
exit 1
fi
echo Found sample_deploy.yml
- name: Setup Kubeconfig
run: |
mkdir -p $HOME/.kube
echo ${{ secrets.KUBE_CONFIG_DATA }} | base64 --decode > $HOME/.kube/config
chmod 600 $HOME/.kube/config
export KUBECONFIG=$HOME/.kube/config
kubectl config view --minify
kubectl get nodes
- name: Deploy Argo Workflow
run: |
kubectl create -f sample_deploy.yml -n argo || true
kubectl get workflows -n argo이 워크플로는 코드 push 시마다 자동으로 kubectl을 통해 워크플로를 배포합니다.
실행 결과 확인법
워크플로가 실행되면, GitHub Actions 탭에서 로그로 진행 상황을 확인할 수 있습니다. Argo UI에서는 워크플로 이름을 클릭하여 상세한 실행 이력을 조회할 수 있습니다.
확장 활용 및 마무리
이 흐름을 기반으로 멀티 스텝 워크플로, 다양한 변수와 파라미터, 고급 스케줄러 기능 등으로 확장할 수 있습니다. Argo Workflows를 잘 활용하면 클라우드 환경의 DevOps 및 데이터 자동화를 크게 간소화할 수 있습니다.
