xDS ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ API

Cloud Service Mesh ๋ฐ ํด๋ผ์ด์–ธํŠธ(Envoy ํ”„๋ก์‹œ ๋˜๋Š” ํ”„๋ก์‹œ๋ฆฌ์Šค gRPC ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)๋Š” ์˜คํ”ˆ์†Œ์Šค xDS API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •๋ณด๋ฅผ ๊ตํ™˜ํ•ฉ๋‹ˆ๋‹ค. Cloud Service Mesh๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉด(์˜ˆ: ์ „๋‹ฌ ๊ทœ์น™ ๋ฐ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์™€ ๊ฐ™์€ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ) Cloud Service Mesh์—์„œ ์ด๋Ÿฌํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ xDS ๊ตฌ์„ฑ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ์™€ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

xDS ๋ฒ„์ „ ์ง€์›

Cloud Service Mesh๋Š” xDS v3๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ค Envoy ๋ฐ gRPC ๋ฒ„์ „์—์„œ xDS v3๋ฅผ ์ง€์›ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด Envoy ๋ฐ gRPC ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์•„์ง xDS v2๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ ์•ˆ๋‚ด์— ๋”ฐ๋ผ xDS v3์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜์„ธ์š”.

xDS v2์—์„œ xDS v3๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ”„๋กœ์„ธ์Šค์—๋Š” ๋‘ ๊ฐ€์ง€ ๋‹จ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. Cloud Service Mesh์— ์—ฐ๊ฒฐํ•  ๋•Œ ํด๋ผ์ด์–ธํŠธ(Envoy ํ”„๋ก์‹œ ๋˜๋Š” ํ”„๋ก์‹œ๋ฆฌ์Šค gRPC ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋น„์Šค ๊ณ„์ •์— ๋ถ€์—ฌ๋œ Identity and Access Management(IAM) ๊ถŒํ•œ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
  2. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ๋‹ค์‹œ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์ธ ๋‹จ๊ณ„๋Š” ๋ฐฐํฌ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋ฉฐ ๋‹ค์Œ ์„น์…˜์—์„œ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๊ณ„์ •์˜ IAM ๊ถŒํ•œ ์—…๋ฐ์ดํŠธ

Cloud Service Mesh ํด๋ผ์ด์–ธํŠธ(Envoy, ํ”„๋ก์‹œ๋ฆฌ์Šค gRPC)์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋น„์Šค ๊ณ„์ •์— trafficdirector.networks.reportMetrics ๋ฐ trafficdirector.networks.getConfigs ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ถŒํ•œ์€ IAM Cloud Service Mesh ํด๋ผ์ด์–ธํŠธ ์—ญํ• (roles/trafficdirector.client)์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ปค์Šคํ…€ IAM ์—ญํ• ์„ ์‚ฌ์šฉ ์ค‘์ธ ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ๊ถŒํ•œ์„ ์ปค์Šคํ…€ ์—ญํ• ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ถŒํ•œ์„ ์ถ”๊ฐ€ํ•œ ํ›„ ์„œ๋น„์Šค ๊ณ„์ •์—์„œ Compute ๋„คํŠธ์›Œํฌ ๋ทฐ์–ด ์—ญํ• (roles/compute.networkViewer), Compute ๋„คํŠธ์›Œํฌ ๊ด€๋ฆฌ์ž ์—ญํ• (roles/compute.networkAdmin) ๋˜๋Š” ๋‘˜ ๋‹ค ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Compute ๋ทฐ์–ด ์—ญํ• (roles/compute.networkViewer) ๋˜๋Š” Compute ๋„คํŠธ์›Œํฌ ๊ด€๋ฆฌ์ž ์—ญํ• (roles/compute.networkAdmin) ๋Œ€์‹  Cloud Service Mesh ํด๋ผ์ด์–ธํŠธ ์—ญํ• ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. Cloud Service Mesh ํด๋ผ์ด์–ธํŠธ ์—ญํ• ์„ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋น„์Šค ๊ณ„์ •์— ๋ถ€์—ฌ๋œ ๊ถŒํ•œ์ด ์ œํ•œ๋˜๊ณ  ์ง€๋‚˜์น˜๊ฒŒ ๋‹ค์–‘ํ•œ ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์—…๋ฐ์ดํŠธ

์„œ๋น„์Šค ๊ณ„์ •์—์„œ IAM ๊ถŒํ•œ์„ ์—…๋ฐ์ดํŠธํ•œ ํ›„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

Compute Engine ๊ธฐ๋ฐ˜ Envoy

Compute Engine์—์„œ Envoy์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ๊ด€๋ฆฌํ˜• ์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน์˜ ์ˆœ์ฐจ์  ์žฌ์‹œ์ž‘ ๋˜๋Š” ๊ต์ฒด๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. xDS v3๋ฅผ ์ง€์›ํ•˜๋Š” Envoy ๋ฒ„์ „์ด ๊ฐ€์ƒ ๋จธ์‹ (VM) ์ธ์Šคํ„ด์Šค์— ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

GKE ๊ธฐ๋ฐ˜ Envoy

Google Kubernetes Engine(GKE)์—์„œ ์ž๋™ Envoy ์‚ฝ์ž…์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ Cloud Service Mesh์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” GKE ํด๋Ÿฌ์Šคํ„ฐ์— ์‚ฌ์ด๋“œ์นด ์ธ์ ํ„ฐ๋ฅผ ๋‹ค์‹œ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ํฌ๋“œ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด xDS v3๋ฅผ ์ง€์›ํ•˜๋Š” Envoy ์‚ฌ์ด๋“œ์นด ํ”„๋ก์‹œ๊ฐ€ ์›Œํฌ๋กœ๋“œ ํฌ๋“œ์™€ ํ•จ๊ป˜ ์ž๋™์œผ๋กœ ์‚ฝ์ž…๋ฉ๋‹ˆ๋‹ค.

GKE์—์„œ ์ˆ˜๋™ ์‚ฌ์ด๋“œ์นด ์‚ฝ์ž…์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐ GKE ํด๋Ÿฌ์Šคํ„ฐ์— ์‚ฌ์ด๋“œ์นด ํ”„๋ก์‹œ๋ฅผ ๋‹ค์‹œ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋ก์‹œ๋ฆฌ์Šค gRPC

๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ”„๋กœ์„ธ์Šค์—๋Š” ๋‘ ๊ฐ€์ง€ ๋‹จ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์‚ฌ์šฉ ์ค‘์ธ gRPC ๋ฒ„์ „์ด xDS v3๋ฅผ ์ง€์›ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ gRPC์˜ xDS ๊ธฐ๋Šฅ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

  2. ๋‹ค์Œ ๋‹จ๊ณ„์— ๋”ฐ๋ผ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ๊ตฌ์„ฑ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

    1. ์ด ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ํŒŒ์ผ ์˜ˆ์‹œ์™€ ๊ฐ™์ด "xds_servers" ํ•„๋“œ์— "server_features": ["xds_v3"]๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
    2. ์•ž์„  ์˜ˆ์‹œ์™€ ๊ฐ™์ด ๋…ธ๋“œ ID๋Š” ๋‹ค์Œ ํ˜•์‹์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

      "projects/PROJECT_NUMBER/networks/NETWORK_NAME/nodes/ID"
      

์œ„์™€ ๊ฐ™์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ณ€๊ฒฝํ•œ ํ›„ ๋นŒ๋“œํ•˜๊ณ  ๋‹ค์‹œ ๋ฐฐํฌํ•˜์„ธ์š”.

์•ž์„  ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ๊ตฌ์„ฑ ๋ณ€๊ฒฝ์‚ฌํ•ญ์€ xDS v3๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” gRPC ๋ฒ„์ „์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์•ž์„  ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ๊ตฌ์„ฑ์— ์—†์œผ๋ฉด xDS v3๋ฅผ ์ง€์›ํ•˜๋Š” gRPC ๋ฒ„์ „์€ xDS v2๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํŽธ์˜๋ฅผ ์œ„ํ•ด Cloud Service Mesh gRPC ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ์ƒ์„ฑ๊ธฐ ๋ฒ„์ „ 0.16.0 ์ด์ƒ์„ ์‚ฌ์šฉํ•˜์—ฌ xDS v3 ํ˜ธํ™˜ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ๊ตฌ์„ฑ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Cloud Service Mesh ํด๋ผ์ด์–ธํŠธ์—์„œ xDS v3๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€ ํ™•์ธ

Cloud Service Mesh๊ฐ€ ์ด ํด๋ผ์ด์–ธํŠธ๋ฅผ ์œ„ํ•ด ์ƒ์„ฑํ•˜๋Š” ๊ตฌ์„ฑ์„ ๊ฒ€์‚ฌํ•˜๋ ค๋ฉด ํด๋ผ์ด์–ธํŠธ ์ƒํƒœ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด ๋„๊ตฌ๋Š” ๊ตฌ์„ฑ์ด xDS v2 ๋˜๋Š” xDS v3์ธ์ง€ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„