반응형
최근 많은 팀이 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에 반영하는 것입니다.
- CI 단계 (GitHub Actions)
- Composite Action으로 빌드 → Docker 푸시 → manifest 업데이트 → Git push
- Trivy 같은 보안 스캔도 Composite Action 안에 추가 가능 (Medium 사례)
- 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과의 인프라 연동 등 더 고도화된 구조도 적용할 수 있습니다.
✍️ 참고 문서
반응형
'DevOps' 카테고리의 다른 글
| isito 와 cilium path 정책 차이 (0) | 2025.09.24 |
|---|---|
| istio vs cilium 정책 차이 (0) | 2025.09.24 |
| gitops와 app of apps 가 kubernetes 운영시 필요한 이유 (0) | 2025.09.08 |
| kubernetes 셀프서비스 backstage 도입여부 환경 (0) | 2025.09.08 |
| GitHub Actions · AWS OIDC · Reusable Workflow · Terraform IaC 정리 (0) | 2025.09.04 |
댓글