# App Mesh → VPC Lattice 마이그레이션 환경 설정 # # cp .env.example .env # 값 채우기 # bash scripts/render.sh # *.yaml.tpl → rendered/*.yaml # # 형식 규칙: KEY=VALUE 만 허용. 'export' 접두사, '=' 좌우 공백 금지. # 값에 공백이나 '#'가 들어가면 따옴표로 감싸세요. # ── AWS 계정 / 리전 ──────────────────────────────────────────────── AWS_ACCOUNT_ID=123456789012 AWS_REGION=ap-northeast-2 # ── EKS 클러스터 ─────────────────────────────────────────────────── CLUSTER_NAME=appmesh-lattice-mig K8S_VERSION=1.33 NODEGROUP_NAME=mng-appmesh-test # App Mesh 데모/Envoy 이미지 호환성 때문에 x86 권장 (ARM은 이미지 확인 필요) NODE_INSTANCE_TYPE=t3.xlarge NODE_VOLUME_SIZE=50 NODE_MIN_SIZE=2 NODE_DESIRED_CAPACITY=2 NODE_MAX_SIZE=4 # ── 네트워크 (기존 VPC 재사용, 프라이빗 서브넷만 등록) ───────────── VPC_ID=vpc-xxxxxxxxxxxxxxxxx AZ_A=ap-northeast-2a AZ_B=ap-northeast-2b SUBNET_ID_AZ_A=subnet-xxxxxxxxxxxxxxxxx SUBNET_ID_AZ_B=subnet-xxxxxxxxxxxxxxxxx # 클러스터 엔드포인트 공개 여부. 프로덕션은 false 권장. CLUSTER_ENDPOINT_PUBLIC_ACCESS=true CLUSTER_ENDPOINT_PRIVATE_ACCESS=true # Secrets 암호화용 KMS 키. 사용하지 않으려면 cluster.yaml.tpl 의 # secretsEncryption 블록을 직접 제거하세요 (빈 값은 렌더링 실패). SECRETS_KMS_KEY_ARN=arn:aws:kms:ap-northeast-2:123456789012:key/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx # ── 애플리케이션 / App Mesh (AS-IS) ──────────────────────────────── APP_NAMESPACE=demo MESH_NAME=appmesh-lattice-mig CLOUDMAP_NAMESPACE=appmesh-test.local # 마이그레이션 전 하향 권장 (기본 300초 → DNS stale 구간 최대 5분 발생) CLOUDMAP_DNS_TTL=30 # ── blue/green 전환 (App Mesh=blue → Lattice=green) ──────────────── # green 네임스페이스는 Mesh namespaceSelector 라벨을 붙이지 않습니다. # 따라서 Envoy 사이드카가 주입되지 않고, blue 와 완전히 독립적으로 존재합니다. GREEN_NAMESPACE=demo-green # green frontend Pod 의 IAM Role ARN. 비워 두면 render.sh 가 SA 에서 자동 조회 GREEN_FRONTEND_IAM_ROLE_ARN= # green backend 의 Lattice 도메인. 비워 두면 render.sh 가 HTTPRoute 어노테이션에서 자동 조회 # (HTTPRoute 생성 → 재렌더링 → frontend 적용 순서) GREEN_BACKEND_ENDPOINT= # backend-tls(Lattice→Pod 재암호화) 라우트의 Lattice 도메인. 비워 두면 자동 조회 GREEN_BACKEND_TLS_ENDPOINT= # 엣지 nginx resolver 용 클러스터 DNS IP. 비워 두면 kube-dns ClusterIP 를 자동 조회 CLUSTER_DNS_IP= # ── VPC Lattice (TO-BE) ──────────────────────────────────────────── LATTICE_SYSTEM_NAMESPACE=aws-application-networking-system # 리스너 포트 # HTTPS(443) = mTLS 의 전송 암호화 대체 경로. ACM 불필요(Lattice 관리형 인증서) # TLS passthrough = Phase 5(평문 TCP 검증) 실험용. 443 을 HTTPS 에 양보해 8443 LATTICE_HTTP_PORT=80 LATTICE_HTTPS_PORT=443 LATTICE_TLS_PASSTHROUGH_PORT=8443 # sigv4-proxy 의 upstream 스킴. HTTPS 리스너로 보낼 때 https, HTTP:80 이면 http SIGV4_UPSTREAM_SCHEME=https # Gateway(=Service Network) 이름. 컨트롤러의 defaultServiceNetwork 와 동일해야 함 SERVICE_NETWORK_NAME=appmesh-lattice-mig-sn GATEWAY_CLASS_NAME=amazon-vpc-lattice GATEWAY_API_VERSION=v1.2.0 # TLSRoute(Phase 5)를 쓰려면 반드시 experimental. standard 채널에는 TLSRoute 가 없음 GATEWAY_API_CHANNEL=experimental LATTICE_CHART_VERSION=v1.1.6 LATTICE_CONTROLLER_POLICY_NAME=VPCLatticeControllerIAMPolicy # ── SigV4 / IAM 인증 (Phase 4) ───────────────────────────────────── # frontend Pod 의 IAM Role ARN. 비워 두면 render.sh 가 # 'kubectl -n $APP_NAMESPACE get sa frontend' 어노테이션에서 자동 조회합니다. FRONTEND_IAM_ROLE_ARN= SIGV4_PROXY_IMAGE=public.ecr.aws/aws-observability/aws-sigv4-proxy:1.8 # sigv4-proxy 의 --host 에 넣을 대상 = backend 의 Lattice 도메인. # 이 값을 프록시에 고정하면 애플리케이션은 Host 헤더를 세팅할 필요가 없고 # http://localhost:8080/ 만 호출하면 됩니다. # 비워 두면 render.sh 가 HTTPRoute 어노테이션에서 자동 조회합니다. BACKEND_ENDPOINT= # scripts/grant-lattice-invoke.sh 가 frontend 역할에 붙이는 인라인 정책 LATTICE_INVOKE_POLICY_NAME=LatticeInvoke # 검증 랩에서는 "*" 로 테스트했습니다. 범위를 좁히려면 아래 형태를 쓰세요: # arn:aws:vpc-lattice:::service/* LATTICE_INVOKE_RESOURCE=* # ── sigv4-proxy 사이드카 자동 주입 (선택) ────────────────────────── # aws-sigv4-proxy-admission-controller. 어노테이션 기반 주입. # 차트 기본 웹훅은 failurePolicy 미지정(=Fail) + 스코프 무제한이라 위험하므로 # sigv4-inject/install-controller.sh 가 안전장치를 넣어 설치합니다. SIGV4_INJECT_NAMESPACE=sigv4-inject SIGV4_INJECT_CHART_VERSION=0.1.2 # ⚠ 차트 기본 컨트롤러 이미지(1.0)는 upstream-url-scheme / unsigned-payload 어노테이션을 # 무시합니다. Lattice HTTP:80 리스너에서는 프록시가 HTTPS 로 보내 502 가 됩니다. # master 빌드(latest)를 digest 로 고정해 사용하세요. SIGV4_INJECT_CONTROLLER_IMAGE=public.ecr.aws/aws-observability/aws-sigv4-proxy-admission-controller@sha256:fe2dd1aeae9a5d62935b2fcfb10090a3bf5c5cea8b54412fe6838614591d0342 # ⚠ 주입되는 사이드카 포트는 컨트롤러 소스에 :8005 로 하드코딩되어 있습니다(변경 불가). # 수동 사이드카(8080)와 규약이 달라지므로 앱 설정을 맞춰야 합니다. SIGV4_INJECT_PROXY_PORT=8005 # ── 컨테이너 이미지 ──────────────────────────────────────────────── NGINX_IMAGE=public.ecr.aws/nginx/nginx:1.27 REDIS_IMAGE=public.ecr.aws/docker/library/redis:7-alpine CLIENT_IMAGE=public.ecr.aws/amazonlinux/amazonlinux:2023 # ── 태그 ─────────────────────────────────────────────────────────── TAG_ENVIRONMENT=lab TAG_PROJECT=appmesh-lattice-migration