기록

K3s 기반 멀티 계정 클라우드 인프라 설계 (AWS Free Tier 최적화) 본문

DevOps

K3s 기반 멀티 계정 클라우드 인프라 설계 (AWS Free Tier 최적화)

zyin 2025. 4. 14. 07:00

아키텍처 개요

이번 프로젝트의 목표는 최소 비용으로 배포 환경을 구성하되, 실제 운영 환경 수준의 짜임새 있는 인프라 구조를 갖추는 것이었다. 이를 위해 다음과 같은 방향으로 인프라를 설계했다.

  • K3s 기반 경량 Kubernetes 클러스터 운영
  • AWS 3개 환경(Infra / Dev / Prd) 분리로 프리티어 자원 극대화
  • EC2 기반 노드 구성, Redis는 퍼블릭 서브넷 배치
  • ArgoCD + Helm 기반 GitOps 배포 구조 준비

🔹 각 계정의 역할 및 리소스 구성

1. Infra (Control Plane 전용)

전체 클러스터의 제어 권한을 가진 마스터 노드를 운용. 워커 노드는 Dev/Prd 환경에 분산되어 있지만, 모든 노드는 Infra 계정의 K3s Control Plane에 연결한다.
구성 리소스:

  • EC2 인스턴스 (t2.micro): K3s 마스터 노드
  • Elastic IP: 고정 Public IP 부여 → 워커 노드가 고정된 Endpoint로 접근 가능
  • ECR (2개): Backend / Frontend 이미지 저장소
  • S3 Bucket: Helm 차트, 설정 파일, 백업 파일 보관
  • IAM Role (OIDC): GitHub Actions에서 이 계정 리소스를 배포할 수 있도록 설정

GitOps 흐름을 준비하며, Helm 차트를 통해 ArgoCD와 연동한다.


2. Dev 환경 (개발 환경)

개발 중인 서비스의 테스트 배포, Jenkins 기반의 빌드 테스트, 연동 검증 등을 수행하는 환경. 비용을 줄이기 위해 EC2 1대만 AutoScalingGroup으로 관리
구성 리소스:

  • Auto Scaling Group: K3s Agent EC2 (1대, t2.micro)
  • RDS (MySQL): 퍼블릭 서브넷 구성. Helm 차트에서 Spring 설정으로 연결 가능
  • ElastiCache (Redis): 퍼블릭 서브넷, 캐시용/세션용으로 사용
  • S3 Bucket: 개발 환경 리소스 (업로드 이미지, 로그 등) 저장

3. Prd 환경 (운영 환경)

운영을 모의하는 환경. Dev와 유사한 구성이나, CI/CD와 모니터링이 안정적으로 동작하는 구성을 목표로 한다.
구성 리소스:

  • Auto Scaling Group: K3s Agent EC2 (1대, t2.micro)
  • RDS (MySQL): 운영 데이터 저장
  • ElastiCache (Redis): 퍼블릭 서브넷 구성. 
  • S3 Bucket: 운영 환경에서 사용하는 업로드 파일 및 로그 저장
Comments