-
Argo Workflows와 GitHub Actions 연동 가이드CICD 2025. 9. 4. 15:11반응형
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 및 데이터 자동화를 크게 간소화할 수 있습니다.
반응형'CICD' 카테고리의 다른 글
Amazon ECS에 Spring Boot 어플리케이션 배포 한눈에 보기 (0) 2025.09.04 Express.js 백엔드, Docker, AWS ECS, MongoDB로 클라우드에 배포하기 (on ECS) (0) 2025.09.04 Spring Boot 애플리케이션을 Amazon ECS에 배포하기 (on ECS) (2) 2025.09.04 Spring Boot 앱을 ECS에 GitHub Actions로 자동 배포하기 (0) 2025.09.04 멀티 리전 GitOps로 쿠버네티스 무중단 운영하기 (0) 2025.09.04