Phase 3 — EKS 전환 v3.5 구현 기준 최종 발표용

v4 청사진에서 미래 기능을 덜어내고, 실제 코드와 검증 로그로 설명 가능한 범위만 재구성했습니다. 핵심 흐름은 Terraform apply → Bootstrap Helm → ArgoCD Sync → 운영 검증입니다.

1Terraform — AWS 기반 인프라
  • VPC / Public·Private Subnet / EKS / Managed NodeGroup
  • RDS PostgreSQL · ElastiCache Redis · S3 frontend · CloudFront
  • ALB + TargetGroup, 8080/8081 SG 경로, EKS Access Entry
  • IRSA Role: Karpenter · LBC · ESO · Loki, EBS CSI Addon
2Bootstrap — 플랫폼 컴포넌트 1회 설치
  • metrics-server → ArgoCD → Karpenter → AWS LBC
  • Istio Ambient, Gateway API, gp3 StorageClass
  • kube-prometheus-stack · Loki · Promtail · Tempo · OTEL Collector
  • Discord 알림, frontend deploy, ESO, 단계별 재개 옵션
3ArgoCD — 앱/쿠버 리소스 지속 관리
  • infrastructure/kubernetes 디렉터리 recursive sync
  • 4개 서비스 Deployment/Service/HPA/PDB/ServiceAccount
  • TargetGroupBinding, NodePool/EC2NodeClass, AuthPolicy, ExternalSecret
  • destroy 전 cleanup으로 ArgoCD 재생성/카펜터 잔류 방지
Platform Boundary
Terraform owns AWS
VPC, EKS, ALB/TG, RDS, Redis, IAM, IRSA, S3, CloudFront, EBS CSI
Bootstrap owns Helm
CRD/Controller 선행 설치. ArgoCD가 자기 전제를 만들지 않게 분리
ArgoCD owns K8s CR
앱 리소스와 NodePool, TGB, AuthPolicy, ExternalSecret을 Git 기준으로 유지
Runbook owns 반복 검증
apply/bootstrap/sync/status/cleanup을 스크립트와 문서로 재현 가능하게 고정
AWS VPC · EKS Cluster · Production Traffic
구동 검증 실습 운영
Public Subnet
CloudFront → ALB
LBC discovery tag / public ELB role tag
Private Subnet
Managed On-Demand nodes + Karpenter nodes
RDS / Redis / EKS workload path
EKS 1.32 Cluster — Terraform + Bootstrap + ArgoCD로 재현 v3.5 baseline
Userpposiraegi.cloud
CloudFrontSPA + /api route
ALB / TGTerraform 생성
health: 8081
TargetGroupBindingAWS LBC가 Service endpoint를 TG에 등록
production namespace — 4개 Spring Boot 서비스
api-gatewayALB 진입점
management:8081
TGB 연결
order-service주문 처리
RDS/Redis
trace 대상
product-service상품/재고
Redis stock gate
DB connection 검증
user-service사용자/인증
RDS 연결
health/readiness 분리
Karpenter NodePool — t3 제외, m/c large 계열, Spot + On-Demand, consolidation 30s, limit CPU 20
Managed On-Demand baseline Karpenter Spot/On-Demand Monitoring pinned to On-Demand NodeClaim / EC2NodeClass Ready
운영 경계에서 실제로 터졌고 보정한 지점
Port split
앱 8080 / actuator 8081. probe와 Prometheus scrape 경로 분리
SG path
ALB SG → managed node SG + Karpenter node SG 8080/8081 명시
Target registration
Terraform ALB/TG와 K8s Service 사이를 TargetGroupBinding으로 연결
IRSA overhead
Controller별 ServiceAccount/IAM Role/Trust policy를 별도로 검증
Observability / Security
Grafana · Prometheus
JVM/HTTP/CPU/Pod scrape. /actuator/prometheus는 8081 management port 기준
Loki · Promtail
서비스 로그 수집. Loki는 IRSA로 S3 bucket 사용, Grafana datasource 연결
Tempo · OTEL Collector
Spring Boot → OTEL HTTP 4318 → Tempo 4317/3200. 분산 추적 기반 마련
Istio Ambient
ztunnel + waypoint + AuthorizationPolicy. actuator 접근 경계 실험
Discord Alert
bootstrap 완료, cluster summary, Tempo readiness, Alertmanager webhook relay
검증 완료한 운영 시나리오
재현 가능한 apply/bootstrap
Terraform apply 후 bootstrap-platform.sh로 플랫폼 스택 설치 완료
서비스 외부 접근
CloudFront/ALB/TGB 경로로 API와 프론트 구동 확인
Karpenter 동작 확인
NodePool/EC2NodeClass Ready, NodeClaim 생성, t3 제외 및 consolidation 판단 확인
관측성 기본선
Prometheus scrape, Grafana dashboard, Loki log, Tempo readiness/collector 경로 확인
장애 지점 보정
health/readiness timeout, management port, SG/TGB, IRSA, PVC/gp3 문제 수습
destroy 전 정리
ArgoCD 자동복구 중지, Karpenter 리소스 정리, residue check 스크립트화
v3.5에서 의도적으로 제외한 것
KEDA / Argo Rollouts
타임딜 도메인 스케일링과 canary는 다음 고도화 과제. 현재 발표에서는 구현 완료로 말하지 않음
EKS 1.35 기능
In-place resize, HPA tolerance, PreferSameNode는 v4 연구 메모로 유지. 현재 클러스터 기준 아님
LBC 완전 전환
현재는 Terraform ALB/TG + TGB 연결 방식. Ingress 중심 전환은 장단점 검토 후 단계 전환
완전한 운영 보안/감사
ISMS-P, WAF, 백업/DR, managed observability 전환은 실무 확장 항목으로 분리
AWS/Terraform Kubernetes/EKS Observability/Istio 검증 완료
Phase 3 v3.5 · implementation baseline · final presentation