๐Ÿ“‚
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. Mesh Design
  • 2. Mesh Resource
  • 3. Meshed Application ์ƒ์„ฑ
  • 4. SIDECAR INJECTION
  • 5. APPLICATION TEST

Was this helpful?

  1. Updating Service Mesh - AWS App Mesh

Porting to APP MESH

PreviousAPP MESH ์„ค์น˜NextVirtual Gateway ๊ตฌ์„ฑ

Last updated 3 years ago

Was this helpful?

์ œํ’ˆ ์นดํƒˆ๋กœ๊ทธ ํ”„๋ŸฐํŠธ์—”๋“œ frontend-node๋Š” prodcatalog์— ๋Œ€ํ•œ ์š”์ฒญ์„ ํ•˜๋„๋ก hardwired ๋˜์—ˆ์œผ๋ฉฐ prodcatalog๋Š” proddetail์— ๋Œ€ํ•œ ์š”์ฒญ์„ ํ•˜๋„๋ก hardwired๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ ๋ฒ„์ „์˜ proddetail ๋ฆด๋ฆฌ์Šค๊ฐ€ ์žˆ์„ ๋•Œ๋งˆ๋‹ค ๋ฒ„์ „๋ณ„ ์—”๋“œํฌ์ธํŠธ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ์ƒˆ ๋ฒ„์ „๊ณผ ์ด์ „ ๋ฒ„์ „์„ ๋ชจ๋‘ ์ง€์›ํ•˜๋Š” ์ƒˆ ๋ฒ„์ „์˜ prodcatalog๋„ ๋ฆด๋ฆฌ์Šคํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์žฅ๊ธฐ์ ์œผ๋กœ ์œ ์ง€ํ•˜๊ธฐ์— ์ตœ์ ์˜ ๊ตฌ์„ฑ์€ ์•„๋‹™๋‹ˆ๋‹ค.

prodcatalog ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๊ฐ€ Faragate์— ๋ฐฐํฌ๋˜๊ณ  ๋‚˜๋จธ์ง€ ์„œ๋น„์Šค frontend-node์™€ proddetail์€ ๊ด€๋ฆฌ ๋…ธ๋“œ ๊ทธ๋ฃน์— ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ๋ชจ๋“  ์„œ๋น„์Šค๋ฅผ App Mesh์— ์ถ”๊ฐ€ํ•˜๊ณ  ์ด๋Ÿฌํ•œ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๊ฐ€ ์„œ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ AWS App Mesh๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‹ค์Šตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. proddetail ์„œ๋น„์Šค๋ฅผ ๊ฐ€์ƒํ™”ํ•จ์œผ๋กœ์จ ๋™์  ๊ตฌ์„ฑ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์›ํ•˜๋Š” ๋ฒ„์ „์˜ ์—”๋“œํฌ์ธํŠธ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๋ผ์šฐํŒ…ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์ƒˆ๋กœ์šด proddetail ์„œ๋น„์Šค ๋ฆด๋ฆฌ์Šค๊ฐ€ ์žˆ์„ ๋•Œ๋งˆ๋‹ค prodcatalog ์„œ๋น„์Šค์˜ ์žฌ๊ตฌ์ถ• ํ•„์š”์„ฑ์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ Nodegroup๊ณผ Fargate์˜ ๋ชจ๋“  ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๊ฐ€ App Mesh๋ฅผ ํ†ตํ•ด ์„œ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์‹œ์—ฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ์žฅ์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ํฌํŒ…์ด ์™„๋ฃŒ๋˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

1. Mesh Design

์œ„์˜ ์ด๋ฏธ์ง€์—์„œ ์ œํ’ˆ ์นดํƒˆ๋กœ๊ทธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ชจ๋“  ์„œ๋น„์Šค๊ฐ€ App Mesh ๋‚ด์—์„œ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์„œ๋น„์Šค์—๋Š” VirtualNode๊ฐ€ ์ •์˜๋˜์–ด ์žˆ์œผ๋ฉฐ, VirtualService๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ VirtualServices๋Š” ํŠธ๋ž˜ํ”ฝ์„ Mesh ๋‚ด์˜ VirtualRouter๋กœ ์ „์†กํ•˜๋ฉฐ, VirtualRouter๋Š” ๋ผ์šฐํŒ… ๊ทœ์น™์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํŠธ๋ž˜ํ”ฝ์ด ๊ฐ๊ฐ์˜ VirtualNode๋กœ ์ด๋™ํ•˜๋ฉฐ ๊ถ๊ทน์ ์œผ๋กœ๋Š” Kubernetes ๋‚ด์˜ ์„œ๋น„์Šค ์—”๋“œํฌ์ธํŠธ๋กœ ์ด๋™ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • ๊ธฐ๋Šฅ์ ์œผ๋กœ, Mesh-enabled ๋ฒ„์ „์€ ํ˜„์žฌ ๋ฒ„์ „์˜ ๊ธฐ๋Šฅ์„ ์ •ํ™•ํžˆ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    • frontend-node ์—์„œ ๋งŒ๋“  ์š”์ฒญ์€ prodcatalog ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

    • prodcatalog์—์„œ ๋งŒ๋“  ์š”์ฒญ์€ prodetail-v1 ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์—์„œ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

  • ์ฐจ์ด์ ์€ AWS App Mesh๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Prodcatalog์™€ Prodetail์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ๊ฐ€์ƒ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    • frontend-node ์„œ๋น„์Šค์—์„œ ์š”์ฒญ์„ ํ•˜๋ฉด ํŠธ๋ž˜ํ”ฝ์„ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์˜ ์„œ๋น„์Šค ์—”๋“œํฌ์ธํŠธ๋กœ ๋ผ์šฐํŒ…ํ•˜๋„๋ก ๊ตฌ์„ฑ๋œ VirtualRouter ์ธ์Šคํ„ด์Šค๋กœ ๋…ผ๋ฆฌ์ ์œผ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ์ „์†กํ•˜์—ฌ ์นดํƒˆ๋กœ๊ทธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    • Prodcatalog ์„œ๋น„์Šค์˜ ์š”์ฒญ์€ ํŠธ๋ž˜ํ”ฝ์„ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์˜ ์„œ๋น„์Šค ์—”๋“œํฌ์ธํŠธ๋กœ ๋ผ์šฐํŒ…ํ•˜๋„๋ก ๊ตฌ์„ฑํ•  VirtualRouter ์ธ์Šคํ„ด์Šค๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๋…ผ๋ฆฌ์ ์œผ๋กœ ์ „์†กํ•˜์—ฌ prodetail-v1๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

2. Mesh Resource

Mesh

VirtualNode

podSelector๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด VirtualNode์˜ ๋ฉค๋ฒ„์ธ Pod์™€ frontend-node Service์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

VirtualService and VirtualRouter

3. Meshed Application ์ƒ์„ฑ

App Mesh Labels ๊ณผ ํ•จ๊ป˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  Mesh Object๋ฅผ ๋ฐฐํฌ ํ•ฉ๋‹ˆ๋‹ค.

kubectl apply -f deployment/mesh.yaml  

Confirm the Mesh object and Namespace are created

kubectl describe namespace prodcatalog-ns
kubectl describe mesh prodcatalog-mesh

์„œ๋น„์Šค์— ํ•„์š”ํ•œ App Mesh Resources๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

kubectl apply -f deployment/meshed_app.yaml

๋ชจ๋“  Mesh ์ž์›์ด ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

kubectl get virtualnode,virtualservice,virtualrouter -n prodcatalog-ns

์ฝ˜์†”์˜ AWS App Mesh ๋ฉ”๋‰ด์—์„œ ์ž์›์˜ ์ •๋ณด๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

4. SIDECAR INJECTION

Application๋‚ด์˜ Pod๊ฐ€ mesh์— ์—ฐ๊ฒฐ๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Pod ๋‚ด์— sidecar๋กœ ๋™์ž‘ํ•˜๋Š” Envoy proxy container๊ฐ€ ์กด์žฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด AWS App mesh๊ฐ€ ์ œ์–ดํ•˜๋Š” data plane์ด ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

SIDECAR INJECTION์„ ์œ„ํ•œ ๋ช‡ใ„ฑ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„ค์น˜ํ•˜๊ธฐ ์ „์— ์ œํ’ˆ ์นดํƒˆ๋กœ๊ทธ ์•ฑ Deployment spec์„ App Mesh ์‚ฌ์ด๋“œ์นด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํฌํ•จํ•˜๋„๋ก ์ˆ˜์ •ํ•˜๊ณ  ๋ช‡ ๊ฐ€์ง€ ํ•„์ˆ˜ ๊ตฌ์„ฑ ์š”์†Œ ๋ฐ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํฌ๋“œ๊ฐ€ ์ „๊ฐœ๋˜๋ฉด ์‚ฌ์ด๋“œ์นด๊ฐ€ ์ž‘๋™๋ฉ๋‹ˆ๋‹ค.

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„ค์น˜ํ•œ ํ›„ ์‚ฌ์ด๋“œ์นด ์ปจํ…Œ์ด๋„ˆ specs์„ ํฌํ•จํ•˜๋„๋ก ๊ฐ Deployment๋ฅผ ํŒจ์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํŒจ์น˜๋ฅผ ์ ์šฉํ•˜๋ฉด, ์˜ค๋ž˜๋œ ํฌ๋“œ๋Š” ์‚ฌ๋ผ์ง€๊ณ , ์ƒˆ๋กœ์šด ํฌ๋“œ๋Š” ์‚ฌ์ด๋“œ์นด๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • Mesh ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ AWS App Mesh Sidecar Injector๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์žฅ์น˜๋Š” ์ƒˆ ํฌ๋“œ๊ฐ€ ์ƒ์„ฑ๋˜๋Š”์ง€ ๊ฐ์‹œํ•˜๊ณ  ๋ฐฐ์น˜๋  ๋•Œ ์ž๋™์œผ๋กœ ์‚ฌ์ด๋“œ์นด ์ปจํ…Œ์ด๋„ˆ์™€ ํ•„์š”ํ•œ ๊ตฌ์„ฑ์„ ํฌ๋“œ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

kubectl get pods -n prodcatalog-ns -o wide

๊ฐ„๋‹จํ•˜๊ฒŒ deployment๋ฅผ ์žฌ์‹œ์ž‘ํ•˜์—ฌ sidecar ํ”„๋ก์‹œ injection์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubectl -n prodcatalog-ns rollout restart deployment prodcatalog

kubectl -n prodcatalog-ns rollout restart deployment proddetail 

kubectl -n prodcatalog-ns rollout restart deployment frontend-node

Pod detail์—์„œ ๊ฐ Pod์— main application container, envoy sidecar container and xray sidecar container ์ด๋ ‡๊ฒŒ 3๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

POD=$(kubectl -n prodcatalog-ns get pods -o jsonpath='{.items[0].metadata.name}')
kubectl -n prodcatalog-ns get pods ${POD} -o jsonpath='{.spec.containers[*].name}'; echo

5. APPLICATION TEST

Mesh์— porting๋œ Product Catalog App ์ด ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด frontend-node ์ปจํ…Œ์ด๋„ˆ์— ์ ‘์†ํ•˜์—ฌ ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

export FE_POD_NAME=$(kubectl get pods -n prodcatalog-ns -l app=frontend-node -o jsonpath='{.items[].metadata.name}') 

kubectl -n prodcatalog-ns exec -it ${FE_POD_NAME} -c frontend-node bash

port 5000์„ ์‚ฌ์šฉํ•˜๋Š” virtual service prodcatalog ์— curl์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

curl -v http://prodcatalog.prodcatalog-ns.svc.cluster.local:5000/products/    

์ด๋ฒˆ์—๋Š” prodcatalog์™€ proddetail ๊ฐ„์˜ ์—ฐ๊ฒฐ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. (ctrl+d ๋กœ container์—์„œ ๋น ์ ธ๋‚˜์˜ต๋‹ˆ๋‹ค.)

export BE_POD_NAME=$(kubectl get pods -n prodcatalog-ns -l app=prodcatalog -o jsonpath='{.items[].metadata.name}') 

kubectl -n prodcatalog-ns exec -it ${BE_POD_NAME} -c prodcatalog bash
curl -v http://proddetail.prodcatalog-ns.svc.cluster.local:3000/catalogDetail 

์ด์ œ End-user์—๊ฒŒ ์„œ๋น„์Šค๋ฅผ ๋…ธ์ถœ ์‹œํ‚ฌ VirtualGateway๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

Product Catalog App์„ App Mesh๋กœ ํฌํŒ…ํ•˜๋ ค๋ฉด ๋จผ์ € Mesh๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ Prodcatalog-ns ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— Label์„ ์ ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด Mesh์™€ ์ œํœดํ•˜๊ณ  ๊ทธ ์•ˆ์— ์žˆ๋Š” Pod์˜ ์ž๋™ sidecar injection์ž…์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ์žฅ์—์„œ VirtualGateway ์„ค์ •์— ์‚ฌ์šฉํ•  ๊ฒŒ์ดํŠธ์›จ์ด Label๋„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์— ํ‘œ์‹œ๋œ ์„น์…˜์„ ๋ณด๋ฉด prodcatalog-ns ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ํ•„์š”ํ•œ Label์„ ์ถ”๊ฐ€ํ•˜๊ณ  prodcatalog-mesh๋ผ๋Š” ์ด๋ฆ„์˜ Mesh๋ฅผ ์ง€์ •ํ–ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

App Mesh ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” Kubernetes ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ์ฒด๋ฅผ VirtualNode๋กœ ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด App Mesh๊ฐ€ Kubernetes Deployments ๋ฐ Services์™€ ๊ฐ™์€ ๊ฐœ์ฒด์— ์ถ”์ƒํ™”๋ฅผ ์ œ๊ณตํ•˜๊ณ  ํ†ต์‹  ๋ฐ ๋ผ์šฐํŒ… ๊ตฌ์„ฑ์„ ์œ„ํ•œ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์„ ์‚ดํŽด๋ณด๋ฉด, ์•„๋ž˜๋Š” frontend-node ์„œ๋น„์Šค์˜ VirtualNode spec์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ฐ ์ œํ’ˆ ์นดํƒˆ๋กœ๊ทธ ์„ธ๋ถ€ ์ •๋ณด ๋ฒ„์ „์—๋Š” VirtualService ๋ฐ VirtualRouter spec์ด ์žˆ์–ด ๊ฐ ์—”๋“œํฌ์ธํŠธ๋กœ์˜ ํŠธ๋ž˜ํ”ฝ ๋ผ์šฐํŒ…์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ Prodetail-v1 ๊ฐ€์ƒ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒฝ๋กœ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. App Mesh๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•œ ๋…ผ๋ฆฌ์  ์„œ๋น„์Šค ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” VirtualService ๊ตฌ์„ฑ๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์—์„œ๋Š” VirtualRouter๋กœ ํŠธ๋ž˜ํ”ฝ์„ ์ „์†กํ•œ ๋‹ค์Œ VirtualNode๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค. ์„ ๋ณด๋ฉด ์•„๋ž˜๋Š” ํŠธ๋ž˜ํ”ฝ์„ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค prodetail-v1 ๋ฒ„์ „ 1๋กœ ๋ผ์šฐํŒ…ํ•˜๋Š” Prodetail VirtualService ๋ฐ VirtualRouter์ž…๋‹ˆ๋‹ค.

์ด ์‹ค์Šต์—์„œ๋Š” ์„ธ ๋ฒˆ์งธ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ Mesh ํฌ๋“œ์— ์ž๋™ ์‚ฌ์ด๋“œ์นด ์ฃผ์ž…์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. Labels: appmesh.k8s.aws/sidecarInjectorWebhook=enabled๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ž๋™ ์‚ฌ์ด๋“œ์นด ์ฃผ์ž…์„ ํ™œ์„ฑํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์—์„œ Mesh ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ prodcatalog-ns ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ์ดˆ๊ธฐ ํฌ๋“œ ์ƒ์„ฑ ํ›„ ์ด ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ, ์šฐ๋ฆฌ์˜ ํฌ๋“œ๋“ค์€ ๊ฐ๊ฐ ํ•˜๋‚˜์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ฐ€๋™ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

mesh.yaml
meshed_app.yaml
meshed_app.yaml
์ด์ „ ์žฅ