EKS 클러스터
├── Node Group: monitoring-nodes
│
├── Node Group: alerting-nodes
│
├── Node Group: testing-nodes
│
├── Node Group: secrets-nodes (옵션)
EKS 클러스터
├── NodeGroup: monitoring-nodes (label: role=monitoring)
│   ├── EC2 인스턴스 1 (Node)
│   │   ├── Pod: Prometheus
│   │   └── Pod: Grafana
│   └── EC2 인스턴스 2 (Node)
│       └── Pod: node-exporter
│
├── NodeGroup: alerting-nodes (label: role=alerting)
│   └── EC2 인스턴스 1
│       └── Pod: Alertmanager
│
└── NodeGroup: testing-nodes (label: role=testing)
    └── EC2 인스턴스 1
        └── Pod: k6 부하테스트

그리고 Vault or AWS Secrets Manager 만 별도 클러스터 사용하거나, 클러스터 내에서 사용시에는 RBAC, IAM, Node 격리 반드시 적용해야함.

내가 생각하는 폴더 구조

eks-infrastructure/
├── environments/                    # 환경별 설정 파일들
│   ├── dev.tfvars                  # 개발 환경 변수
│   ├── staging.tfvars              # 스테이징 환경 변수
│   └── prod.tfvars                 # 프로덕션 환경 변수
│
├── modules/                        # 재사용 가능한 Terraform 모듈들
│   ├── eks-cluster/               # EKS 클러스터 모듈
│   │   ├── [main.tf](<http://main.tf/>)               # EKS 클러스터 리소스 정의
│   │   ├── [variables.tf](<http://variables.tf/>)          # 입력 변수 정의
│   │   ├── [outputs.tf](<http://outputs.tf/>)            # 출력 값 정의
│   │   └── [versions.tf](<http://versions.tf/>)           # 프로바이더 버전 제약
│   │
│   ├── node-groups/              # 노드 그룹 모듈
│   │   ├── [main.tf](<http://main.tf/>)               # 노드 그룹 리소스
│   │   ├── [variables.tf](<http://variables.tf/>)          # 노드 그룹 설정 변수
│   │   └── [outputs.tf](<http://outputs.tf/>)            # 노드 그룹 출력
│   │
│   ├── vpc/                      # VPC 네트워킹 모듈
│   │   ├── [main.tf](<http://main.tf/>)               # VPC, 서브넷, 라우팅 설정
│   │   ├── [variables.tf](<http://variables.tf/>)          # 네트워크 관련 변수
│   │   └── [outputs.tf](<http://outputs.tf/>)            # 네트워크 정보 출력
│   │
│   └── vault-integration/        # Vault 통합 모듈 -> 여기 구성해도 되나?
│       ├── [main.tf](<http://main.tf/>)               # Vault 설정 및 권한
│       ├── [variables.tf](<http://variables.tf/>)          # Vault 관련 변수
│       └── [outputs.tf](<http://outputs.tf/>)            # Vault 연결 정보
│
├── helm-charts/                   # Helm 차트들 -> 이것도 여기 구성해서 관리?? / addon
│   ├── monitoring/               # 모니터링 스택
│   │   ├── prometheus/           # Prometheus 차트 설정
│   │   ├── grafana/             # Grafana 차트 설정
│   │   └── node-exporter/       # Node Exporter 차트 설정
│   │
│   ├── alerting/                # 알림 시스템
│   │   └── alertmanager/        # Alertmanager 차트 설정
│   │
│   └── testing/                 # 테스팅 도구
│       └── k6/                  # K6 부하테스트 차트
│
├── scripts/                      # 자동화 스크립트들
│   ├── [deploy.sh](<http://deploy.sh/>)                # 배포 스크립트
│   ├── [destroy.sh](<http://destroy.sh/>)               # 인프라 삭제 스크립트
│   └── [vault-setup.sh](<http://vault-setup.sh/>)           # Vault 초기 설정 스크립트
│
├── [main.tf](<http://main.tf/>)                       # 메인 Terraform 구성 파일
├── [variables.tf](<http://variables.tf/>)                  # 전역 변수 정의
├── [outputs.tf](<http://outputs.tf/>)                    # 전역 출력 값
├── [terraform.tf](<http://terraform.tf/>)                  # Terraform 및 프로바이더 설정
└── [README.md](<http://readme.md/>)                     # 프로젝트 문서

테라폼 install 을 로컬에서 하는게 맞는지

자사용은 보통 안씀 - 운영비 줄이면서 고가용성 유지하고 싶음

프라이빗키 - 클러스터 따로 나누는 것보다 프라이빗 서브넷에 구성하면 될 것 같음

높은 권한/ 낮은 권한 별로 프로젝트 나누면 좋음

클러스터 전체에 영향을 주는것만 두기.

중요하게 생각하는게 뭔지 (보안이나 고가용성, 비용 등)