Envoy๋ก Cloud Service Mesh ์ค์ ์ค๋น
Cloud Service Mesh ์ค์ ์๋ ๋ค์ ๋จ๊ณ๊ฐ ํฌํจ๋ฉ๋๋ค.
- Traffic Director API ์ฌ์ฉ ์ค์ ๊ณผ Compute Engine ์ฌ์ฉ ์ Cloud DNS ๊ตฌ์ฑ์ ์ํ ๊ถํ ๋ถ์ฌ
- Envoy ํ๋ก์๋ก ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ
- ์๋น์ค ๋ฉ์๋ฅผ ํตํด ํธ๋ํฝ์ด ์ด๋ํ๋ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํ๋ ์๋น์ค ๋ฐ ๋ผ์ฐํ ๊ท์น ๋ง๋ค๊ธฐ
์ด ๋ฌธ์๋ ์ฒซ ๋ฒ์งธ ๋จ๊ณ์ ๋ํด ์ค๋ช ํ๋ฉฐ ์ด์ API๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ ์ ์ฉ๋ฉ๋๋ค. ๋ ๋ฒ์งธ ๋ฐ ์ธ ๋ฒ์งธ ๋จ๊ณ๋ ์ด ๋ฌธ์์ ๋ท๋ถ๋ถ์ ์๋ ์ค์ ํ๋ก์ธ์ค ๊ณ์์ ๋์ด๋ ํ๋ซํผ๋ณ ๊ฐ์ด๋์์ ์ค๋ช ๋ฉ๋๋ค.
์ด ๊ฐ์ด๋๋ฅผ ์ฝ๊ธฐ ์ ์ Cloud Service Mesh ๊ฐ์๋ฅผ ์์งํ์ธ์. ์๋น์ค ๋ผ์ฐํ API๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์๋น์ค ๋ผ์ฐํ API ๊ฐ์๋ฅผ ์ฐธ์กฐํ์ธ์.
๊ธฐ๋ณธ ์๊ฑด
Cloud Service Mesh๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ๋จธ์ (VM) ์ธ์คํด์ค, ์ปจํ ์ด๋ ๋๋ ๋ ๋ค์์ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํจ๊ป ์คํ๋๋ Envoy ํ๋ก์๋ฅผ ๊ตฌ์ฑํ๋ ค๋ ๊ฒฝ์ฐ ๋จผ์ ๋ค์ ํ์คํฌ๋ฅผ ์๋ฃํด์ผ ํฉ๋๋ค.
- ๊ฒฐ์ ๋ฅผ ์ฌ์ฉํ๋๋ก ์ค์ ํฉ๋๋ค.
- Envoy ์ค์น ๋ฐฉ๋ฒ ๊ฒฐ์ ์ ๊ฒฐ์ ํฉ๋๋ค.
- ํ์ ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
- ํ๋ก์ ํธ์ Traffic Director API๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค.
- Compute Engine์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ Cloud DNS API๋ฅผ ์ฌ์ฉ ์ค์ ํ๊ณ Cloud DNS๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
- Envoy ํ๋ก์์์ ์ฌ์ฉํ๋ ์๋น์ค ๊ณ์ ์ Traffic Director API์ ์ก์ธ์คํ ์ ์๋ ์ถฉ๋ถํ ๊ถํ์ด ์๋์ง ํ์ธํฉ๋๋ค.
๋ค์ ์น์ ์์๋ ๊ฐ ์์ ์ ๋ํ ์๋ด๋ฅผ ์ ๊ณตํฉ๋๋ค.
๊ฒฐ์ ์ฌ์ฉ ์ค์
Google Cloud ํ๋ก์ ํธ์ ๊ฒฐ์ ๊ฐ ์ฌ์ฉ ์ค์ ๋์ด ์๋์ง ํ์ธํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ํ๋ก์ ํธ์ ๊ฒฐ์ ์ฌ์ฉ ์ค์ , ์ฌ์ฉ ์ค์ง, ๋ณ๊ฒฝ์ ์ฐธ์กฐํ์ธ์.
Envoy ์ค์น ๋ฐฉ๋ฒ ๊ฒฐ์
Cloud Service Mesh๋ฅผ ์ฌ์ฉํ๋ฉด Envoy ํ๋ก์๋ฅผ ์ค์นํ๊ณ ๋ค์๊ณผ ๊ฐ์ ์ธํ๋ผ ๋ ์ด์ด๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
Compute Engine์์๋ VM์์ ์คํ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ Envoy๋ฅผ ์๋์ผ๋ก ์ถ๊ฐํ ์ ์์ต๋๋ค. Envoy๋ฅผ ์ค์นํ๋ VM ํ ํ๋ฆฟ์ ์ฌ์ฉํ์ฌ Cloud Service Mesh์ ์ฐ๊ฒฐํ๊ณ VM์ ๋คํธ์ํน์ ๊ตฌ์ฑํฉ๋๋ค.
Google Kubernetes Engine(GKE)์์๋ ์๋น์ค์ ํฌ๋์ Envoy ์ฌ์ด๋์นด ํ๋ก์๋ฅผ ์๋์ผ๋ก ์ถ๊ฐํ ์ ์์ต๋๋ค. ํด๋ฌ์คํฐ์ Envoy ์ฌ์ด๋์นด ํ๋ก์๋ฅผ ์ถ๊ฐํ๊ณ Cloud Service Mesh์ ์ฐ๊ฒฐํ๊ณ ์ปจํ ์ด๋์ ๋คํธ์ํน์ ๊ตฌ์ฑํ๋ Envoy ์ฌ์ด๋์นด ์ธ์ ํฐ๋ฅผ ์ค์นํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก Cloud Service Mesh์ ํจ๊ป ์๋ ํํฐ ์ ๊ณต์ ์ฒด์ Envoy ๋ฐฐํฌ ์๋ฃจ์ ์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. ์ด๋ฌํ ์๋ฃจ์ ์ ํ ๊ฐ์ง ์์๋ก Envoy ํ๋ก์ ์ค์น ๋ฐ ์ ๋ฐ์ดํธ์ ํจํค์ง ๊ด๋ฆฌ์ ๊ธฐ๋ฐ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํ๋ GetEnvoy๋ฅผ ๋ค ์ ์์ต๋๋ค.
Envoy ๋ฒ์ ๊ด๋ฆฌ ์ ๋ณด
Cloud Service Mesh์ ์ฌ์ฉํ๋ ค๋ฉด Envoy ๋ฒ์ ์ด 1.9.1 ์ด์์ด์ด์ผ ํฉ๋๋ค. ์๋ ค์ง ๋ณด์ ์ทจ์ฝ์ ์ ์ํํ๋ ค๋ฉด ํญ์ ์ต์ Envoy ๋ฒ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์๋ํ๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ Envoy๋ฅผ ๋ฐฐํฌํ๋ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ์์ ์ ์ฒ๋ฆฌํฉ๋๋ค.
Compute Engine VM์ ์๋ Envoy ๋ฐฐํฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ค์น๋ Envoy ๋ฒ์ ์ Cloud Service Mesh์ ์๋ํ๋ ๊ฒ์ผ๋ก ๊ฒ์ฆ๋ ๋ฒ์ ์ ๋๋ค. ์ธ์คํด์ค ํ ํ๋ฆฟ์ ์ฌ์ฉํ์ฌ ์ VM์ด ์์ฑ๋๋ฉด VM์ ๊ฒ์ฆ๋ ์ต์ ๋ฒ์ ์ ์์ ํฉ๋๋ค. ์ฅ๊ธฐ ์คํ VM์ด ์๋ ๊ฒฝ์ฐ ์์ฐจ์ ์ ๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ์กด VM์ ๋์ฒดํ๊ณ ์ต์ ๋ฒ์ ์ ์ ํํ ์ ์์ต๋๋ค.
GKE์์ Envoy ์ฌ์ด๋์นด ์ธ์ ํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ธ์ ํฐ๋ Google์ด Cloud Service Mesh์ ์๋ํ๋ ๊ฒ์ผ๋ก ๊ฒ์ฆํ ์ต์ ๋ฒ์ ์ Envoy๋ฅผ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ฌ์ด๋์นด๊ฐ ์ํฌ๋ก๋ ํฌ๋์ ํจ๊ป ์ฝ์ ๋๋ฉด ์ด ๋ฒ์ ์ Envoy๋ฅผ ์์ ํฉ๋๋ค. ๋ ์ต์ ๋ฒ์ ์ Envoy๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด Envoy ์ฌ์ด๋์นด ์ธ์ ํฐ๋ฅผ ์ ๋ฐ์ดํธํ์ธ์.
ํน์ Envoy ๋ฒ์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ฒ์ ๊ธฐ๋ก์ ์ฐธ์กฐํ์ธ์. ๋ณด์ ์ทจ์ฝ์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ณด์ ๊ถ๊ณ ๋ฅผ ์ฐธ์กฐํ์ธ์.
ํ์ IAM ๊ถํ ๋ถ์ฌ
VM ์ธ์คํด์ค๋ฅผ ๋ง๋ค๊ณ Cloud Service Mesh ๊ตฌ์ฑ์ ์ํด ๋คํธ์ํฌ๋ฅผ ์์ ํ ์ ์๋ ์ถฉ๋ถํ Identity and Access Management(IAM) ๊ถํ์ด ์์ด์ผ ํฉ๋๋ค. Cloud Service Mesh๋ฅผ ์ฌ์ฉ ์ค์ ํ๋ ค๋ ํ๋ก์ ํธ์ ์์ ์ ๋๋ ํธ์ง์ ํ๋ก์ ํธ ์ญํ (roles/owner
๋๋ roles/editor
)์ด ์์ผ๋ฉด ์ฌ๋ฐ๋ฅธ ๊ถํ์ด ์๋์ผ๋ก ๋ถ์ฌ๋ฉ๋๋ค.
๊ทธ๋ ์ง ์์ผ๋ฉด ๋ค์ ํ์ ํ์๋ ๋ชจ๋ Compute Engine IAM ์ญํ ์ด ์์ด์ผ ํฉ๋๋ค. ์ด๋ฌํ ์ญํ ์ด ์๋ ๊ฒฝ์ฐ Compute Engine IAM ๋ฌธ์์ ์ค๋ช ๋ ๋๋ก ๊ด๋ จ ๊ถํ๋ ๊ฐ๊ฒ ๋ฉ๋๋ค.
์์ | ํ์ํ ์ญํ |
---|---|
์๋น์ค ๊ณ์ ์ IAM ์ ์ฑ ์ค์ | ์๋น์ค ๊ณ์ ๊ด๋ฆฌ์ ( roles/iam.serviceAccountAdmin ) |
Cloud Service Mesh๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค. | ์๋น์ค ์ฌ์ฉ๋ ๊ด๋ฆฌ์ ( roles/serviceusage.serviceUsageAdmin ) |
๋คํธ์ํฌ, ์๋ธ๋ท, ๋ถํ ๋ถ์ฐ๊ธฐ ๊ตฌ์ฑ์์ ๋ง๋ค๊ธฐ | Compute ๋คํธ์ํฌ ๊ด๋ฆฌ์ ( roles/compute.networkAdmin ) |
๋ฐฉํ๋ฒฝ ๊ท์น ์ถ๊ฐ ๋ฐ ์ญ์ | Compute ๋ณด์ ๊ด๋ฆฌ์ ( roles/compute.securityAdmin ) |
์ธ์คํด์ค ๋ง๋ค๊ธฐ | Compute ์ธ์คํด์ค ๊ด๋ฆฌ์ ( roles/compute.instanceAdmin ) |
GKE ๋
ธ๋ ํ ๋๋ Compute Engine VM์๋ https://www.googleapis.com/auth/cloud-platform
๋ฒ์๊ฐ ์์ด์ผ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ Envoy๋ฅผ ์ฌ์ฉํ๋ ๋ฐฐํฌ ๋ฌธ์ ํด๊ฒฐ์ ์ฐธ์กฐํ์ธ์.
xDS v3๋ฅผ ์ฌ์ฉํ์ฌ Cloud Service Mesh Envoy ํด๋ผ์ด์ธํธ์ ์ฌ์ฉ๋๋ ์๋น์ค ๊ณ์ ์ roles/trafficdirector.client
์ญํ ์ ๋ถ์ฌํฉ๋๋ค.
Traffic Director API ์ฌ์ฉ ์ค์
์ฝ์
Google Cloud ์ฝ์์์ ํ๋ก์ ํธ์ API ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
API ๋ฐ ์๋น์ค ๊ฒ์ ํ๋์
Traffic Director
๋ฅผ ์ ๋ ฅํฉ๋๋ค.๊ฒ์๊ฒฐ๊ณผ ๋ชฉ๋ก์์ Traffic Director API๋ฅผ ํด๋ฆญํฉ๋๋ค. Traffic Director API๊ฐ ํ์๋์ง ์์ผ๋ฉด Traffic Director API๋ฅผ ์ฌ์ฉ ์ค์ ํ๋ ๋ฐ ํ์ํ ๊ถํ์ด ์๋ ๊ฒ์ ๋๋ค.
Traffic Director API ํ์ด์ง์์ ์ฌ์ฉ ์ค์ ์ ํด๋ฆญํฉ๋๋ค.
gcloud
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud services enable trafficdirector.googleapis.com
Cloud DNS API ์ฌ์ฉ ์ค์ ๋ฐ Cloud DNS ๊ตฌ์ฑ
Compute Engine์์ Cloud Service Mesh๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒฝ์ฐ ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. Cloud DNS API๋ฅผ ์ฌ์ฉ ์ค์ ํ๊ณ DNS ์ด๋ฆ ๋ณํ์ ์ํด Cloud DNS๋ฅผ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
Cloud Service Mesh ๋ฐ DNS ๋ณํ์ ๋ํ ๋ฐฐ๊ฒฝ ์ ๋ณด๋ Cloud Service Mesh ๋ฐ DNS ์ด๋ฆ ๋ณํ์ ์ฐธ์กฐํ์ธ์.
๋จผ์ ๋ค์ ์๋ด์ ๋ฐ๋ผ Cloud DNS API๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ ํ๋ก์ ํธ์ API ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
API ๋ฐ ์๋น์ค ๊ฒ์ ํ๋์
DNS
๋ฅผ ์ ๋ ฅํฉ๋๋ค.๊ฒ์ ๊ฒฐ๊ณผ ๋ชฉ๋ก์์ Cloud DNS API๋ฅผ ํด๋ฆญํฉ๋๋ค. Cloud DNS API๊ฐ ํ์๋์ง ์์ผ๋ฉด Cloud DNS API ์ฌ์ฉ ์ค์ ์ ํ์ํ ๊ถํ์ด ์๋ ๊ฒ์ ๋๋ค.
Cloud DNS API ํ์ด์ง์์ ์ฌ์ฉ ์ค์ ์ ํด๋ฆญํฉ๋๋ค.
gcloud
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud services enable dns.googleapis.com
๊ทธ๋ฐ ํ Cloud DNS ๊ด๋ฆฌํ ๋น๊ณต๊ฐ ์์ญ์ ๊ตฌ์ฑํฉ๋๋ค. ๋น๊ณต๊ฐ ์์ญ ๋ง๋ค๊ธฐ์ ์๋ด๋ฅผ ๋ฐ๋ฆ ๋๋ค.
Traffic Director API์ ์ก์ธ์คํ๋๋ก ์๋น์ค ๊ณ์ ์ฌ์ฉ ์ค์
๋ฐ์ดํฐ ์์ญ์ ์ค์ ํ๊ณ ์ด๋ฅผ Cloud Service Mesh์ ์ฐ๊ฒฐํ๋ฉด xDS ํด๋ผ์ด์ธํธ(์: Envoy ํ๋ก์)๊ฐ trafficdirector.googleapis.com
xDS ์๋ฒ์ ์ฐ๊ฒฐ๋ฉ๋๋ค. ์ด๋ฌํ xDS ํด๋ผ์ด์ธํธ๋ xDS ์๋ฒ์ ์๋น์ค ๊ณ์ ID๋ฅผ ์ ๊ณตํ์ฌ ๋ฐ์ดํฐ ์์ญ๊ณผ ์ปจํธ๋กค ํ๋ ์ธ ๊ฐ์ ํต์ ์ด ์ ๋๋ก ์น์ธ๋๋๋ก ํฉ๋๋ค.
- Compute Engine VM์ ๊ฒฝ์ฐ xDS ํด๋ผ์ด์ธํธ๋ VM์ ํ ๋น๋ ์๋น์ค ๊ณ์ ์ ์ฌ์ฉํฉ๋๋ค.
- GKE์ ๊ฒฝ์ฐ
Workload Identity
๊ฐ ์ฌ์ฉ ์ค์ ๋์ด ์์ง ์์ผ๋ฉด xDS ํด๋ผ์ด์ธํธ๋ ๊ธฐ๋ณธ GKE ๋ ธ๋์ ํ ๋น๋ ์๋น์ค ๊ณ์ ์ ์ฌ์ฉํฉ๋๋ค. Workload Identity
๊ฐ ์ฌ์ฉ ์ค์ ๋์ด ์์ผ๋ฉด xDS ํด๋ผ์ด์ธํธ๋ ํฌ๋์ ํ ๋น๋ Kubernetes ์๋น์ค ๊ณ์ ๊ณผ ๊ฒฐํฉ๋๋ Google ์๋น์ค ๊ณ์ ์ ์ฌ์ฉํฉ๋๋ค.
๋ค์ ๊ถํ์ด ํ์ํฉ๋๋ค. xDS v3๋ง ์ง์๋ฉ๋๋ค. xDS v2๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ xDS v3๋ก ๋ง์ด๊ทธ๋ ์ด์ ํด์ผ ํฉ๋๋ค. ๋ง์ด๊ทธ๋ ์ด์ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ xDS v2์์ xDS v3๋ก ๋ง์ด๊ทธ๋ ์ด์ ์ ์ฐธ์กฐํ์ธ์.
xDS v3์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ์์ ์ฌ์ฉ๋๋ ์๋น์ค ๊ณ์ ์ trafficdirector.networks.reportMetrics
๋ฐ trafficdirector.networks.getConfigs
๊ถํ์ด ์์ด์ผ ํฉ๋๋ค. ๋ ๊ถํ์ ๋ชจ๋ ํฌ๊ดํ๋ IAM Cloud Service Mesh ํด๋ผ์ด์ธํธ ์ญํ (roles/trafficdirector.client
)์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ IAM ๋ฐ ๊ด๋ฆฌ์ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
ํ๋ก์ ํธ๋ฅผ ์ ํํฉ๋๋ค.
์ญํ ์ ์ถ๊ฐํ ์๋น์ค ๊ณ์ ์ ์ฐพ์ต๋๋ค.
- ์๋น์ค ๊ณ์ ์ด ๊ตฌ์ฑ์ ๋ชฉ๋ก์ ์์ง ์๋ ๊ฒฝ์ฐ ์ด๋ ํ ์ญํ ๋ ํ ๋น๋์ง ์์ ๊ฒ์ ๋๋ค. ์ถ๊ฐ๋ฅผ ํด๋ฆญํ๊ณ ์๋น์ค ๊ณ์ ์ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ์ ๋ ฅํฉ๋๋ค.
- ์๋น์ค ๊ณ์ ์ด ๊ตฌ์ฑ์ ๋ชฉ๋ก์ ์ด๋ฏธ ์๋ ๊ฒฝ์ฐ ๊ธฐ์กด ์ญํ ์ด ์๋ ๊ฒ์ ๋๋ค. ์๋น์ค ๊ณ์ ์ ์ ํํ๊ณ ์ญํ ํญ์ ํด๋ฆญํฉ๋๋ค.
์ญํ ์ ํ์ฅํฉ๋๋ค. ์์ ํ๋ ค๋ ์๋น์ค ๊ณ์ ์ ๋ํด
์์ ์ ํด๋ฆญํฉ๋๋ค.๊ธฐํ > Cloud Service Mesh ํด๋ผ์ด์ธํธ ์ญํ ์ ์ ํํฉ๋๋ค.
์๋น์ค ๊ณ์ ์ ์ญํ ์ ์ ์ฉํ๋ ค๋ฉด ์ ์ฅ์ ํด๋ฆญํฉ๋๋ค.
gcloud
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud projects add-iam-policy-binding PROJECT \ --member serviceAccount:SERVICE_ACCOUNT_EMAIL \ --role=roles/trafficdirector.client
๋ค์์ ๋ฐ๊ฟ๋๋ค.
PROJECT
:gcloud config get-value project
๋ฅผ ์ ๋ ฅํฉ๋๋ค.SERVICE_ACCOUNT_EMAIL
: ์๋น์ค ๊ณ์ ๊ณผ ์ฐ๊ฒฐ๋ ์ด๋ฉ์ผ์ ๋๋ค.
์ค์ ํ๋ก์ธ์ค ๊ณ์ํ๊ธฐ
์ด์ ๊ธฐ๋ณธ ์๊ฑด ๋จ๊ณ๋ฅผ ์๋ฃํ์ผ๋ฏ๋ก ์๋น์ค ๋ฉ์ ์ค์ ์ ์์ํ ์ ์์ต๋๋ค.