1.Terraform : 기초 인프라 구축 (IaC)

1.png

파일명 역할 상세 내용
backend.tf 상태 공유 tfstate를 S3/DynamoDB에 저장하여 팀 간 동기화 및 작업 충돌 방지
efs.tf 공유 스토리지 EFS 파일 시스템, Mount Target, Access Point 구성하여 EKS Pod 간 공유 스토리지 제공
eks.tf 쿠버네티스 Amazon EKS 클러스터 및 워커 노드 그룹 생성
iam-addons.tf 애드온 권한 관리 AWS Load Balancer Controller, EFS CSI Driver 등 EKS 애드온용 IRSA Role 및 Policy 설정
iam-eks.tf EKS 권한 관리 EKS 클러스터 Role, 워커 노드 Role, OIDC Provider 생성 및 기본 IAM 정책 연결
iam-karpenter.tf Karpenter 권한 관리 Karpenter 컨트롤러 및 노드 자동 생성용 IAM Role, Policy, Instance Profile, SQS/EventBridge 설정
locals.tf 공통 변수 프로젝트 이름, 환경(DR), 공통 태그 정의
outputs.tf 결과 출력 EKS Endpoint, RDS Host 등 주요 리소스 정보 출력
provider.tf 플랫폼 설정 사용할 클라우드(AWS) 정의, 리전(ap-northeast-2) 및 접속 설정
rds.tf 데이터베이스 DR 전용 RDS 인스턴스 및 DB Subnet Group 구성
route53.tf 장애 전환 라우팅 Route53 헬스체크 및 Failover 라우팅을 통해 온프레미스 장애 시 AWS DR 환경으로 트래픽 자동 전환
security.tf 보안 Security Group 및 NACL 설정
terraform.tfvars 데이터 입력 실제 환경에 적용될 변수 값 정의
variables.tf 변수 선언 인프라 구성에 필요한 입력 변수 선언
versions.tf 버전 관리 Terraform 바이너리 및 Provider 플러그인 버전 관리
vpc.tf 네트워크 VPC, Public/Private Subnet, IGW, NAT Gateway 구성
compue-public.tf 운영/관리용 EC2 생성상세 내용 Monitoring 서버 및 Tailscale Router EC2 생성 (운영/관제 및 온프레미스 연결)
dms.tf 데이터 복제 AWS DMS를 이용해 온프레미스 MySQL 데이터를 RDS로 실시간 복제 (CDC)

2.Ansible : 구성 관리 (Configuration Management)

aws 구조.png

inventory

Ansible이 명령을 실행할 대상 서버 정보를 정의한다.


playbooks

자동화된 환경 구성을 위한 실행 스크립트 모음

파일명 역할 설명
install-alb-controller.yml 네트워크 연동 AWS ALB와 Kubernetes Ingress 연동
install-helm.yml 패키지 관리 Kubernetes 패키지 매니저 Helm 설치
install-hpa.yml Pod 확장 애플리케이션 Pod 오토스케일링 설정
install-karpenter.yml 노드 확장 Karpenter 설치 및 노드 자동 확장 설정
install-kubectl.yml CLI 도구 클러스터 제어를 위한 kubectl 설치
install-metrics-server.yml 모니터링 Pod 리소스 사용량 수집 (HPA 필수)

roles

재사용 가능한 Ansible 역할(Task, Variables, Handler) 모음

3. Kubernetes : 실행 자원 정의 (Manifests)

1.png

파일명 역할 설명
app-hpa.yaml Pod 오토스케일링 애플리케이션 Pod의 최소/최대 개수 및 CPU 기준 정의
metrics-server-components.yaml 메트릭 수집 HPA 동작을 위한 Kubernetes Metrics Server 배포
ingress-class.yaml 외부 접근 AWS ALB 기반 IngressClass 설정
ec2nodeclass.yaml AWS 노드 설정 Karpenter가 생성할 EC2 인스턴스 설정 (AMI, Subnet, SecurityGroup 등)
nodepool.yaml 노드 확장 정책 클러스터에 추가될 노드의 타입 및 스케일링 조건 정의
provisioner-values.yaml Karpenter 설정 Karpenter Helm 설치 시 사용할 설정값 정의
dr-web-deployment.yaml 애플리케이션 배포 DR 환경에서 실행될 웹 애플리케이션(Nginx) Pod를 Deployment 형태로 생성
dr-web-service.yaml 서비스 노출 Kubernetes NodePort Service로 Pod를 외부에서 접근 가능하게 노출하여 ALB와 연결
storageclass.yaml 스토리지 클래스 EFS CSI Driver를 통한 동적 볼륨 프로비저닝 설정
storageclass.yaml 스토리지 정의 EFS 기반 PersistentVolume 생성
persistentvolumeclaim.yaml 스토리지 요청 Pod에서 사용할 스토리지 요청 정의

전체 구조 연결 설명