Envoy ๋ฐ ํ๋ก์๋ฆฌ์ค ์ํฌ๋ก๋๋ก ์๋น์ค ๋ผ์ฐํ API ์ค์ ์ค๋น
์ด ๋ฌธ์์์๋ Envoy ํ๋ก์ ๋๋ ํ๋ก์๋ฆฌ์ค gRPC๋ฅผ ๋ฐ์ดํฐ ํ๋ ์ธ์ผ๋ก ์ฌ์ฉํด์ ์๋น์ค ๋ผ์ฐํ API๋ก Cloud Service Mesh๋ฅผ ์ค์ ํ๊ธฐ ์ํ ๊ธฐ๋ณธ ์๊ฑด ํ์คํฌ์ ๋ํด ์ค๋ช ํฉ๋๋ค.
Cloud Service Mesh ์ค์ ์๋ ์ฌ๋ฌ ๋จ๊ณ๊ฐ ํฌํจ๋ฉ๋๋ค. ์ด ๋ฌธ์์์๋ VM ์ธ์คํด์ค ๋๋ ํ๋ก์๋ฆฌ์ค gRPC ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ์ฌ Cloud Service Mesh ๊ตฌ์ฑ์ ์ค๋นํ๊ธฐ ์ํ ์๋ด์ธ ์ฒซ ๋ฒ์งธ ๋จ๊ณ์ ๋ํด ์ค๋ช ํฉ๋๋ค. ์ถ๊ฐ ๋จ๊ณ๋ ์ด ๋ฌธ์์ ๋ท๋ถ๋ถ์ ๋์ค๋ ์ค์ ํ๋ก์ธ์ค ๊ณ์์ ๋์ด๋ ํ๋ซํผ๋ณ ๊ฐ์ด๋์์ ์ค๋ช ํฉ๋๋ค.
์ด ๊ฐ์ด๋๋ฅผ ์ฝ์ผ๋ ค๋ฉด ๋จผ์ ์๋น์ค ๋ผ์ฐํ API ๋ฐ Gateway API์์ Cloud Service Mesh ์ฌ์ฉ์ ๋ํ ๊ฐ์๋ฅผ ์ ๊ณตํ๋ ๋ค์ ๋ฌธ์๋ฅผ ์์งํด์ผ ํฉ๋๋ค.
๊ธฐ๋ณธ ์๊ฑด
๋ค์ ์์ ์ ์๋ฃํ์ฌ ํ๊ฒฝ์ ์ค๋นํฉ๋๋ค.
- ๋น์ฆ๋์ค ์๊ตฌ์ ๋ง๊ฒ ํ๋ก์ ํธ๋ฅผ ์ค์ ํฉ๋๋ค.
- ๊ฒฐ์ ๋ฅผ ์ฌ์ฉํ๋๋ก ์ค์ ํฉ๋๋ค.
- ํ์ ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
- ํ๋ก์ ํธ์ ๋ํด Traffic Director API ๋ฐ ๊ธฐํ API๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค.
- ์๋น์ค ๊ณ์ ์ Traffic Director API์ ์ก์ธ์คํ๊ธฐ์ ์ถฉ๋ถํ ๊ถํ์ด ์๋์ง ํ์ธํฉ๋๋ค.
- Cloud DNS API๋ฅผ ์ฌ์ฉ ์ค์ ํ๊ณ Cloud DNS๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
๋ค์ ์น์ ์์๋ ๊ฐ ์์ ์ ๋ํ ์๋ด๋ฅผ ์ ๊ณตํฉ๋๋ค.
ํ๋ก์ ํธ ์ค์
ํ๋ก์ ํธ๋ฅผ ์ค์ ํ๊ณ ๊ด๋ฆฌํ๋ ค๋ฉด ํ๋ก์ ํธ ๋ง๋ค๊ธฐ ๋ฐ ๊ด๋ฆฌ์ ๊ด๋ จ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
๊ฒฐ์ ์ฌ์ฉ ์ค์
Google Cloud ํ๋ก์ ํธ์ ๊ฒฐ์ ๊ฐ ์ฌ์ฉ ์ค์ ๋์ด ์๋์ง ํ์ธํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ํ๋ก์ ํธ์ ๊ฒฐ์ ์ฌ์ฉ ์ค์ , ์ฌ์ฉ ์ค์ง, ๋ณ๊ฒฝ์ ์ฐธ์กฐํ์ธ์.
ํ์ IAM ๊ถํ ๋ถ์ฌ
VM ์ธ์คํด์ค๋ฅผ ๋ง๋ค๊ณ Cloud Service Mesh ๊ตฌ์ฑ์ ์ํด ๋คํธ์ํฌ๋ฅผ ์์ ํ ์ ์๋ ์ถฉ๋ถํ Identity and Access Management(IAM) ๊ถํ์ด ์์ด์ผ ํฉ๋๋ค. Cloud Service Mesh๋ฅผ ์ฌ์ฉ ์ค์ ํ๋ ค๋ ํ๋ก์ ํธ์ ์์ ์ ๋๋ ํธ์ง์ ํ๋ก์ ํธ ์ญํ (roles/owner
๋๋ roles/editor
)์ด ์์ผ๋ฉด ์ฌ๋ฐ๋ฅธ ๊ถํ์ด ์๋์ผ๋ก ๋ถ์ฌ๋ฉ๋๋ค.
๊ทธ๋ ์ง ์์ผ๋ฉด ๋ค์ ํ์ ํ์๋ ๋ชจ๋ 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 ) |
์๋น์ค ๊ณ์ ์ ๋ํ ์ก์ธ์ค๋ฅผ ํ์ฉํฉ๋๋ค. | ์๋น์ค ๊ณ์ ์ฌ์ฉ์ ( roles/iam.serviceAccountUser ) |
ํ์ํ ์์ ์ ์ํํ๋๋ก ์๋น์ค ๊ณ์ ์ ์ฌ์ฉ ์ค์ ํฉ๋๋ค. ์ด ๊ถํ์ xDS ๋ฐ์ดํฐ ์์ญ(Envoy ๋๋ ํ๋ก์๋ฆฌ์ค gRPC)์ด ์ปจํธ๋กค ํ๋ ์ธ์์ xDS ๊ตฌ์ฑ์ ์์ ํ๋ ๋ฐ ํ์ํฉ๋๋ค. | Traffic Director ํด๋ผ์ด์ธํธ
( roles/trafficdirector.client) |
Compute Engine VM์ https://www.googleapis.com/auth/cloud-platform
๋ฒ์๊ฐ ํฌํจ๋์ด์ผ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ํ๋ก์๋ฆฌ์ค gRPC๋ฅผ ์ฌ์ฉํ๋ ๋ฐฐํฌ ๋ฌธ์ ํด๊ฒฐ์ ์ฐธ์กฐํ์ธ์.
Traffic Director API์ ์ก์ธ์คํ๋๋ก ์๋น์ค ๊ณ์ ์ฌ์ฉ ์ค์
๋ฐ์ดํฐ ํ๋ ์ธ์ ์ค์ ํ๊ณ ์ด๋ฅผ Cloud Service Mesh์ ์ฐ๊ฒฐํ๋ฉด Envoy ํ๋ก์ ๋๋ ํ๋ก์๋ฆฌ์ค gRPC ํด๋ผ์ด์ธํธ์ ๊ด๊ณ์์ด xDS ํด๋ผ์ด์ธํธ๊ฐ trafficdirector.googleapis.com
xDS ์๋ฒ์ ์ฐ๊ฒฐ๋ฉ๋๋ค. ์ด๋ฌํ xDS ํด๋ผ์ด์ธํธ๋ xDS ์๋ฒ์ ์๋น์ค ๊ณ์ ID๋ฅผ ์ ๊ณตํ์ฌ ๋ฐ์ดํฐ ํ๋ ์ธ๊ณผ ์ปจํธ๋กค ํ๋ ์ธ ๊ฐ์ ํต์ ์ด ์ ๋๋ก ์น์ธ๋๋๋ก ํฉ๋๋ค.
Compute Engine VM์ ๊ฒฝ์ฐ xDS ํด๋ผ์ด์ธํธ๋ VM์ ํ ๋น๋ ์๋น์ค ๊ณ์ ์ ์ฌ์ฉํฉ๋๋ค.
๊ตฌ์ฑ์ ์์ ํ์ง ์์ผ๋ฉด Google Cloud ๋ Compute Engine ๊ธฐ๋ณธ ์๋น์ค ๊ณ์ ์ ์ฌ์ฉํฉ๋๋ค.
์๋น์ค ๊ณ์ ์ Traffic Director API์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
์ฝ์
Google Cloud ์ฝ์์์ IAM ๋ฐ ๊ด๋ฆฌ์ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
ํ๋ก์ ํธ๋ฅผ ์ ํํฉ๋๋ค.
์ญํ ์ ์ถ๊ฐํ ์๋น์ค ๊ณ์ ์ ์ฐพ์ต๋๋ค.
- ์๋น์ค ๊ณ์ ์ด ๊ตฌ์ฑ์ ๋ชฉ๋ก์ ์์ง ์๋ ๊ฒฝ์ฐ ์ด๋ ํ ์ญํ ๋ ํ ๋น๋์ง ์์ ๊ฒ์ ๋๋ค. ์ถ๊ฐ๋ฅผ ํด๋ฆญํ๊ณ ์๋น์ค ๊ณ์ ์ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ์ ๋ ฅํฉ๋๋ค.
- ์๋น์ค ๊ณ์ ์ด ๊ตฌ์ฑ์ ๋ชฉ๋ก์ ์ด๋ฏธ ์๋ ๊ฒฝ์ฐ ๊ธฐ์กด ์ญํ ์ด ์๋ ๊ฒ์ ๋๋ค. ์๋น์ค ๊ณ์ ์ ์ ํํ๊ณ ์ญํ ํญ์ ํด๋ฆญํฉ๋๋ค.
์ญํ ์ ํ์ฅํฉ๋๋ค. ์์ ํ๋ ค๋ ์๋น์ค ๊ณ์ ์ ๋ํด
์์ ์ ํด๋ฆญํฉ๋๋ค.๊ธฐํ > Traffic Director ํด๋ผ์ด์ธํธ ์ญํ ์ ์ ํํฉ๋๋ค.
์๋น์ค ๊ณ์ ์ ์ญํ ์ ์ ์ฉํ๋ ค๋ฉด ์ ์ฅ์ ํด๋ฆญํฉ๋๋ค.
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
: ์๋น์ค ๊ณ์ ๊ณผ ์ฐ๊ฒฐ๋ ์ด๋ฉ์ผ์ ๋๋ค.
ํ์ํ API ์ฌ์ฉ ์ค์
๋ค์๊ณผ ๊ฐ์ด ํ์ํ API๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค.
- osconfig.googleapis.com
- trafficdirector.googleapis.com
- compute.googleapis.com
- networkservices.googleapis.com
ํ์ํ API๋ฅผ ์ฌ์ฉ ์ค์ ํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
์ฝ์
Google Cloud ์ฝ์์์ ํ๋ก์ ํธ์ API ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
API ๋ฐ ์๋น์ค ๊ฒ์ ํ๋์
Traffic Director
๋ฅผ ์ ๋ ฅํฉ๋๋ค.๊ฒ์๊ฒฐ๊ณผ ๋ชฉ๋ก์์ Traffic Director API๋ฅผ ํด๋ฆญํฉ๋๋ค. Traffic Director API๊ฐ ํ์๋์ง ์์ผ๋ฉด Traffic Director API๋ฅผ ์ฌ์ฉ ์ค์ ํ๋ ๋ฐ ํ์ํ ๊ถํ์ด ์๋ ๊ฒ์ ๋๋ค.
Traffic Director API ํ์ด์ง์์ ์ฌ์ฉ ์ค์ ์ ํด๋ฆญํฉ๋๋ค.
API ๋ฐ ์๋น์ค ๊ฒ์ ํ๋์
OS Config
๋ฅผ ์ ๋ ฅํฉ๋๋ค.๊ฒ์ ๊ฒฐ๊ณผ ๋ชฉ๋ก์์ OS ๊ตฌ์ฑ์ ํด๋ฆญํฉ๋๋ค. OS Config API๊ฐ ํ์๋์ง ์์ผ๋ฉด Traffic Director API๋ฅผ ์ฌ์ฉ ์ค์ ํ๋ ๋ฐ ํ์ํ ๊ถํ์ด ์๋ ๊ฒ์ ๋๋ค.
OS Config API ํ์ด์ง์์ ์ฌ์ฉ ์ค์ ์ ํด๋ฆญํฉ๋๋ค.
API ๋ฐ ์๋น์ค ๊ฒ์ ํ๋์
Compute
๋ฅผ ์ ๋ ฅํฉ๋๋ค.๊ฒ์ ๊ฒฐ๊ณผ ๋ชฉ๋ก์์ Compute Engine API๋ฅผ ํด๋ฆญํฉ๋๋ค. Compute Engine API๊ฐ ํ์๋์ง ์์ผ๋ฉด Compute Engine API ์ฌ์ฉ ์ค์ ์ ํ์ํ ๊ถํ์ด ์๋ ๊ฒ์ ๋๋ค.
Compute Engine API ํ์ด์ง์์ ์ฌ์ฉ ์ค์ ์ ํด๋ฆญํฉ๋๋ค.
API ๋ฐ ์๋น์ค ๊ฒ์ ํ๋์
Network Services
๋ฅผ ์ ๋ ฅํฉ๋๋ค.๊ฒ์ ๊ฒฐ๊ณผ ๋ชฉ๋ก์์ Network Services API๋ฅผ ํด๋ฆญํฉ๋๋ค. Network Services API๊ฐ ํ์๋์ง ์์ผ๋ฉด Network Services API๋ฅผ ์ฌ์ฉ ์ค์ ํ๋ ๋ฐ ํ์ํ ๊ถํ์ด ์๋ ๊ฒ์ ๋๋ค.
Network Services API ํ์ด์ง์์ ์ฌ์ฉ ์ค์ ์ ํด๋ฆญํฉ๋๋ค.
gcloud
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud services enable osconfig.googleapis.com \ trafficdirector.googleapis.com \ compute.googleapis.com \ networkservices.googleapis.com
xDS ๋ฒ์
์๋น์ค ๋ผ์ฐํ API๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด xDS v3๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. xDS v2์์ xDS v3๋ก ๋ฐฐํฌ๋ฅผ ์ ๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ์ xDS ์ปจํธ๋กค ํ๋ ์ธ API๋ฅผ ์ฐธ์กฐํ์ธ์.
Envoy ํ๋ก์์ ์ถ๊ฐ ์๊ตฌ์ฌํญ
์ด ์น์ ์์๋ ์๋น์ค ๋ผ์ฐํ API์ Envoy ํ๋ก์์ Cloud Service Mesh๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ์ถ๊ฐ ์๊ตฌ์ฌํญ์ ๋ํด ์ค๋ช ํฉ๋๋ค. ํ๋ก์๋ฆฌ์ค gRPC๋ก ๋ฐฐํฌํ๋ ๊ฒฝ์ฐ ํ๋ก์ gRPC์ ์ถ๊ฐ ์๊ตฌ์ฌํญ์ ์ฐธ์กฐํ์ธ์.
Envoy ์ค์น ๋ฐฉ๋ฒ
Cloud Service Mesh ๋ฐฐํฌ ํ๋ก์ธ์ค ์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋๋ VM์ Envoy๋ฅผ ์๋์ผ๋ก ์ค์นํ๋ VM ํ ํ๋ฆฟ์ ๋ง๋ญ๋๋ค.
Envoy ๋ฒ์ ์ ๋ณด
Cloud Service Mesh์ ์ฌ์ฉํ๋ ค๋ฉด Envoy ๋ฒ์ ์ด 1.20.0 ์ด์์ด์ด์ผ ํฉ๋๋ค. ์๋ ค์ง ๋ณด์ ์ทจ์ฝ์ ์ ์ํํ๋ ค๋ฉด ํญ์ ์ต์ Envoy ๋ฒ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์๋ํ๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ Envoy๋ฅผ ๋ฐฐํฌํ๋ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ์์ ์ ์ฒ๋ฆฌํฉ๋๋ค.
Compute Engine VM์ Envoy๋ฅผ ์๋์ผ๋ก ๋ฐฐํฌํ๋ฉด Cloud Service Mesh์์ ์๋ํ๋ ๊ฒ์ผ๋ก ๊ฒ์ฆ๋ Envoy ๋ฒ์ ์ด ์ค์น๋ฉ๋๋ค. ์ธ์คํด์ค ํ ํ๋ฆฟ์ ์ฌ์ฉํ์ฌ ์ VM์ด ์์ฑ๋๋ฉด VM์ ๊ฒ์ฆ๋ ์ต์ ๋ฒ์ ์ ์์ ํฉ๋๋ค. ์ฅ๊ธฐ ์คํ VM์ด ์๋ ๊ฒฝ์ฐ ์์ฐจ์ ์ ๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ์กด VM์ ๋์ฒดํ๊ณ ์ต์ ๋ฒ์ ์ ์ ํํ ์ ์์ต๋๋ค.
ํน์ Envoy ๋ฒ์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ฒ์ ๊ธฐ๋ก์ ์ฐธ์กฐํ์ธ์. ๋ณด์ ์ทจ์ฝ์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ณด์ ๊ถ๊ณ ๋ฅผ ์ฐธ์กฐํ์ธ์.
ํ๋ก์๋ฆฌ์ค gRPC์ ์ถ๊ฐ ์๊ตฌ์ฌํญ
์ด ์น์ ์์๋ ์๋น์ค ๋ผ์ฐํ API ๋ฐ ํ๋ก์๋ฆฌ์ค gRPC์ Cloud Service Mesh๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ์ถ๊ฐ ์๊ตฌ์ฌํญ์ ๋ํด ์ค๋ช ํฉ๋๋ค. Envoy ํ๋ก์๋ก ๋ฐฐํฌํ๋ ๊ฒฝ์ฐ์๋ Envoy ํ๋ก์์ ์ถ๊ฐ ์๊ตฌ์ฌํญ์ ์ฐธ์กฐํ์ธ์.
ํ๋ก์๋ฆฌ์ค gRPC์ ์ ์ฒด ํ๋ก์ธ์ค
์๋น์ค ๋ฉ์์์ ํ๋ก์๋ฆฌ์ค gRPC ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์ ํ๋ ๋ค์ ์ ์ฒด ์ ์ฐจ๋ฅผ ๋ฐ๋ฆ ๋๋ค.
- gRPC ํด๋ผ์ด์ธํธ๋ฅผ ์ต์ ํจ์น๊ฐ ์ ์ฉ๋ ์ต์ ๋ฒ์ ์ gRPC๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.
- ์ฑ๋์ ๋ง๋ค๊ณ Cloud Service Mesh ๋ถํธ์คํธ๋ฉ ํ์ผ์ ์ง์ ํ ๋ ํด๋ผ์ด์ธํธ์ gRPC ์ด๋ฆ ๋ฆฌ์กธ๋ฒ ์คํด์ ์ ๋ฐ์ดํธํฉ๋๋ค.
- Cloud Service Mesh ๋ฐ Cloud Load Balancing ๋ฆฌ์์ค๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
์ด ๋ฌธ์์์๋ ์ฒ์ ๋ ๋จ๊ณ๋ฅผ ์๋ฃํ๊ธฐ ์ํ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค. 3๋จ๊ณ์์ ์ฌ์ฉํ๋ ๊ตฌ์ฑ ํ๋ก์ธ์ค๋ ๋ฐฐํฌ์ Compute Engine VM์ ์ฌ์ฉํ๋์ง ๋๋GKE ๋คํธ์ํฌ ์๋ํฌ์ธํธ ๊ทธ๋ฃน(NEG)์ ์ฌ์ฉํ๋์ง์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
์ง์๋๋ gRPC ๋ฒ์ ๋ฐ ์ธ์ด
gRPC๋ ์คํ์์ค ํ๋ก์ ํธ์ด๋ฉฐ ์ถ์ ๋ฒ์ ์ง์์ gRPC FAQ์์ ์ค๋ช ๋ฉ๋๋ค. ์๋ ค์ง ๋ณด์ ์ทจ์ฝ์ ์ ํด๊ฒฐํ ์ ์๋๋ก ์ต์ gRPC ๋ฒ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ํ ์ ํ๋ฆฌ์ผ์ด์ ์ด Cloud Service Mesh์์ ์ง์ํ๋ ์ต์ ๊ธฐ๋ฅ์ ์ก์ธ์คํ ์ ์์ต๋๋ค. gRPC์ ๋ค์ํ ๊ตฌํ ๋ฐ ๋ฒ์ ์์ ์ง์๋๋ ์๋น์ค ๋ฉ์ ๊ธฐ๋ฅ์ด GitHub์ ๋์ด๋ฉ๋๋ค. Cloud Service Mesh ๋ฐ ํ๋ก์๋ฆฌ์ค gRPC ์๋น์ค์์ ์ง์ํ๋ gRPC ์ธ์ด ๋ฐ ๊ธฐ๋ฅ์ Cloud Service Mesh ๊ธฐ๋ฅ์ ์ฐธ์กฐํ์ธ์.
Cloud Service Mesh๋ Google Cloud Platform ์๋น์ค ์ฝ๊ด์ ๋ฐ๋ผ gRPC์ ํ์ฌ ๋ฐ ์ง์๋๋ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ์ ์งํ๊ณ 1๋ ๋ฏธ๋ง์ gRPC ๋ฒ์ ๊ณผ ํธํ๋๋๋ก ๋ ธ๋ ฅํฉ๋๋ค.
gRPC ํด๋ผ์ด์ธํธ ์ ๋ฐ์ดํธ
์ ํ๋ฆฌ์ผ์ด์ ์ gRPC ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ํ ๊ธฐ๋ฅ์ ์ง์ํ๋ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์ด์ ์น์ ์ ์ฐธ์กฐํ์ธ์.
xDS ์ด๋ฆ ๋ฆฌ์กธ๋ฒ๋ฅผ gRPC ์ ํ๋ฆฌ์ผ์ด์ ์ ์ข ์ ํญ๋ชฉ์ผ๋ก ์ถ๊ฐํฉ๋๋ค. Java ๋ฐ Go์ ์ธ์ด๋ณ ์๊ตฌ์ฌํญ์ ๋ค์ ์น์ ์ ๋์ ์์ต๋๋ค. ๋ค๋ฅธ ์ธ์ด์๋ ์ถ๊ฐ์ ์ธ ์๊ตฌ์ฌํญ์ด ์์ต๋๋ค.
์๋ฐ ์๊ตฌ์ฌํญ
์๋ฐ์์ Gradle์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ grpc-xds
์ข
์ ํญ๋ชฉ์ build.gradle
ํ์ผ์ ์ถ๊ฐํฉ๋๋ค. LATEST_GRPC_VERSION
์ gRPC์ ์ต์ ๋ฒ์ ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
dependencies { runtimeOnly 'io.grpc:grpc-xds:LATEST_GRPC_VERSION' }
Maven์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ pom.xml์ <dependencies>
์น์
์ ๋ค์์ ์ถ๊ฐํฉ๋๋ค. LATEST_GRPC_VERSION
์ gRPC์ ์ต์ ๋ฒ์ ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
<dependency> <groupId>io.grpc</groupId> <artifactId>grpc-xds</artifactId> <version>LATEST_GRPC_VERSION</version> <scope>runtime</scope> </dependency>
Go ์๊ตฌ์ฌํญ
Go๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ xds Go ํจํค์ง๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
xds
๋ฅผ ์ฌ์ฉํ๋๋ก gRPC ์ด๋ฆ ๋ฆฌ์กธ๋ฒ ์ค์
DNS๋ ๋ค๋ฅธ ๋ฆฌ์กธ๋ฒ ์คํค๋ง๊ฐ ์๋ ๋์ URI์์ xds
์ด๋ฆ ๋ณํ ์คํด์ ์ฌ์ฉํ๋๋ก gRPC ์ ํ๋ฆฌ์ผ์ด์
์ ์ค์ ํ๊ฑฐ๋ ๋ณ๊ฒฝํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ ค๋ฉด gRPC ์ฑ๋์ ๋ง๋ค ๋ ๋์ ์ด๋ฆ์ xds:///
ํ๋ฆฌํฝ์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
gRPC ํด๋ผ์ด์ธํธ์ ๋ถํ ๋ถ์ฐ์ ์ฑ๋ ๋จ์๋ก ์ด๋ฃจ์ด์ง๋๋ค.
Cloud Service Mesh ๊ตฌ์ฑ์์ ๋์ URI์ ์ฌ์ฉ๋๋ ์๋น์ค ์ด๋ฆ์ ํฌํจํฉ๋๋ค. ์๋ฅผ ๋ค์ด Java์์๋ ์๋น์ค ์ด๋ฆ์ด helloworld
์ธ ์ด ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ๋์ ๋ง๋ญ๋๋ค.
ManagedChannelBuilder.forTarget("xds:///helloworld[:PORT_NUMBER]")
๋ถํธ์คํธ๋ฉ ํ์ผ ๋ง๋ค๊ธฐ ๋ฐ ๊ตฌ์ฑ
xds
๋ฆฌ์กธ๋ฒ ์คํด์ gRPC ์ ํ๋ฆฌ์ผ์ด์
์ Cloud Service Mesh์ ์ฐ๊ฒฐํ์ฌ ๋์ ์๋น์ค์ ๊ตฌ์ฑ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋๋ก ์ง์ํฉ๋๋ค. ๋ฐ๋ผ์ ๋ค์์ ์ํํ์ธ์.
- ๋ค์ ์ํ์์์ ๊ฐ์ด ๋ถํธ์คํธ๋ฉ ํ์ผ์ ๋ง๋ญ๋๋ค. ์ด ํ์ผ์ gRPC์ xDS ์๋ฒ(Cloud Service Mesh)์ ์ฐ๊ฒฐํ์ฌ ํน์ ์๋น์ค์ ๊ตฌ์ฑ์ ๊ฐ์ ธ์ค๋๋ก ์ง์ํฉ๋๋ค.
- ๋ถํธ์คํธ๋ฉ ํ์ผ ์ด๋ฆ์ ํ๊ฒฝ ๋ณ์์ ๊ฐ์ผ๋ก ์ฌ์ฉํ๋
GRPC_XDS_BOOTSTRAP
์ด๋ผ๋ ํ๊ฒฝ ๋ณ์๋ฅผ ์ ์ํฉ๋๋ค.
์ค์ ์๋ด์๋ ๋ถํธ์คํธ๋ฉ ํ์ผ์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ฃผ๋ ์์๊ฐ ์์ต๋๋ค. ํธ์๋ฅผ ์ํด ์ต์ ๋ฒ์ ์ Cloud Service Mesh gRPC ๋ถํธ์คํธ๋ฉ ์์ฑ๊ธฐ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Cloud Service Mesh์ ์ฐ๊ฒฐํ๋ ๋ฐ ํ์ํ ์ ๋ณด๊ฐ ๋ค์ด ์๋ ๋ถํธ์คํธ๋ฉ ํ์ผ์ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํจ๊ป ํฌํจ๋์ด์ผ ํฉ๋๋ค. ์ํ ๋ถํธ์คํธ๋ฉ ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
{ "xds_servers": [ { "server_uri": "trafficdirector.googleapis.com:443", "channel_creds": [ { "type": "google_default" } ], "server_features": ["xds_v3"] } ], "node": { "id": "projects/123456789012/networks/default/nodes/b7f9c818-fb46-43ca-8662-d3bdbcf7ec18", "metadata": { "TRAFFICDIRECTOR_NETWORK_NAME": "default" }, "locality": { "zone": "us-central1-a" } } }
๋ค์ ํ์์ ๋ถํธ์คํธ๋ฉ ํ์ผ์ ํ๋๋ฅผ ์ค๋ช ํฉ๋๋ค.
ํ๋ | ๊ฐ ๋ฐ ์ค๋ช |
---|---|
xds_servers |
xDS ์๋ฒ ๋ชฉ๋ก์ ๋๋ค. gRPC๋ ๋ชฉ๋ก์ ์ฒซ ๋ฒ์งธ ํญ๋ชฉ๋ง ์ฌ์ฉํฉ๋๋ค. |
server_uri |
1๊ฐ ์ด์ ์ง์ ํฉ๋๋ค. gRPC๋ xds_servers ๋ชฉ๋ก์ ์ฒซ ๋ฒ์งธ xDS ์๋ฒ์๋ง ์ฐ๊ฒฐ์ ์๋ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ trafficdirector.googleapis.com:443 ์
๋๋ค. |
channel_creds |
xDS ์๋ฒ์์ ์ฌ์ฉํ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด์ ๋๋ค. |
type |
google_default ๊ฐ์ ์ฌ์ฉํฉ๋๋ค. ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ ํ๋ฆฌ์ผ์ด์
๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด ์๋ ๋ฐฉ์์ ์ฐธ์กฐํ์ธ์.
|
server_features |
xDS v3 ์ง์๊ณผ ๊ฐ์ ์๋ฒ์์ ์ง์ํ๋ ๊ธฐ๋ฅ์ ๋ชฉ๋ก์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ ๋น์ด ์์ต๋๋ค. |
node |
xDS ์๋ฒ์ ์ฐ๊ฒฐํ๋ ํด๋ผ์ด์ธํธ์ ๋ํ ์ ๋ณด์ ๋๋ค. |
id |
projects/PROJECT_NUMBER/networks/NETWORK_NAME/nodes/ID
|
metadata |
xDS ์๋ฒ ๊ด๋ จ ์ ๋ณด์ ๋๋ค. |
TRAFFICDIRECTOR_MESH_NAME |
ํ๋๊ฐ ๋น์ด ์๊ฑฐ๋ ์ง์ ๋์ง ์์ผ๋ฉด ๊ฐ์ด default ๋ก ์ค์ ๋ฉ๋๋ค. |
locality |
gRPC ํด๋ผ์ด์ธํธ๊ฐ ์คํ๋๋ Google Cloud ์์ญ์ ๋๋ค. |
์ค์ ํ๋ก์ธ์ค ๊ณ์ํ๊ธฐ
์ด ๋ฌธ์์ ์ค๋ช ๋ ๊ธฐ๋ณธ ์๊ฑด์ ์๋ฃํ ํ ์๋น์ค ๋ผ์ฐํ API๋ก Cloud Service Mesh๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒฝ์ฐ์๋ ๊ณ์ํด์ ๋ค์ ๋ฌธ์ ์ค ํ๋๋ฅผ ์งํํฉ๋๋ค.
Mesh
๋ฆฌ์์ค๋ก ํ๋ก์๋ฆฌ์ค gRPC ์๋น์ค ์ค์ - HTTP ์๋น์ค๋ก Envoy ํ๋ก์ ์ค์
- ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด ์ค์
TCPRoute
๋ฆฌ์์ค๋ก TCP ์๋น์ค ์ค์ Mesh
๋ฐRoute
๋ฆฌ์์ค๋ก ํ๋ก์ ํธ ๊ฐ ์ฐธ์กฐ ์ค์ - ๊ฒ์ดํธ์จ์ด TLS ๋ผ์ฐํ ์ค์