728x90
Amazon VPC Lattice란
- AWS에서 제공하는 완전관리형 애플리케이션 네트워킹 서비스로, 다양한 컴퓨팅 환경에서 애플리케이션 서비스를 연결, 보호 및 모니터링하는 통합 솔루션
Amazon VPC Lattice 주요 구성 요소
- Service
Service는 특정 작업이나 기능을 수행하는 독립적으로 배포가능한 소프트웨어 단위입니다. 이는 어떤 Amazon Virtual Private Cloud(VPC)나 계정에도 존재할 수 있으며, 다양한 유형의 컴퓨팅 환경(가상머신, 컨테이너, 서버리스 함수)에서 실행할 수 있습니다. 서비스 구성은 다음과 같은 요소로 이루어집니다.- 리스너 : 리스너에서는 Service가 트래픽을 받아들일 포트와 프로포콜을 정의합니다. 지원되는 프로토콜은 HTTP/1.1, HTTP/2, gRPC이며, TLS가 활성화된 Service의 경우 HTTPS도 포함됩니다.
- 규칙 : 리스너의 기본 구성 요소로, 요청을 대상 그룹의 대상들로 전달합니다. 각 규칙은 우선 순위, 하나 이상의 작업, 그리고 리스너가 클라이언트 요청을 라우팅하는 기준이 되는 하나 이상의 조건으로 구성됩니다.
- 대상 그룹 : 애플리케이션이나 서비스를 실행하는 리소스들의 집합으로, 이를 대상 이라고도 합니다. 대상은 EC2 인스턴스, IP주소, Lambda 함수, 또는 Kubernetes Pod가 될 수 있습니다.
- Service 특징
- 고유한 VPC Lattice 도메인 네임 제공
- 리스너를 통해 들어오는 연결 처리
- 특정 경로나 헤더 값에 기반한 라우팅 규칙 정의
- EC2, ECS, Lambda 등 다양한 AWS 컴퓨팅 서비스를 대상으로 설정 가능상태 확인을 통한 트래픽 안정성 보장
- Service Network
Service Network는 VPC Lattice의 핵심 구성 요소로, 여러 서비스를 논리적으로 그룹화하고 이들 간의 통신을 관리합니다. 하나 이상의 VPC를 Service Network에 연결하여 해당 네트워크 내의 서비스 간 통신을 가능하게 합니다.
- Service Network의 주요 특징
- 여러 VPC와 서비스를 단일 네트워크로 통합
- 계정 간, 리전 간 서비스 연결 지원
- 중앙 집중식 액세스 제어 및 모니터링 제공
- VPC 연결을 통한 Service Network 내 서비스에 대한 접근 관리
- Auth Policy
Auth Policy는 VPC Lattice 서비스에 대한 액세스를 제어하는 IAM 기반 정책입니다. 이를 통해 특정 IAM 보안 주체나 역할이 서비스에 접근할 수 있는지 여부를 세밀하게 제어할 수 있습니다.
- Auth Policy의 주요 기능
- IAM 기반의 세분화된 접근 제어
- 서비스 레벨 또는 서비스 네트워크 레벨에서 적용 가능
- HTTP 메소드, 경로, 헤더 등을 기준으로 조건부 액세스 규칙 설정
- AWS 리소스 간의 안전한 통신 보장
- Service Directory
Service Directory는 모든 VPC Lattice 서비스를 중앙에서 검색하고 관리할 수 있는 카탈로그입니다. 개발자와 운영팀이 사용 가능한 서비스를 쉽게 찾고 접근할 수 있도록 지원합니다.
- Service Directory의 핵심 기능
- 사용 가능한 모든 서비스의 중앙 집중식 카탈로그 제공
- 서비스 메타데이터 및 설명 관리
- 서비스 검색 및 필터링 기능
- 접근 가능한 서비스에 대한 가시성 제공
Amazon VPC Lattice의 장점
- 여러 VPC, EC2 인스턴스, 컨테이너, 서버리스로 구성한 애플리케이션의 네트워크 구성을 중앙 집중화 할 수 있습니다.
- 별도의 사이드카 프록시를 구성할 필요가 없습니다. (+ 완전 관리형 서비스)
- 복잡한 네트워크 구성을 단순화 해서 쉽게 사용할 수 있습니다.
- IAM 및 SigV4를 통해 각 애플리케이션으로의 보안 구성을 손쉽게 적용 할 수 있습니다.
- CloudWatch, S3, Kinesis Data Firehose를 통해 쉽게 로깅, 트래픽 패턴 분석 등을 수행할 수 있습니다.
[실습 1] Simple Client to Server communication
- Terraform 코드 준비 및 프로비저닝
git clone https://github.com/aws-ia/terraform-aws-eks-blueprints.git
cd terraform-aws-eks-blueprints/patterns/vpc-lattice/client-server-communication
#main.tf 파일 내의 29번째 라인에서 region 값을 ap-northeast-2로 수정
27 locals {
28 name = basename(path.cwd)
29 region = "ap-northeast-2"
30
31 cluster_vpc_cidr = "10.0.0.0/16"
32 client_vpc_cidr = "10.1.0.0/16"
33 azs = slice(data.aws_availability_zones.available.names, 0, 3)
..
..
#실습 인프라를 프로비저닝
terraform init
terraform apply -target="module.client_vpc" -auto-approve
terraform apply -target="module.cluster_vpc" -auto-approve
terraform apply -target=aws_route53_zone.primary -auto-approve
terraform apply -target="module.client_sg" -auto-approve
terraform apply -target="module.endpoint_sg" -auto-approve
terraform apply -target="module.client" -auto-approve
terraform apply -target="module.vpc_endpoints" -auto-approve
terraform apply -target="module.eks" -auto-approve
terraform apply -target="module.addons" -auto-approve
terraform apply -auto-approve
#kubectl config 설정
aws eks update-kubeconfig --name client-server-communication --alias client-server-communication --region ap-northeast-2
kubectl get pods -A
- client vpc가 10.1.0.0/16 CIDR 주소 범위로 구성
- cluster vpc가 10.0.0.0/16 CIDR 주소 범위로 구성
- client vpc의 서브넷은 private subnet 3개로 구성
- cluster vpc의 서브넷은 public subnet 3개, private subnet 3개로 구성
- client 측 워크로드로 1개의 ec2 인스턴스가 구성되어 있습니다.
- cluster 측 워크로드로 3개의 ec2 인스턴스(워커 노드)가 구성되어 있습니다.
- example.com Route53 구성
- EKS 생성 확인
- 3개 Node 확인
- 전체 Pod 확인
- 10.0.0.119 pod: server-6d44dd47-4gs8z
- 10.0.24.51 pod: server-6d44dd47-qn4c4
- Lattice 대상그룹에 Pod가 등록되어 있는 것을 확인
- VPC Lattice를 통한 Client to Server 통신 테스트
- AWS Gateway API Controller의 동작 체크
- VPC Lattice를 통해 EKS 클러스터 내의 server pod로 라우팅 할 수 있는 환경을 구성하기 위해서는 EKS 클러스터 내에 GatewayClass, Gateway, Route 리소스를 생성해야 한다.
- AWS Gateway API Controller는 생성된 GatewayClass, Gateway, Route 리소스를 참조하여 필요한 VPC Lattice 네트워크 환경을 구성하게 된다.
- AWS Gateway API Controller의 로그를 lattice.log라는 파일로 저장
kubectl logs deployment/aws-gateway-api-controller-aws-gateway-controller-chart -n aws-application-networking-system --all-containers=true > lattice.log
- EKS 클러스터 내에 GatewayClass, Gateway, Route에 대한 오브젝트가 추가되면 AWS Gateway API Controller에서 이를 감지하여 조정(reconcile)
{"level":"debug","ts":"2025-04-27T13:57:56.867Z","logger":"controller.target-group-policy","caller":"policyhelper/policy.go:252","msg":"add watchers for types: [{ Service}]"}
{"level":"debug","ts":"2025-04-27T13:57:56.867Z","logger":"controller.vpc-association-policy","caller":"policyhelper/policy.go:252","msg":"add watchers for types: [{gateway.networking.k8s.io Gateway}]"}
{"level":"info","ts":"2025-04-27T13:57:56.867Z","logger":"setup","caller":"workspace/main.go:217","msg":"starting manager"}
{"level":"info","ts":"2025-04-27T13:57:56.867Z","logger":"runtime.controller-runtime.metrics","caller":"server/server.go:185","msg":"Starting metrics server"}
{"level":"info","ts":"2025-04-27T13:57:56.867Z","logger":"runtime","caller":"manager/server.go:50","msg":"starting server","kind":"health probe","addr":"[::]:8081"}
I0427 13:57:56.867863 1 leaderelection.go:250] attempting to acquire leader lease aws-application-networking-system/amazon-vpc-lattice.io...
..
..
..
{"level":"debug","ts":"2025-04-27T14:11:56.928Z","logger":"cloud","caller":"aws/cloud.go:65","msg":"response","serviceName":"tagging","operation":"GetResources","params":"{\n ResourceARNList: [\"ar n:aws:vpc-lattice:ap-northeast-2:890742582773:targetgroup/tg-0801dd4146dc6b81a\"]\n}"}
{"level":"info","ts":"2025-04-27T14:11:57.031Z","logger":"controller.route","caller":"gateway/model_build_lattice_service.go:122","msg":"Setting customer-domain-name: server.example.com for route se rver-apps"}
{"level":"debug","ts":"2025-04-27T14:11:57.131Z","logger":"controller.route","caller":"gateway/model_build_lattice_service.go:141","msg":"Added service server-apps to the stack (ID server-apps)"}
{"level":"debug","ts":"2025-04-27T14:11:57.131Z","logger":"controller.route","caller":"gateway/model_build_listener.go:23","msg":"Listener parentRef SectionName is http"}
{"level":"debug","ts":"2025-04-27T14:11:57.132Z","logger":"controller.route","caller":"gateway/model_build_listener.go:26","msg":"Building Listener for Route server-apps"}
{"level":"debug","ts":"2025-04-27T14:11:57.132Z","logger":"controller.route","caller":"gateway/model_build_listener.go:113","msg":"Added listener server-apps to the stack (ID id-30e2286f178f6d12b813 39b408a83399dfca872e50a93aa718b1bdc94a4891ae)"}
{"level":"debug","ts":"2025-04-27T14:11:57.132Z","logger":"controller.route","caller":"gateway/model_build_lattice_service.go:84","msg":"Building rules for 1 listeners"}
{"level":"debug","ts":"2025-04-27T14:11:57.132Z","logger":"controller.route","caller":"gateway/model_build_rule.go:35","msg":"Processing 1 rules"}
{"level":"debug","ts":"2025-04-27T14:11:57.132Z","logger":"controller.route","caller":"gateway/model_build_rule.go:47","msg":"Processing rule match"}
{"level":"debug","ts":"2025-04-27T14:11:57.132Z","logger":"controller.route","caller":"gateway/model_build_rule.go:109","msg":"Examining pathmatch type PathPrefix value / for for httproute server-ap ps "}
{"level":"debug","ts":"2025-04-27T14:11:57.132Z","logger":"controller.route","caller":"gateway/model_build_rule.go:119","msg":"Using PathMatchPathPrefix for httproute server-apps "}
{"level":"debug","ts":"2025-04-27T14:11:57.132Z","logger":"controller.route","caller":"gateway/model_build_rule.go:226","msg":"Processing Service backendRef server-apps"}
{"level":"debug","ts":"2025-04-27T14:11:57.132Z","logger":"controller.route","caller":"gateway/model_build_targetgroup.go:298","msg":"buildTargetGroupSpec, kind Service"}
{"level":"debug","ts":"2025-04-27T14:11:57.339Z","logger":"controller.route","caller":"gateway/model_build_targetgroup.go:264","msg":"Added target group for backendRef server to the stack id-04a226f 32a613389675e703df595c17351b8e9b3a2c73bebba6b151dc58951f4"}
{"level":"debug","ts":"2025-04-27T14:11:57.339Z","logger":"controller.route","caller":"gateway/model_build_targets.go:87","msg":"Processing targets for service server-apps"}
{"level":"debug","ts":"2025-04-27T14:11:57.440Z","logger":"controller.route","caller":"gateway/model_build_rule.go:91","msg":"Added rule 1 to the stack (ID id-5610ea550f80f98120e82830db4bdf3b9dce19f 8074baba6d2e694f6d5dd8d7f)"}
{"level":"debug","ts":"2025-04-27T14:11:57.440Z","logger":"controller.route","caller":"lattice/target_group_synthesizer.go:321","msg":"Route TargetGroup arn:aws:vpc-lattice:ap-northeast-2:8907425827 73:targetgroup/tg-0801dd4146dc6b81a (k8s-apps-server-lvbhxhudni) is up to date"}
{"level":"debug","ts":"2025-04-27T14:11:57.440Z","logger":"controller.route.tg-gc","caller":"deploy/stack_deployer.go:178","msg":"gc stats","delete_attempts":0,"delete_success":0,"duration":0.583860 072}
{"level":"debug","ts":"2025-04-27T14:12:26.909Z","logger":"cloud","caller":"aws/cloud.go:65","msg":"response","serviceName":"VPC Lattice","operation":"ListTargetGroups","params":"{\n\n}"}
{"level":"debug","ts":"2025-04-27T14:12:26.925Z","logger":"cloud","caller":"aws/cloud.go:65","msg":"response","serviceName":"tagging","operation":"GetResources","params":"{\n ResourceARNList: [\"ar n:aws:vpc-lattice:ap-northeast-2:890742582773:targetgroup/tg-0801dd4146dc6b81a\"]\n}"}
{"level":"info","ts":"2025-04-27T14:12:26.925Z","logger":"controller.route","caller":"gateway/model_build_lattice_service.go:122","msg":"Setting customer-domain-name: server.example.com for route se rver-apps"}
{"level":"debug","ts":"2025-04-27T14:12:26.925Z","logger":"controller.route","caller":"gateway/model_build_lattice_service.go:141","msg":"Added service server-apps to the stack (ID server-apps)"}
{"level":"debug","ts":"2025-04-27T14:12:26.925Z","logger":"controller.route","caller":"gateway/model_build_listener.go:23","msg":"Listener parentRef SectionName is http"}
{"level":"debug","ts":"2025-04-27T14:12:26.925Z","logger":"controller.route","caller":"gateway/model_build_listener.go:26","msg":"Building Listener for Route server-apps"}
{"level":"debug","ts":"2025-04-27T14:12:26.925Z","logger":"controller.route","caller":"gateway/model_build_listener.go:113","msg":"Added listener server-apps to the stack (ID id-30e2286f178f6d12b813 39b408a83399dfca872e50a93aa718b1bdc94a4891ae)"}
{"level":"debug","ts":"2025-04-27T14:12:26.925Z","logger":"controller.route","caller":"gateway/model_build_lattice_service.go:84","msg":"Building rules for 1 listeners"}
{"level":"debug","ts":"2025-04-27T14:12:26.925Z","logger":"controller.route","caller":"gateway/model_build_rule.go:35","msg":"Processing 1 rules"}
{"level":"debug","ts":"2025-04-27T14:12:26.925Z","logger":"controller.route","caller":"gateway/model_build_rule.go:47","msg":"Processing rule match"}
{"level":"debug","ts":"2025-04-27T14:12:26.925Z","logger":"controller.route","caller":"gateway/model_build_rule.go:109","msg":"Examining pathmatch type PathPrefix value / for for httproute server-ap ps "}
{"level":"debug","ts":"2025-04-27T14:12:26.925Z","logger":"controller.route","caller":"gateway/model_build_rule.go:119","msg":"Using PathMatchPathPrefix for httproute server-apps "}
{"level":"debug","ts":"2025-04-27T14:12:26.925Z","logger":"controller.route","caller":"gateway/model_build_rule.go:226","msg":"Processing Service backendRef server-apps"}
{"level":"debug","ts":"2025-04-27T14:12:26.925Z","logger":"controller.route","caller":"gateway/model_build_targetgroup.go:298","msg":"buildTargetGroupSpec, kind Service"}
{"level":"debug","ts":"2025-04-27T14:12:26.925Z","logger":"controller.route","caller":"gateway/model_build_targetgroup.go:264","msg":"Added target group for backendRef server to the stack id-04a226f 32a613389675e703df595c17351b8e9b3a2c73bebba6b151dc58951f4"}
{"level":"debug","ts":"2025-04-27T14:12:26.925Z","logger":"controller.route","caller":"gateway/model_build_targets.go:87","msg":"Processing targets for service server-apps"}
{"level":"debug","ts":"2025-04-27T14:12:26.925Z","logger":"controller.route","caller":"gateway/model_build_rule.go:91","msg":"Added rule 1 to the stack (ID id-5610ea550f80f98120e82830db4bdf3b9dce19f 8074baba6d2e694f6d5dd8d7f)"}
{"level":"debug","ts":"2025-04-27T14:12:26.925Z","logger":"controller.route","caller":"lattice/target_group_synthesizer.go:321","msg":"Route TargetGroup arn:aws:vpc-lattice:ap-northeast-2:8907425827 73:targetgroup/tg-0801dd4146dc6b81a (k8s-apps-server-lvbhxhudni) is up to date"}
{"level":"debug","ts":"2025-04-27T14:12:26.925Z","logger":"controller.route.tg-gc","caller":"deploy/stack_deployer.go:178","msg":"gc stats","delete_attempts":0,"delete_success":0,"duration":0.069680 874}
{"level":"debug","ts":"2025-04-27T14:12:56.916Z","logger":"cloud","caller":"aws/cloud.go:65","msg":"response","serviceName":"VPC Lattice","operation":"ListTargetGroups","params":"{\n\n}"}
{"level":"debug","ts":"2025-04-27T14:12:56.937Z","logger":"cloud","caller":"aws/cloud.go:65","msg":"response","serviceName":"tagging","operation":"GetResources","params":"{\n ResourceARNList: [\"ar n:aws:vpc-lattice:ap-northeast-2:890742582773:targetgroup/tg-0801dd4146dc6b81a\"]\n}"}
{"level":"info","ts":"2025-04-27T14:12:56.937Z","logger":"controller.route","caller":"gateway/model_build_lattice_service.go:122","msg":"Setting customer-domain-name: server.example.com for route se rver-apps"}
{"level":"debug","ts":"2025-04-27T14:12:56.938Z","logger":"controller.route","caller":"gateway/model_build_lattice_service.go:141","msg":"Added service server-apps to the stack (ID server-apps)"}
{"level":"debug","ts":"2025-04-27T14:12:56.938Z","logger":"controller.route","caller":"gateway/model_build_listener.go:23","msg":"Listener parentRef SectionName is http"}
{"level":"debug","ts":"2025-04-27T14:12:56.938Z","logger":"controller.route","caller":"gateway/model_build_listener.go:26","msg":"Building Listener for Route server-apps"}
{"level":"debug","ts":"2025-04-27T14:12:56.938Z","logger":"controller.route","caller":"gateway/model_build_listener.go:113","msg":"Added listener server-apps to the stack (ID id-30e2286f178f6d12b813 39b408a83399dfca872e50a93aa718b1bdc94a4891ae)"}
{"level":"debug","ts":"2025-04-27T14:12:56.938Z","logger":"controller.route","caller":"gateway/model_build_lattice_service.go:84","msg":"Building rules for 1 listeners"}
{"level":"debug","ts":"2025-04-27T14:12:56.938Z","logger":"controller.route","caller":"gateway/model_build_rule.go:35","msg":"Processing 1 rules"}
{"level":"debug","ts":"2025-04-27T14:12:56.938Z","logger":"controller.route","caller":"gateway/model_build_rule.go:47","msg":"Processing rule match"}
{"level":"debug","ts":"2025-04-27T14:12:56.938Z","logger":"controller.route","caller":"gateway/model_build_rule.go:109","msg":"Examining pathmatch type PathPrefix value / for for httproute server-ap ps "}
{"level":"debug","ts":"2025-04-27T14:12:56.938Z","logger":"controller.route","caller":"gateway/model_build_rule.go:119","msg":"Using PathMatchPathPrefix for httproute server-apps "}
{"level":"debug","ts":"2025-04-27T14:12:56.938Z","logger":"controller.route","caller":"gateway/model_build_rule.go:226","msg":"Processing Service backendRef server-apps"}
{"level":"debug","ts":"2025-04-27T14:12:56.938Z","logger":"controller.route","caller":"gateway/model_build_targetgroup.go:298","msg":"buildTargetGroupSpec, kind Service"}
{"level":"debug","ts":"2025-04-27T14:12:56.938Z","logger":"controller.route","caller":"gateway/model_build_targetgroup.go:264","msg":"Added target group for backendRef server to the stack id-04a226f 32a613389675e703df595c17351b8e9b3a2c73bebba6b151dc58951f4"}
{"level":"debug","ts":"2025-04-27T14:12:56.938Z","logger":"controller.route","caller":"gateway/model_build_targets.go:87","msg":"Processing targets for service server-apps"}
{"level":"debug","ts":"2025-04-27T14:12:56.938Z","logger":"controller.route","caller":"gateway/model_build_rule.go:91","msg":"Added rule 1 to the stack (ID id-5610ea550f80f98120e82830db4bdf3b9dce19f 8074baba6d2e694f6d5dd8d7f)"}
{"level":"debug","ts":"2025-04-27T14:12:56.938Z","logger":"controller.route","caller":"lattice/target_group_synthesizer.go:321","msg":"Route TargetGroup arn:aws:vpc-lattice:ap-northeast-2:8907425827 73:targetgroup/tg-0801dd4146dc6b81a (k8s-apps-server-lvbhxhudni) is up to date"}
{"level":"debug","ts":"2025-04-27T14:12:56.938Z","logger":"controller.route.tg-gc","caller":"deploy/stack_deployer.go:178","msg":"gc stats","delete_attempts":0,"delete_success":0,"duration":0.081598 838}
{"level":"debug","ts":"2025-04-27T14:13:26.902Z","logger":"cloud","caller":"aws/cloud.go:65","msg":"response","serviceName":"VPC Lattice","operation":"ListTargetGroups","params":"{\n\n}"}
{"level":"debug","ts":"2025-04-27T14:13:26.925Z","logger":"cloud","caller":"aws/cloud.go:65","msg":"response","serviceName":"tagging","operation":"GetResources","params":"{\n ResourceARNList: [\"ar n:aws:vpc-lattice:ap-northeast-2:890742582773:targetgroup/tg-0801dd4146dc6b81a\"]\n}"}
{"level":"debug","ts":"2025-04-27T14:13:26.925Z","logger":"controller.route","caller":"lattice/target_group_synthesizer.go:184","msg":"TargetGroup arn:aws:vpc-lattice:ap-northeast-2:890742582773:tar getgroup/tg-0801dd4146dc6b81a (k8s-apps-server-lvbhxhudni) is referenced by lattice service"}
{"level":"debug","ts":"2025-04-27T14:13:26.925Z","logger":"controller.route.tg-gc","caller":"deploy/stack_deployer.go:178","msg":"gc stats","delete_attempts":0,"delete_success":0,"duration":0.068585 611}
{"level":"debug","ts":"2025-04-27T14:13:56.908Z","logger":"cloud","caller":"aws/cloud.go:65","msg":"response","serviceName":"VPC Lattice","operation":"ListTargetGroups","params":"{\n\n}"}
{"level":"debug","ts":"2025-04-27T14:13:56.932Z","logger":"cloud","caller":"aws/cloud.go:65","msg":"response","serviceName":"tagging","operation":"GetResources","params":"{\n ResourceARNList: [\"ar n:aws:vpc-lattice:ap-northeast-2:890742582773:targetgroup/tg-0801dd4146dc6b81a\"]\n}"}
{"level":"debug","ts":"2025-04-27T14:13:56.933Z","logger":"controller.route","caller":"lattice/target_group_synthesizer.go:184","msg":"TargetGroup arn:aws:vpc-lattice:ap-northeast-2:890742582773:tar getgroup/tg-0801dd4146dc6b81a (k8s-apps-server-lvbhxhudni) is referenced by lattice service"}
{"level":"debug","ts":"2025-04-27T14:13:56.933Z","logger":"controller.route.tg-gc","caller":"deploy/stack_deployer.go:178","msg":"gc stats","delete_attempts":0,"delete_success":0,"duration":0.076571 246}
{"level":"debug","ts":"2025-04-27T14:14:26.907Z","logger":"cloud","caller":"aws/cloud.go:65","msg":"response","serviceName":"VPC Lattice","operation":"ListTargetGroups","params":"{\n\n}"}
{"level":"debug","ts":"2025-04-27T14:14:26.925Z","logger":"cloud","caller":"aws/cloud.go:65","msg":"response","serviceName":"tagging","operation":"GetResources","params":"{\n ResourceARNList: [\"ar n:aws:vpc-lattice:ap-northeast-2:890742582773:targetgroup/tg-0801dd4146dc6b81a\"]\n}"}
{"level":"debug","ts":"2025-04-27T14:14:26.925Z","logger":"controller.route","caller":"lattice/target_group_synthesizer.go:184","msg":"TargetGroup arn:aws:vpc-lattice:ap-northeast-2:890742582773:tar getgroup/tg-0801dd4146dc6b81a (k8s-apps-server-lvbhxhudni) is referenced by lattice service"}
{"level":"debug","ts":"2025-04-27T14:14:26.925Z","logger":"controller.route.tg-gc","caller":"deploy/stack_deployer.go:178","msg":"gc stats","delete_attempts":0,"delete_success":0,"duration":0.069091 471}
{"level":"debug","ts":"2025-04-27T14:14:56.907Z","logger":"cloud","caller":"aws/cloud.go:65","msg":"response","serviceName":"VPC Lattice","operation":"ListTargetGroups","params":"{\n\n}"}
{"level":"debug","ts":"2025-04-27T14:14:56.933Z","logger":"cloud","caller":"aws/cloud.go:65","msg":"response","serviceName":"tagging","operation":"GetResources","params":"{\n ResourceARNList: [\"ar n:aws:vpc-lattice:ap-northeast-2:890742582773:targetgroup/tg-0801dd4146dc6b81a\"]\n}"}
{"level":"debug","ts":"2025-04-27T14:14:56.933Z","logger":"controller.route","caller":"lattice/target_group_synthesizer.go:184","msg":"TargetGroup arn:aws:vpc-lattice:ap-northeast-2:890742582773:tar getgroup/tg-0801dd4146dc6b81a (k8s-apps-server-lvbhxhudni) is referenced by lattice service"}
- 로그를 보면, server라는 이름의 service와 my-services라는 이름의 gateway의 생성을 감지하여, reconcile 작업을 수행하는 것을 확인할 수 있습니다.
- 이어서 server-apps라는 이름(HTTPRoute의 metadata.name 및 metadata.namespace를 사용)으로 구성된 Route 대상에 라우팅 하기 위해 server.example.com이라는 사용자 지정 도메인 이름을 세팅하고, VPC Lattice Service를 구성합니다.
- 그리고 VPC Lattice Service에 대해 Listener rule을 생성하고 HTTPRoute 매니페스트 내용에 맞춰 PathPrefix를 구성하고, backendRefs에 대한 대상 그룹을 생성합니다.
- 대상 그룹에는 Service를 참조하여 라우팅 대상 Pod의 IP 주소 및 Port 번호를 세팅합니다.
- 실습 리소스 정리
terraform destroy -target="module.client_vpc" -auto-approve
terraform destroy -target="module.cluster_vpc" -auto-approve
terraform destroy -target=aws_route53_zone.primary -auto-approve
terraform destroy -target="module.client_sg" -auto-approve
terraform destroy -target="module.endpoint_sg" -auto-approve
terraform destroy -target="module.client" -auto-approve
terraform destroy -target="module.vpc_endpoints" -auto-approve
terraform destroy -target="module.eks" -auto-approve
terraform destroy -target="module.addons" -auto-approve
terraform destroy -auto-approve
728x90
'2025_AEWS Study' 카테고리의 다른 글
11주차 - ML Infra(GPU) on EKS(1) (0) | 2025.04.28 |
---|---|
12주차 - Amazon VPC Lattice for Amazon EKS(2) (0) | 2025.04.28 |
10주차 - K8s 시크릿 관리 Update(5) (0) | 2025.04.14 |
10주차 - K8s 시크릿 관리 Update(4) (0) | 2025.04.14 |
10주차 - K8s 시크릿 관리 Update(3) (0) | 2025.04.13 |