Build a Secure AWS EKS CI/CD Pipeline: Step-by-Step Tutorial (ArgoCD + GitHub Actions)
- 안전한 CI/CD 파이프라인 구축: AWS EKS에 배포된 애플리케이션을 위해 GitHub Actions와 ArgoCD를 활용하여 안전하고 자동화된 CI/CD 파이프라인을 구축합니다. 🚀
- GitHub Actions와 AWS 인증 (OIDC): GitHub Actions는 OpenID Connect(OIDC) 공급자를 통해 AWS와 동적으로 임시 자격 증명을 얻어 정적 시크릿 없이 안전하게 인증합니다. 🔑
- 세분화된 IAM 역할 제어: IAM 정책으로 특정 ECR 리포지토리에 대한 푸시 권한을 정의하고, IAM 역할의 신뢰 정책으로 특정 GitHub 조직/리포지토리만 AWS 역할을 맡을 수 있도록 제한하여 보안을 강화합니다. 🛡️
- ArgoCD와 ECR 인증 (Pod Identity): ArgoCD는 Kubernetes Pod Identity를 사용하여 서비스 어카운트를 AWS IAM 역할에 연결함으로써 ECR에 안전하게 접근합니다. 🔗
- ArgoCD의 GitOps 기반 배포: ArgoCD는 Kubernetes 리포지토리를 모니터링하고, ECR에서 새 이미지를 감지하면 Git 리포지토리에 새 커밋을 생성한 후 EKS에 롤링 업그레이드를 수행합니다. 🔄
- Terraform을 통한 인프라 자동화: S3 백엔드를 사용하여 Terraform 상태를 관리하고, OIDC, IAM, ECR, VPC, EKS 클러스터 등 모든 인프라를 코드로 프로비저닝합니다. 🏗️
- 애플리케이션 빌드 및 ECR 푸시: GitHub Actions는 소스 코드 변경 시 Git 태그를 자동으로 증가시키고, Docker 이미지를 빌드하여 ECR 리포지토리에 푸시합니다. 🐳
- Kustomize를 활용한 Kubernetes 배포: ArgoCD는 Kustomize를 사용하여 애플리케이션 배포 파일을 관리하며, 환경별 오버라이드를 통해 유연성을 제공합니다. ⚙️
- ArgoCD의 Git 리포지토리 접근 (Deploy Key): ArgoCD는 배포 키(Deploy Key)를 사용하여 Kubernetes 리포지토리에 접근하며, 새 이미지 태그 커밋을 위해 쓰기 권한을 부여하여 Git에 배포 상태를 유지합니다. 📝
- 빠른 배포 주기: 소스 코드 변경부터 EKS에 새 버전이 배포되기까지 평균 3~5분 이내의 빠른 CI/CD 주기를 시연합니다. ⏱️