EKS 배포 사전 요구사항
이 체크리스트는 고객의 AWS 계정에 EKB EKS 인프라를 배포하기 전에 완료하고 고객과 함께 검토해야 합니다. 모든 항목은 배포 전에 확인, 기록 및 승인되어야 합니다.
체크리스트
AWS 계정 및 접근
| 영역 | 체크리스트 항목 | 상세 요구사항 | 용도 / 이유 | 승인 기준 | 상태 | 기록된 값 / 비고 |
|---|---|---|---|---|---|---|
| 계정 | AWS Account ID | 유효한 AWS Account ID를 공유해야 합니다 | IAM 역할 생성, 과금 소유권, 태깅 및 Terraform 백엔드 접근에 필요 | Account ID가 정확하고, 과금이 활성화되어 있으며, 접근 가능 | ||
| 리전 | AWS 리전 선택 | 리전이 EKS, EC2, VPC, ACM, ElastiCache, Amazon MQ를 지원해야 합니다 | 일부 서비스는 리전 제한이 있으며, 지원되지 않는 리전은 배포를 실패시킵니다 | AWS 콘솔에서 리전이 확인되었고 모든 필요한 서비스를 지원 | ||
| CLI | AWS CLI 구성됨 | AWS CLI로 인증된 IAM User | Terraform/Terragrunt 배포에는 프로그래밍 방식 접근이 필요합니다 | aws sts get-caller-identity가 예상 계정을 반환 | ||
| IAM | 배포 권한 | 관리자 IAM 권한 | 배포가 EC2, EKS, IAM, S3, ACM, Route 53, MQ, ElastiCache, CloudWatch에 걸쳐 이루어집니다 | IAM 정책이 필요한 서비스에 대한 생성/수정/삭제를 허용 |
서비스 할당량
| 영역 | 체크리스트 항목 | 상세 요구사항 | 용도 / 이유 | 승인 기준 | 상태 | 기록된 값 / 비고 |
|---|---|---|---|---|---|---|
| EC2 | 온디맨드 vCPU 할당량 | 온디맨드 Standard (A, C, D, H, I, M, R, T, Z) 인스턴스에 최소 100–150 vCPU 할당량 | 자동 스케일링, r6a 인스턴스 및 Karpenter에 높은 vCPU 여유 공간이 필요합니다 | Service Quotas 콘솔에서 할당량 증가가 승인됨 | ||
| EC2 | 인스턴스 패밀리 가용성 | 해당 리전에서 C, M, R 패밀리 인스턴스 사용 가능 | 워크로드에 컴퓨팅, 메모리 및 데이터베이스 최적화 노드가 필요합니다 | EC2 콘솔에서 인스턴스 패밀리가 보이고 선택 가능 | ||
| EKS | EKS 클러스터 할당량 | 필요한 환경 배포를 기준으로 최소 1개 EKS 클러스터 허용 | 할당량이 부족하면 클러스터 생성이 차단됩니다 | 할당량 >= 1 클러스터 | ||
| VPC | NAT Gateway 할당량 | AZ당 1개 NAT Gateway (3개 권장) | 프라이빗 서브넷에 아웃바운드 인터넷 접근이 필요합니다 | 할당량 >= AZ 수 | ||
| 네트워킹 | Elastic IP 할당량 | NAT Gateway용 Elastic IP 사용 가능 | 각 NAT Gateway가 하나의 Elastic IP를 소비합니다 | Elastic IP 할당량이 AZ 수에 충분 | ||
| ElastiCache | ElastiCache 할당량 | Redis 클러스터에 최소 2개 노드 (cache.t3.micro, Redis 7.0) | ENABLE_AWS_SERVICES=true일 때 필요 | 할당량 >= 2 노드 | ||
| Amazon MQ | Amazon MQ 할당량 | RabbitMQ에 최소 1개 브로커 (mq.m5.large, RabbitMQ 3.13) | ENABLE_AWS_SERVICES=true일 때 필요 | 할당량 >= 1 브로커 |
도메인 및 SSL
| 영역 | 체크리스트 항목 | 상세 요구사항 | 용도 / 이유 | 승인 기준 | 상태 | 기록된 값 / 비고 |
|---|---|---|---|---|---|---|
| 도메인 | 프론트엔드 도메인 | 웹 프론트엔드용 퍼블릭 도메인 (예: app.example.com) | ALB 라우팅 및 SSL 종료에 사용 | 도메인 해석 및 소유권 확인 | ||
| 도메인 | 백엔드 API 도메인 | FastAPI 백엔드용 퍼블릭 도메인 (예: api.example.com) | API 접근 및 TLS에 필요 | 도메인 문서화 및 승인 완료 | ||
| 도메인 | Automator Service 도메인 | Automator Service용 퍼블릭 도메인 (예: automations.example.com) | API 접근 및 TLS에 필요 | 도메인 문서화 및 승인 완료 | ||
| 도메인 | Supabase Service 도메인 | Supabase Cloud를 사용하지 않을 때 — Supabase용 퍼블릭 도메인 (예: supabase.example.com) | Supabase 셀프호스팅 시 API 접근 및 TLS에 필요 | 도메인 문서화 및 승인 완료 | ||
| 인증서 | ACM 인증서 | 배포 리전에 와일드카드 또는 개별 ACM 인증서 생성됨 | ALB에서의 TLS 종료에 유효한 ACM 인증서가 필요 | ISSUED 상태의 인증서가 배포와 동일한 AWS 리전에 존재 |
네트워킹
| 영역 | 체크리스트 항목 | 상세 요구사항 | 용도 / 이유 | 승인 기준 | 상태 | 기록된 값 / 비고 |
|---|---|---|---|---|---|---|
| VPC | VPC 전략 | 기존 VPC 확인 또는 새 VPC 생성 승인 | 격리, 라우팅 및 보안 경계를 정의 | VPC ID 또는 CIDR 블록 승인 | ||
| CIDR | CIDR 계획 | CIDR가 온프레미스 또는 다른 VPC와 겹치지 않아야 합니다 | 겹치는 CIDR은 라우팅 및 VPN 연결을 파괴합니다 | 기존 네트워크에 대해 CIDR 검증 완료 | ||
| 서브넷 | 퍼블릭 서브넷 | ALB 및 NAT Gateway용 AZ별 퍼블릭 서브넷 | 인그레스 및 아웃바운드 트래픽에 필요 | 서브넷 태깅 및 라우팅 가능 | ||
| 서브넷 | 프라이빗 서브넷 | EKS 워커 노드용 AZ별 프라이빗 서브넷 | 워크로드가 인터넷에 직접 노출되지 않도록 보장 | 서브넷 매핑 및 NAT Gateway를 통해 접근 가능 | ||
| 아웃바운드 | 아웃바운드 접근 | 워커 노드에서 포트 80, 443, 53 아웃바운드 허용 | 컨테이너 이미지 풀, AWS API 호출 및 DNS 해석에 필요 | 방화벽/보안 그룹 규칙 검증 완료 |
서비스 구성
| 영역 | 체크리스트 항목 | 상세 요구사항 | 용도 / 이유 | 승인 기준 | 상태 | 기록된 값 / 비고 |
|---|---|---|---|---|---|---|
| Supabase | Supabase 활성화 | 셀프호스팅 Supabase (ENABLE_SUPABASE=true) 또는 Supabase Cloud 확인 | DB 프로비저닝, 시크릿, 인그레스 및 네트워킹 구성에 영향 | 결정이 문서화되었고, 해당 ENABLE_* 플래그가 배포에 설정됨 | ||
| AWS Services | Redis 사용 | AWS ElastiCache Redis (ENABLE_AWS_SERVICES=true) 또는 외부 Redis 확인 | 고가용성, 비용 및 네트워킹 설계에 영향 | 결정이 문서화됨 | ||
| AWS Services | RabbitMQ 사용 | Amazon MQ (ENABLE_AWS_SERVICES=true) 또는 외부 RabbitMQ 확인 | 메시징 안정성 및 HA에 영향 | 결정이 문서화됨 | ||
| 로드 밸런서 | ALB Controller | AWS Load Balancer Controller 활성화 (ENABLE_ALB_CONTROLLER=true, 기본값) | Kubernetes 어노테이션에서 ALB 인그레스 프로비저닝에 필요 | Controller Pod가 infrastructure 네임스페이스에서 실행 중 |
자동 스케일링
| 영역 | 체크리스트 항목 | 상세 요구사항 | 용도 / 이유 | 승인 기준 | 상태 | 기록된 값 / 비고 |
|---|---|---|---|---|---|---|
| Karpenter | Karpenter 설치 | EKS 모듈을 통해 Karpenter 컨트롤러 배포됨 | 동적 노드 프로비저닝을 처리; 매니지드 노드 그룹 자동 스케일링을 대체 | Karpenter Pod가 전용 노드 그룹에서 정상 상태 | ||
| Karpenter | Spot 전략 | 노드 클래스별 Spot vs 온디맨드 사용 정의 | 비용을 최적화하면서 안정성 유지; Spot 중단 처리가 활성화되어야 합니다 | Spot 인스턴스 사용 시 SQS를 통한 중단 처리 활성화 | ||
| KEDA | Pod 자동 스케일링 | Helm 차트를 통해 KEDA 설치 (keda 네임스페이스) | CPU/메모리 임계값 기반 동적 Pod 스케일링을 처리 | KEDA 오퍼레이터 Pod 정상 상태; 모든 서비스에 ScaledObjects 적용 |
스토리지
| 영역 | 체크리스트 항목 | 상세 요구사항 | 용도 / 이유 | 승인 기준 | 상태 | 기록된 값 / 비고 |
|---|---|---|---|---|---|---|
| EBS | EBS CSI Driver | EBS CSI 드라이버 설치 (kube-system 네임스페이스) | StorageClass를 통한 동적 퍼시스턴트 볼륨 프로비저닝에 필요 | 드라이버 Pod 정상 상태; PVC 프로비저닝 성공 |
보안
| 영역 | 체크리스트 항목 | 상세 요구사항 | 용도 / 이유 | 승인 기준 | 상태 | 기록된 값 / 비고 |
|---|---|---|---|---|---|---|
| 암호화 | 静态 저장소 암호화 | EBS 볼륨, S3 상태 버킷 및 Redis 암호화 활성화 | 모든 스토리지 레이어에 걸쳐 민감한 데이터를 보호 | 각 서비스에 대해 AWS 콘솔에서 암호화 확인 | ||
| 암호화 | 전송 중 암호화 | 모든 외부 및 내부 서비스 통신에 TLS 적용 | 전송 중 데이터 가로채기를 방지 | HTTPS 엔드포인트 확인; Redis transit_encryption_enabled = true | ||
| 감사 | 감사 로깅 | CloudTrail, VPC Flow Logs 및 Kubernetes 감사 로깅 활성화 | 사고 조사, 컴플라이언스 및 감사에 필요 | CloudWatch / S3에서 로그가 보이고 쿼리 가능 |
배포
| 영역 | 체크리스트 항목 | 상세 요구사항 | 용도 / 이유 | 승인 기준 | 상태 | 기록된 값 / 비고 |
|---|---|---|---|---|---|---|
| 일정 | 배포 윈도우 | 고객이 승인한 배포 날짜 및 시간 윈도우 | 검증 및 필요한 경우 롤백을 위한 고객 팀 가용성 보장 | 서면 확인서 수신 |
승인
| 영역 | 체크리스트 항목 | 상세 요구사항 | 용도 / 이유 | 승인 기준 | 상태 | 기록된 값 / 비고 |
|---|---|---|---|---|---|---|
| 승인 | 고객 승인 | 고객이 비용 견적, 범위 및 배포 계획을 공식 승인 | 인프라 프로비저닝 전에 공식적인 라이브 승인이 필요 | 이메일 또는 서명된 문서 승인 수신 |
서비스 활성화/비활성화 플래그 참조
배포 전에 고객과 함께 각 플래그의 의도된 값을 확인하세요.
| 환경 변수 | 기본값 | 효과 |
|---|---|---|
ENABLE_SUPABASE | false | 셀프호스팅 Supabase 스택 배포 (Kong, Auth, Storage, Studio) |
ENABLE_CNPG | false | CloudNativePG 오퍼레이터 배포 (셀프호스팅 Supabase DB의 전제 조건) |
ENABLE_HA_SUPABASE_DB | false | CloudNativePG를 통한 HA PostgreSQL 클러스터 배포 (Supabase의 전제 조건) |
ENABLE_AWS_SERVICES | false | ElastiCache Redis 및 Amazon MQ RabbitMQ 프로비저닝 |
ENABLE_ALB_CONTROLLER | true | AWS Load Balancer Controller 배포 |
ENABLE_SIGNOZ | false | SigNoz 관측 가능성 플랫폼 + k8s-infra 에이전트 배포 |
기록된 값 요약
배포 전에 고객으로부터 수집한 최종 값을 기록하세요.
| 매개변수 | 값 |
|---|---|
| AWS Account ID | |
| AWS 리전 | |
| VPC CIDR | |
| 가용 영역 | |
| 프론트엔드 도메인 | |
| API 도메인 | |
| Automator 도메인 | |
| Supabase 도메인 (셀프호스팅 시) | |
| SigNoz 도메인 (활성화 시) | |
| ACM 인증서 ARN | |
| Supabase 모드 | 클라우드 / 셀프호스팅 |
| Redis | ElastiCache / 외부 |
| RabbitMQ | Amazon MQ / 외부 |
| 배포 날짜 / 윈도우 | |
| 고객 승인 참조 |