-
Argo Workflows와 GitHub Actions 연동 가이드혼자서 공부하기/Kubernetes 2025. 9. 1. 23:29728x90반응형SMALL
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 및 데이터 자동화를 크게 간소화할 수 있습니다.
728x90반응형LIST'혼자서 공부하기 > Kubernetes' 카테고리의 다른 글
쿠버네티스 관측 가능성(Observability) 핵심 가이드 (0) 2025.09.01 멀티 리전 GitOps로 쿠버네티스 무중단 운영하기 (0) 2025.09.01