티스토리 뷰

 

AWS EKS 환경에서 Jenkins와 ArgoCD로 구축하는 CI/CD 파이프라인

 

 

AWS EKS 환경에서 Jenkins와 ArgoCD를 활용한 CI/CD 파이프라인 구축 방법과 실무 Best Practice를 소개합니다. GitOps 기반의 안정적인 자동 배포 구조와 운영 전략까지 한 번에 이해할 수 있습니다.

 

 

 

📦 주요 컴포넌트 설명

✅ Jenkins (CI: Continuous Integration)

  • 역할: 애플리케이션 빌드, 테스트, Docker 이미지 생성 및 저장소 푸시, 배포 매니페스트 업데이트
  • 실행 위치: EKS 클러스터 내 (Jenkins on K8s) 또는 외부 서버
  • 중요 포인트
    • GitHub Webhook을 통해 CI 파이프라인 트리거
    • AWS ECR에 Docker 이미지 푸시
    • ArgoCD가 바라보는 GitOps Repo에 Helm 또는 Kustomize 매니페스트 수정 커밋

 

✅ ArgoCD (CD: Continuous Delivery)

  • 역할: GitOps 방식으로 Git 저장소를 감시하고, 변경된 내용을 쿠버네티스에 자동 배포
  • 실행 위치: EKS 클러스터 내부에 설치
  • 중요 포인트
    • Git 저장소가 소스 오브 트루스 (Source of Truth)
    • Pull 방식으로 변경 사항을 지속적으로 감시
    • 선언적 방식으로 배포 상태 관리 (드리프트 감지 및 복구)

 

왜 Jenkins와 ArgoCD를 함께 사용하는가?

  • Jenkins는 빌드 및 테스트에 최적화된 CI 도구입니다.
  • ArgoCD는 GitOps 방식으로 쿠버네티스에 선언적 배포를 제공합니다.
  • 두 도구를 함께 사용하면, 이미지 빌드부터 자동 배포까지 전체 DevOps 흐름을 자동화할 수 있습니다.

 

CI/CD 아키텍처 구성도

 

 

 

1단계: 개발자가 Git에 코드 푸시

  • Webhook을 통해 Jenkins 파이프라인이 트리거됩니다.

 

2단계: Jenkins에서 Docker 이미지 빌드 및 ECR 푸시

  • Kubernetes 환경 내에서 안전하게 빌드 (예: Kaniko, BuildKit)

 

3단계: Jenkins가 GitOps Repo의 매니페스트 수정

  • Helm values.yaml 또는 Kustomize를 수정하고 커밋합니다.

 

4단계: ArgoCD가 Git 변경 감지 → EKS에 자동 배포

  • Git을 기준으로 EKS 클러스터 상태를 자동 동기화합니다.

 

EKS 기반 CI/CD의 실무 Best Practice

  • Jenkins와 ArgoCD는 EKS 클러스터 내부에 설치하고, IRSA를 통해 IAM 권한을 최소화합니다.
  • Git 저장소를 단일 신뢰 소스로 관리하고, 모든 배포 변경 이력을 남깁니다.
  • 슬랙, 이메일 등으로 알림 연동하여 운영 가시성을 높입니다.
  • ArgoCD의 App-of-Apps 패턴을 사용해 멀티앱을 효율적으로 관리합니다.

 

결론: 안정성과 확장성을 동시에 잡는 배포 전략

Jenkins와 ArgoCD 조합은 실무에서 가장 많이 쓰이는 CI/CD 솔루션입니다.
GitOps 방식은 변경 이력 추적, 롤백, 멀티 클러스터 확장에 유리하며,
EKS와의 조합으로 AWS 자원과의 통합도 매끄럽게 이루어집니다.