
| 파일명 | 역할 | 상세 내용 |
|---|---|---|
| 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) |

Ansible이 명령을 실행할 대상 서버 정보를 정의한다.
자동화된 환경 구성을 위한 실행 스크립트 모음
| 파일명 | 역할 | 설명 |
|---|---|---|
| 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 필수) |
재사용 가능한 Ansible 역할(Task, Variables, Handler) 모음

| 파일명 | 역할 | 설명 |
|---|---|---|
| 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에서 사용할 스토리지 요청 정의 |