📂
Amazon EKS
  • Amazon EKS
  • 워크스페이스 생성하기
    • Cloud9 IDE 환경 구성
    • IAM 역할 생성
    • SSH & CMK Key 생성하기
  • EKS 클러스터 구축
    • EKS 클러스터 만들기
  • 쿠버네티스 대시보드 배포
    • Kubernetes 공식 대시보드 배포
  • 마이크로서비스 배포
    • 예제 애플리케이션 배포
    • 서비스 스케일(Scaling)
    • 애플리케이션 정리하기
  • 애플리케이션 배포 - Helm
    • HELM 설치
    • Helm으로 Nginx 배포
    • Helm을 사용하여 마이크로서비스 배포
    • 정리하기
  • 리소스 관리 - POD 배치
    • NodeSelector
    • Affinity and Anti-affinity
    • 더 실용적인 사용 사례
    • 정리하기
  • 리소스 관리 - Health Checks
    • Liveness 프로브 구성
    • Readiness 프로브 구성
    • 정리하기
  • 리소스 관리 - AutoScaling
    • HPA 구성하기
    • CA 구성하기
    • 정리하기
  • 네트워킹 - 서비스 노출
    • 서비스와 애플리케이션 연결
    • 서비스에 접근하기
    • 서비스 노출
    • Ingress
    • Ingress Controller
    • 정리하기
  • 네트워크 - Calico 정책
    • Calico 설치하기
    • Stars Policy Demo
    • 정리하기
  • Updating 권한설정 - RBAC
    • 테스트 POD 설치
    • 사용자 생성 및 맵핑
    • 역할과 바인딩
    • 정리하기
  • Updating 권한설정 - IAM 그룹
    • IAM Role, Group & User 생성하기
    • RBAC 설정하기
    • EKS 엑세스 테스트
    • 정리하기
  • Updating 권한설정 - Service account
    • OIDC 자격 증명 공급자 생성하기
    • IAM 역할 생성 및 지정
    • 샘플 POD 배포
    • 정리하기
  • Updating - 네트워크 - POD Security Group
    • SG 생성하기
    • RDS 생성하기
    • CNI 구성하기
    • SG 정책
    • Pod 배포하기
    • 정리하기
  • Updating - 모니터링 - Prometheus and Grafana
    • Prometheus 배포하기
    • Grafana 배포하기
    • 정리하기(Optional)
  • Updating 모니터링 - X-Ray
    • X-Ray DaemonSet 배포하기
    • 샘플 마이크로서비스 배포
    • X-Ray console 확인
    • 정리하기(Optional)
  • Updating 모니터링 - Container Insights
    • 사전 준비
    • Container Insights 구성하기
    • 부하 테스트
    • Container Insights 확인하기
    • 정리하기(Optional)
  • Updating CD - Gitops with Flux
    • 사전 준비
    • Codepipeline
    • EKS에 배포
    • 정리하기
  • Updating Argo Rollouts
  • Updating Service Mesh - AWS App Mesh
    • Fargate 및 OBSERVABILITY 구성
    • Product Catalog App 배포
    • APP MESH 설치
    • Porting to APP MESH
    • Virtual Gateway 구성
    • Canary
    • Observability
  • Updating 버전 업그레이드 - EKS Cluster
    • Upgrade EKS control Plane
    • Upgrade EKS CORE ADD-ONs
    • Upgrade Managed Node Group
Powered by GitBook
On this page
  • 1. Virtual GW 구성
  • 2. Virtual Gateway 테스트

Was this helpful?

  1. Updating Service Mesh - AWS App Mesh

Virtual Gateway 구성

PreviousPorting to APP MESHNextCanary

Last updated 3 years ago

Was this helpful?

를 사용하면 Mesh 외부에 있는 리소스가 Mesh 내부에 있는 리소스와 통신할 수 있습니다. VirtualGateway는 Amazon EC2 인스턴스, Amazon ECS 서비스, Amazon EKS 서비스에서 실행되는 Envoy 프록시를 나타냅니다. 애플리케이션으로 실행되는 Envoy를 나타내는 VirtualNode와 달리 VirtualGateway는 자체적으로 배포되는 Envoy를 나타냅니다.

외부 리소스는 DNS 이름을 resolve하여 Envoy가 실해되는 서비스 또는 인스턴스에 할당된 IP 주소로 확인할 수 있어야 합니다. 그런 다음 모든 App Mesh 구성에 접근하여 Mesh 내부에 있는 리소스를 확인할 수 있습니다.

VirtualGateway에서 수신 요청을 처리하는 구성은 게이트웨이 경로를 사용하여 지정됩니다. VirtualGateways는 로드 밸런서와 관련이 있으며 VirtualRouter 구성과 유사한 경로를 사용하여 수신 트래픽 규칙을 구성할 수 있습니다.

1. Virtual GW 구성

지금까지 서비스 간 통신이 Envoy 프록시를 통해 라우팅 된다는 것을 확인했으며, AWS App Mesh VirtualGateway를 사용하여 프런트엔드 서비스 frontend-node를 공개합니다.

kubectl apply -f deployment/virtual_gateway.yaml 

Virtual Gateway는 ingress-gw 라는 이름으로 확인할 수 있습니다.

kubectl get all  -n prodcatalog-ns -o wide | grep ingress

콘솔의 App Mesh 메뉴에서도 확인할 수 있습니다.

2. Virtual Gateway 테스트

Load balancer의 Endpoint로 Virtual Gateway로 접속되는지 확인합니다. (Virtual Gateway가 active 될때 까지는 5분 정도가 소요됩니다.)

export LB_NAME=$(kubectl get svc ingress-gw -n prodcatalog-ns -o jsonpath="{.status.loadBalancer.ingress[*].hostname}") 
 curl -v --silent ${LB_NAME} | grep x-envoy
echo $LB_NAME

새로운 browser 창에 Loadbalancer endpoint 을 복사하여 붙여 넣기 하여 아래 화면을 확인합니다.

Table with ID as 1 을 넣어 Add하 Product를 Product Catalog에 추가 합니다.

제품 카탈로그 표에 추가된 새 제품 Table이 나타납니다. proddetail 백엔드 서비스에서 공급업체 정보를 가져온 카탈로그 세부 정보도 볼 수 있습니다.

새 버전의 Prodetail-v2를 추가하고 가상 라우터에 새 구성을 추가하여 Catalog Detail service proddetail-v1과 proddetail-v2의 다른 버전 간에 트래픽을 이동함으로써 Canary Deployment를 사용해 보겠습니다.

아래 그림과 같이 의 VirtualGateway 구성 요소를 생성합니다. 이렇게 하면 로드 밸런서 타입의 kubernetes 서비스가 생성되고 AWS Network Load Balancer 를 사용하여 외부 인터넷 트래픽을 라우팅합니다.

virtual_gateway.yaml
VirtualGateway