피드로 돌아가기
[SaaS] Private AWS EKS Cluster With Github Actions
강남언니 공식 블로그강남언니 공식 블로그
DevOps

힐링페이퍼가 Private EKS 클러스터에 GitHub Actions Self-hosted Runner를 VPC 피어링으로 연결해 보안을 유지하면서 CI/CD 파이프라인 자동화 구현

[SaaS] Private AWS EKS Cluster With Github Actions

문민규2023년 8월 12일8intermediate

Context

Private AWS EKS 클러스터 기반 SaaS 서비스에서 GitHub Actions를 통한 배포 자동화가 필요했으나, Public IP 대역 개방으로 인한 보안 위험과 GitHub IP 변경 시 지속적인 관리 부담이 존재했다.

Technical Solution

  • Self-hosted Runner 배포: Shared AWS Account의 Private VPC 내 EC2에 GitHub Actions Self-hosted Runner 구성
  • VPC 피어링 구축: Shared Account의 Runner EC2가 있는 VPC와 Development/Production Account의 EKS 클러스터 VPC를 피어링으로 연결
  • IAM OIDC 연동: AWS IAM OIDC Provider 설정으로 GitHub Actions Job에서 IAM Role Assume 역할 수행
  • ECR 통합: Runner가 Shared Account의 ECR에 Docker 이미지 빌드 및 푸시 수행, Development/Production 환경의 EKS가 해당 이미지 사용
  • kubectl 명령 실행: Runner에서 aws eks update-kubeconfigkubectl apply 명령으로 Kubernetes 리소스 매니페스트 배포

Key Takeaway

Multi-Account AWS 환경에서 Private EKS 클러스터로의 안전한 CI/CD 연결은 GitHub IP 화이트리스팅 대신 VPC 피어링 + Self-hosted Runner + IAM OIDC 조합으로 IP 대역 노출 없이 내부 통신만으로 구현할 수 있으며, 이는 변경에 강한 인프라 관리 체계를 제공한다.


Multi-Account AWS 환경에서 Private EKS를 운영하는 백엔드 팀이 GitHub Actions를 사용할 때, Shared Account에 Self-hosted Runner를 배치하고 VPC 피어링으로 다른 Account의 EKS와 연결한 후 IAM OIDC로 권한을 위임하면 보안 인증서 관리 없이 내부 VPC 통신만으로 배포 자동화를 구현할 수 있다.

원문 읽기