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๋ก ๋ง์ด๊ทธ๋ ์ด์
๋ง์ด๊ทธ๋ ์ด์ ํ๋ก์ธ์ค์๋ ๋ ๊ฐ์ง ๋จ๊ณ๊ฐ ์์ต๋๋ค.
- Cloud Service Mesh์ ์ฐ๊ฒฐํ ๋ ํด๋ผ์ด์ธํธ(Envoy ํ๋ก์ ๋๋ ํ๋ก์๋ฆฌ์ค gRPC ๋ผ์ด๋ธ๋ฌ๋ฆฌ)์์ ์ฌ์ฉํ๋ ์๋น์ค ๊ณ์ ์ ๋ถ์ฌ๋ Identity and Access Management(IAM) ๊ถํ์ ์ ๋ฐ์ดํธํฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ฐ์ดํธํ๊ณ ๋ค์ ๋ฐฐํฌํฉ๋๋ค. ๊ตฌ์ฒด์ ์ธ ๋จ๊ณ๋ ๋ฐฐํฌ์ ๋ฐ๋ผ ๋ค๋ฅด๋ฉฐ ๋ค์ ์น์ ์์ ์ค๋ช ํฉ๋๋ค.
์๋น์ค ๊ณ์ ์ 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
๋ง์ด๊ทธ๋ ์ด์ ํ๋ก์ธ์ค์๋ ๋ ๊ฐ์ง ๋จ๊ณ๊ฐ ์์ต๋๋ค.
์ฌ์ฉ ์ค์ธ gRPC ๋ฒ์ ์ด xDS v3๋ฅผ ์ง์ํ๋์ง ํ์ธํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ gRPC์ xDS ๊ธฐ๋ฅ์ ์ฐธ์กฐํ์ธ์.
๋ค์ ๋จ๊ณ์ ๋ฐ๋ผ ๋ถํธ์คํธ๋ฉ ๊ตฌ์ฑ์ ์ ๋ฐ์ดํธํฉ๋๋ค.
- ์ด ๋ถํธ์คํธ๋ฉ ํ์ผ ์์์ ๊ฐ์ด
"xds_servers"
ํ๋์"server_features": ["xds_v3"]
๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์์ ์์์ ๊ฐ์ด ๋ ธ๋ 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์ธ์ง ๋ช ์ํฉ๋๋ค.
๋ค์ ๋จ๊ณ
- ์ผ๋ฐ์ ์ธ Cloud Service Mesh ๋ฌธ์ ํด๊ฒฐ ์ ๋ณด๋ Envoy ๋ฐฐํฌ ๋ฌธ์ ํด๊ฒฐ์ ์ฐธ์กฐํ์ธ์.
- ํ๋ก์๋ฆฌ์ค gRPC ์๋น์ค๋ฅผ ๋ฐฐํฌํ ๋ ๊ตฌ์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ํ๋ก์๋ฆฌ์ค gRPC ๋ฐฐํฌ ๋ฌธ์ ํด๊ฒฐ์ ์ฐธ์กฐํ์ธ์.