본문 바로가기
DevOps

GitHub Composite Action + ArgoCD: GitOps CI/CD 파이프라인 완성하기

by Rainbound-IT 2025. 9. 8.
반응형

 

 

최근 많은 팀이 GitOps 기반 배포를 도입하면서 ArgoCD를 활용하고 있습니다. 하지만 CI 단계(빌드, 테스트, 이미지 푸시)는 여전히 GitHub Actions에서 담당하는 경우가 많습니다.

이때 유용하게 활용할 수 있는 것이 Composite Action입니다. 반복적인 빌드/배포 로직을 하나로 묶어 재사용할 수 있고, ArgoCD와 결합하면 완전 자동화된 GitOps 파이프라인을 구현할 수 있습니다.


1. GitHub Composite Action이란?

  • 정의: 여러 Step을 조합해 하나의 Action처럼 사용할 수 있는 GitHub Actions 기능 (using: composite).
  • 장점
    • 공통 빌드/배포 로직을 표준화
    • 리포지토리/팀 전체에서 재사용
    • 유지보수 및 관리 용이
  • 형태: .github/actions/your-action/action.yml
name: "My Composite Action"
description: "ECR Docker Build & Push"
inputs:
  image:
    required: true
  tag:
    required: true
runs:
  using: "composite"
  steps:
    - uses: actions/checkout@v4
    - run: docker build -t ${{ inputs.image }}:${{ inputs.tag }} .
    - run: docker push ${{ inputs.image }}:${{ inputs.tag }}


2. ArgoCD와 연결하는 GitOps 구조

ArgoCD는 Git 저장소의 변경을 감지해 Kubernetes에 반영합니다. 따라서 CI에서 중요한 것은 이미지 빌드 + 태그 변경을 Git에 반영하는 것입니다.

  1. CI 단계 (GitHub Actions)
    • Composite Action으로 빌드 → Docker 푸시 → manifest 업데이트 → Git push
    • Trivy 같은 보안 스캔도 Composite Action 안에 추가 가능 (Medium 사례)
  2. CD 단계 (ArgoCD)
    • GitOps 저장소 변경 감지
    • 새 이미지 태그로 배포 자동화
    • 필요시 GitHub Action에서 ArgoCD CLI를 직접 호출해 app sync 실행 (argo-cd-action)

3. 실제 워크플로우 예시

jobs:
  build-and-push:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: your-org/ci-actions/build-push@main
        with:
          image: my-service
          tag: ${{ github.sha }}

  update-manifest:
    runs-on: ubuntu-latest
    needs: build-and-push
    steps:
      - uses: actions/checkout@v4
      - name: Update Deployment
        run: |
          sed -i "s|tag:.*|tag: ${{ github.sha }}|g" charts/my-service/values.yaml
          git config user.name "ci-bot"
          git config user.email "ci@org.com"
          git commit -am "Update image tag"
          git push

  argocd-sync:
    runs-on: ubuntu-latest
    needs: update-manifest
    steps:
      - uses: clowdhaus/argo-cd-action@main
        with:
          command: app sync my-service
          options: --server ${{ secrets.ARGOCD_SERVER }} --username ${{ secrets.ARGOCD_USER }} --password ${{ secrets.ARGOCD_PASS }}


4. 장점 요약

  • 재사용성: CI 로직을 중앙 관리, 모든 서비스에서 활용
  • 자동화: Git commit만 하면 ArgoCD가 자동 배포
  • 보안/추적성: 태그 기반 배포, 감사 로그 남김
  • 확장성: 보안 스캐닝, 환경별 프로모션(Dev→Prod)에도 대응 가능
  • (freecodecamp.org)

마치며

  • Composite Action = CI 로직 표준화 도구
  • ArgoCD = GitOps 기반 배포 자동화 도구

두 가지를 연결하면, 효율적이고 안전하며 확장 가능한 CI/CD 파이프라인을 구축할 수 있습니다.

앞으로는 Vault 기반 시크릿 관리, Crossplane과의 인프라 연동 등 더 고도화된 구조도 적용할 수 있습니다.


✍️ 참고 문서

반응형

댓글