Istio API๋ฅผ ์ฌ์ฉํ๋ ์ง์ ๊ธฐ๋ฅ(๊ด๋ฆฌํ ์ปจํธ๋กค ํ๋ ์ธ)
์ด ํ์ด์ง์์๋ TRAFFIC_DIRECTOR
๋๋ ISTIOD
๋ฅผ ์ปจํธ๋กค ํ๋ ์ธ์ผ๋ก ์ฌ์ฉํ๋ Cloud Service Mesh์ ์ง์๋๋ ๊ธฐ๋ฅ๊ณผ ์ ํ์ฌํญ, ๊ฐ ๊ตฌํ ๊ฐ์ ์ฐจ์ด์ ์ ์ค๋ช
ํฉ๋๋ค. ์ด๋ฌํ ์ต์
์ ์ ํํ ์ ์์ต๋๋ค. ISTIOD
๊ตฌํ์ ๊ธฐ์กด ์ฌ์ฉ์์๊ฒ๋ง ์ ๊ณต๋ฉ๋๋ค.
์ ์ค์น๋ ๊ฐ๋ฅํ ๊ฒฝ์ฐ TRAFFIC_DIRECTOR
๊ตฌํ์ ์ฌ์ฉํฉ๋๋ค.
ํด๋ฌ์คํฐ ๋ด ์ปจํธ๋กค ํ๋ ์ธ์์ Cloud Service Mesh ์ง์ ๊ธฐ๋ฅ ๋ชฉ๋ก์ Istio API ์ฌ์ฉ(ํด๋ฌ์คํฐ ๋ด istiod
์ปจํธ๋กค ํ๋ ์ธ)์ ์ฐธ์กฐํ์ธ์.
์ฌ์ฉ ์ค์ธ Cloud Service Mesh ์ปจํธ๋กค ํ๋ ์ธ์ด ํ์คํ์ง ์์ ๊ฒฝ์ฐ ์ปจํธ๋กค ํ๋ ์ธ ๊ตฌํ ์๋ณ์ ์๋ด์ ๋ฐ๋ผ ์ปจํธ๋กค ํ๋ ์ธ ๊ตฌํ์ ํ์ธํ ์ ์์ต๋๋ค.
์ ํ์ฌํญ
๋ค์๊ณผ ๊ฐ์ ์ ํ์ฌํญ์ด ์ ์ฉ๋ฉ๋๋ค.
- GKE ํด๋ฌ์คํฐ๋ ์ง์๋๋ ๋ฆฌ์ ์ค ํ๋์ ์์ด์ผ ํฉ๋๋ค.
- GKE ๋ฒ์ ์ ์ง์๋๋ ๋ฒ์ ์ด์ด์ผ ํฉ๋๋ค.
- ํ๊ฒฝ์ ๋์ด๋ ํ๋ซํผ๋ง ์ง์๋ฉ๋๋ค.
- ์ถ์ ์ฑ๋ ๋ณ๊ฒฝ์ ์ง์๋์ง ์์ต๋๋ค.
asmcli
ํฌํจ ๊ด๋ฆฌํ Cloud Service Mesh์์ Fleet API ํฌํจ Cloud Service Mesh๋ก ๋ง์ด๊ทธ๋ ์ด์
ํ ์ ์์ต๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก --management manual
์์ --management automatic
๊น์ง์ Fleet API๋ฅผ ์ฌ์ฉํ์ฌ ๊ด๋ฆฌํ Cloud Service Mesh๋ฅผ ํ๋ก๋น์ ๋ํ ์ ์์ต๋๋ค.
- ๋ง์ด๊ทธ๋ ์ด์
๋ฐ ์
๊ทธ๋ ์ด๋๋ Mesh CA์ ํจ๊ป ์ค์น๋ ํด๋ฌ์คํฐ ๋ด Cloud Service Mesh ๋ฒ์ 1.9 ์ด์์์๋ง ์ง์๋ฉ๋๋ค. Istio CA(์ด์ ๋ช
์นญ: Citadel)๋ฅผ ์ฌ์ฉํ์ฌ ์ค์นํ๋ ๊ฒฝ์ฐ ๋จผ์ Mesh CA๋ก ๋ง์ด๊ทธ๋ ์ด์
ํด์ผ ํฉ๋๋ค.
- ํ์ฅ ํ๋๋ ์ด ๊ฐ์ด๋์ ์ค๋ช
๋์ด ์์ต๋๋ค.
- ๋ฉํฐ ํด๋ฌ์คํฐ์ ๋ํด์๋ ๋ค์ค ๊ธฐ๋ณธ ๋ฐฐํฌ ์ต์
๋ง ์ง์๋๋ฉฐ, ๋ฉํฐ ํด๋ฌ์คํฐ์ ๋ํด ๊ธฐ๋ณธ ์๊ฒฉ ๋ฐฐํฌ ์ต์
์ ์ง์๋์ง ์์ต๋๋ค.
istioctl ps
๋ ์ง์๋์ง ์์ต๋๋ค. ๋์ ๋ฌธ์ ํด๊ฒฐ์ ์ค๋ช
๋ ๋๋ก gcloud beta container fleet mesh debug
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ง์๋์ง ์๋ API:
EnvoyFilter
API
WasmPlugin
API
IstioOperator
API
Kubernetes Ingress
API
GKE Enterprise๋ฅผ ๊ตฌ๋
ํ์ง ์๊ณ ๋ ๊ด๋ฆฌํ ์ปจํธ๋กค ํ๋ ์ธ์ ์ฌ์ฉํ ์ ์์ง๋ง Google Cloud ์ฝ์์ ํน์ UI ์์์ ๊ธฐ๋ฅ์ GKE Enterprise ๊ตฌ๋
์์๊ฒ๋ง ์ ๊ณต๋ฉ๋๋ค. ๊ตฌ๋
์์ ๋น๊ตฌ๋
์๊ฐ ์ฌ์ฉํ ์ ์๋ ํญ๋ชฉ์ ๋ํ ์์ธํ ๋ด์ฉ์ GKE Enterprise ๋ฐ Cloud Service Mesh UI ์ฐจ์ด์ ์ ์ฐธ์กฐํ์ธ์.
๊ด๋ฆฌํ ์ ์ด ์์ญ์ ํ๋ก๋น์ ๋ ํ๋ก์ธ์ค ์ค์ ์ ํํ ์ฑ๋์ ํด๋นํ๋ Istio CRD๊ฐ ์ง์ ๋ ํด๋ฌ์คํฐ์ ์ค์น๋ฉ๋๋ค. ํด๋ฌ์คํฐ์ ๊ธฐ์กด Istio CRD๊ฐ ์์ผ๋ฉด ๋ฎ์ด์๋๋ค.
๊ด๋ฆฌํ Cloud Service Mesh๋ ๊ธฐ๋ณธ DNS ๋๋ฉ์ธ์ธ .cluster.local
๋ง ์ง์ํฉ๋๋ค.
๊ด๋ฆฌํ Cloud Service Mesh๋ฅผ ์๋ก ์ค์นํ๋ฉด Fleet์ ์ด ๋์์ด ์ฌ์ฉ ์ค์ ๋์ง ์์ ๋ค๋ฅธ ํด๋ฌ์คํฐ๊ฐ ํฌํจ๋์ด ์์ง ์๋ ํ Envoy๋ง ์ฌ์ฉํ์ฌ JWKS๋ฅผ ๊ฐ์ ธ์ต๋๋ค. ์ด๋ PILOT_JWT_ENABLE_REMOTE_JWKS=envoy
Istio ์ต์
๊ณผ ๋์ผํฉ๋๋ค. VPCSC_GA_SUPPORTED ์กฐ๊ฑด์ด ์๋ ์ค์น(์๋ ์ฐธ๊ณ )์ ๋นํด ServiceEntry
๋ฐ DestinationRule
๊ตฌ์ฑ์ ์ถ๊ฐ ๊ตฌ์ฑ์ด ํ์ํ ์ ์์ต๋๋ค. requestauthn-with-se.yaml.tmpl
์์๋ฅผ ์ฐธ์กฐํ์ธ์.
์ปจํธ๋กค ํ๋ ์ธ์์ VPC ์๋น์ค ์ ์ด๊ฐ ์ง์๋๋์ง(์ฆ, VPCSC_GA_SUPPORTED ์กฐ๊ฑด์ด ํ์๋๋์ง) ํ์ธํ์ฌ ํ์ฌ ์์
๋ชจ๋๊ฐ PILOT_JWT_ENABLE_REMOTE_JWKS=envoy
์ ๋์ผํ์ง ํ์ธํ ์ ์์ต๋๋ค.
๊ด๋ฆฌํ ๋ฐ์ดํฐ ์์ญ์ ์ถ๊ฐ ์ฌ์ด๋์นด(Cloud Service Mesh ์ฌ์ด๋์นด ์ ์ธ)๊ฐ ์๋ ์ํฌ๋ก๋์์๋ง ์ง์๋ฉ๋๋ค.
์ปจํธ๋กค ํ๋ ์ธ ์ฐจ์ด์
ISTIOD
์ TRAFFIC_DIRECTOR
์ปจํธ๋กค ํ๋ ์ธ ๊ตฌํ ๊ฐ์ ์ง์๋๋ ๊ธฐ๋ฅ์ด ๋ค๋ฆ
๋๋ค. ์ฌ์ฉ ์ค์ธ ๊ตฌํ์ ํ์ธํ๋ ค๋ฉด ์ปจํธ๋กค ํ๋ ์ธ ๊ตฌํ ์๋ณ์ ์ฐธ์กฐํ์ธ์.
- โ ๊ธฐ๋ฅ์ด ์ ๊ณต๋๋ฉฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ ์ค์ ๋์ด ์์์ ๋ํ๋
๋๋ค.
- โ - ๊ธฐ๋ฅ API๊ฐ ๋ค์ํ ํ๋ซํผ ๊ฐ์ ์ฐจ์ด๊ฐ ์์ ์ ์์์ ๋ํ๋
๋๋ค.
- * โ ์ ํ์ ๊ธฐ๋ฅ ์ฌ์ฉ ์ค์ ๋๋ ๊ธฐ๋ฅ ํ
์ด๋ธ์ ๋งํฌ๋ ๊ธฐ๋ฅ ๊ฐ์ด๋์ ์ค๋ช
๋ ๋๋ก ํด๋น ๊ธฐ๋ฅ์ด ํ๋ซํผ์ ์ง์๋๊ณ ์ฌ์ฉ ์ค์ ๋ ์ ์์์ ๋ํ๋
๋๋ค.
- ยง โ ๊ธฐ๋ฅ์ด ํ์ฉ ๋ชฉ๋ก์์ ์ง์๋จ์ ๋ํ๋
๋๋ค. ๊ด๋ฆฌํ Anthos Service Mesh์ ์ด์ ์ฌ์ฉ์๋ ์กฐ์ง ์์ค์์ ์๋์ผ๋ก ํ์ฉ ๋ชฉ๋ก์ ์ถ๊ฐ๋ฉ๋๋ค.
์ก์ธ์ค๋ฅผ ์์ฒญํ๊ฑฐ๋ ํ์ฉ ๋ชฉ๋ก ์ํ๋ฅผ ํ์ธํ๋ ค๋ฉด Google Cloud ์ง์ํ์ ๋ฌธ์ํ์ธ์.
- โ ๊ธฐ๋ฅ์ด ์ ๊ณต๋์ง ์๊ฑฐ๋ ์ง์๋์ง ์์์ ๋ํ๋
๋๋ค.
๊ธฐ๋ณธ ๊ธฐ๋ฅ ๋ฐ ์ ํ์ ๊ธฐ๋ฅ์ Google Cloud์ง์ํ์์ ์์ ํ๊ฒ ์ง์๋ฉ๋๋ค. ํ์ ๋ช
์์ ์ผ๋ก ๋์ด๋์ง ์์ ๊ธฐ๋ฅ์ ์ต์ ์ ์ง์์ ๋ฐ์ต๋๋ค.
์ปจํธ๋กค ํ๋ ์ธ ๊ตฌํ์ ๊ฒฐ์ ํ๋ ์์
Fleet์์ ๊ด๋ฆฌํ Cloud Service Mesh๋ฅผ ์ฒ์์ผ๋ก ํ๋ก๋น์ ๋ํ๋ฉด ์ฌ์ฉํ ์ปจํธ๋กค ํ๋ ์ธ ๊ตฌํ์ด ๊ฒฐ์ ๋ฉ๋๋ค. ๋์ผํ ๊ตฌํ์ด ํด๋น Fleet์์ ๊ด๋ฆฌํ Cloud Service Mesh๋ฅผ ํ๋ก๋น์ ๋ํ๋ ๋ชจ๋ ํด๋ฌ์คํฐ์ ์ฌ์ฉ๋ฉ๋๋ค.
๊ด๋ฆฌํ Cloud Service Mesh์ ์จ๋ณด๋ฉํ๋ ์ Fleet์ ํน์ ์์ธ๋ฅผ ์ ์ธํ๊ณ TRAFFIC_DIRECTOR
์ปจํธ๋กค ํ๋ ์ธ ๊ตฌํ์ ์์ ํฉ๋๋ค.
- ๊ธฐ์กด ๊ด๋ฆฌํ Cloud Service Mesh ์ฌ์ฉ์๋ 2024๋
6์ 30์ผ๊น์ง ๊ฐ์ Google Cloud์กฐ์ง์ ์ Fleet์ ๊ด๋ฆฌํ Cloud Service Mesh์ ์จ๋ณด๋ฉํ ๋
ISTIOD
์ปจํธ๋กค ํ๋ ์ธ ๊ตฌํ์ ์์ ํฉ๋๋ค.
์ด๋ฌํ ์ฌ์ฉ์ ์ค ํ ๋ช
์ธ ๊ฒฝ์ฐ ์ง์ํ์ ๋ฌธ์ํ์ฌ ์ด ๋์์ ๋ฏธ์ธ ์กฐ์ ํ ์ ์์ต๋๋ค.
๊ธฐ์กด ์ฌ์ฉ๋์ด ๋ณ๊ฒฝ ์์ด TRAFFIC_DIRECTOR
๊ตฌํ๊ณผ ํธํ๋์ง ์๋ ์ฌ์ฉ์๋ 2024๋
9์ 8์ผ๊น์ง ISTIOD
๊ตฌํ์ ๊ณ์ ๋ฐ๊ฒ ๋ฉ๋๋ค. (์ด๋ฌํ ์ฌ์ฉ์์๊ฒ๋ ์๋น์ค ๊ณต์ง๊ฐ ์ ์ก๋์์ต๋๋ค.)
- ๊ด๋ฆฌํ Cloud Service Mesh๋ฅผ ํ๋ก๋น์ ๋ํ ๋ Fleet์ Google Cloud ์ฉ GKE ํด๋ฌ์คํฐ์ ํด๋ฌ์คํฐ ๋ด Cloud Service Mesh ์ปจํธ๋กค ํ๋ ์ธ์ด ํฌํจ๋ ๊ฒฝ์ฐ
ISTIOD
์ปจํธ๋กค ํ๋ ์ธ ๊ตฌํ์ด ์์ ๋ฉ๋๋ค.
- Fleet์ ํด๋ฌ์คํฐ์์ GKE Sandbox๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๊ด๋ฆฌํ Cloud Service Mesh๋ฅผ ํ๋ก๋น์ ๋ํ ๋
ISTIOD
์ปจํธ๋กค ํ๋ ์ธ ๊ตฌํ์ด ์์ ๋ฉ๋๋ค.
๊ด๋ฆฌํ ์ ์ด ์์ญ ์ง์ ๊ธฐ๋ฅ
์ค์น, ์
๊ทธ๋ ์ด๋, ๋กค๋ฐฑ
๊ธฐ๋ฅ |
๊ด๋ฆฌํ(TD) |
๊ด๋ฆฌํ(istiod) |
Fleet ๊ธฐ๋ฅ API๋ฅผ ์ฌ์ฉํ์ฌ GKE ํด๋ฌ์คํฐ์ ์ค์น |
|
|
Mesh CA๋ฅผ ์ฌ์ฉํ๋ ASM 1.9 ๋ฒ์ ์์ ์
๊ทธ๋ ์ด๋ |
|
|
1.9 ์ด์ ์ Cloud Service Mesh ๋ฒ์ ์์ ์ง์ (๊ฑด๋๋ฐ๊ธฐ ์์ค) ์
๊ทธ๋ ์ด๋(๊ฐ์ ์
๊ทธ๋ ์ด๋ ์ค๋ช
์ฐธ์กฐ) |
|
|
Istio OSS์์ ์ง์ (๊ฑด๋๋ฐ๊ธฐ ์์ค) ์
๊ทธ๋ ์ด๋(๊ฐ์ ์
๊ทธ๋ ์ด๋ ์ค๋ช
์ฐธ์กฐ) |
|
|
Istio-on-GKE ๋ถ๊ฐ๊ธฐ๋ฅ์์ ์ง์ (๊ฑด๋๋ฐ๊ธฐ ์์ค) ์
๊ทธ๋ ์ด๋(๊ฐ์ ์
๊ทธ๋ ์ด๋ ์ค๋ช
์ฐธ์กฐ) |
|
|
์ ํ ๊ธฐ๋ฅ ์ฌ์ฉ ์ค์ |
|
|
ํ๊ฒฝ
ํ์ฅ
๊ธฐ๋ฅ |
๊ด๋ฆฌํ(TD) |
๊ด๋ฆฌํ(istiod) |
ํด๋ฌ์คํฐ๋น 1,000๊ฐ ์๋น์ค ๋ฐ 5,000๊ฐ ์ํฌ๋ก๋ |
|
|
๋ฉ์๋น 50๊ฐ์ ํค๋๋ฆฌ์ค ์๋น์ค ํฌํธ, ํค๋๋ฆฌ์ค ์๋น์ค ํฌํธ๋น 36๊ฐ์ ํฌ๋ |
|
|
๊ธฐ๋ฅ |
๊ด๋ฆฌํ(TD) |
๊ด๋ฆฌํ(istiod) |
๋จ์ผ ๋คํธ์ํฌ |
|
|
๋ค์ค ๋คํธ์ํฌ |
|
|
๋จ์ผ ํ๋ก์ ํธ |
|
|
๊ณต์ VPC๊ฐ ํฌํจ๋ ๋ค์ค ํ๋ก์ ํธ |
|
|
๋ฉํฐ ํด๋ฌ์คํฐ ๋ฐฐํฌ
๊ธฐ๋ฅ |
๊ด๋ฆฌํ(TD) |
๊ด๋ฆฌํ(istiod) |
๋ค์ค ๊ธฐ๋ณธ |
|
|
๊ธฐ๋ณธ ์๊ฒฉ |
|
|
์ ์ธ์ API๋ฅผ ์ฌ์ฉํ ๋ฉํฐ ํด๋ฌ์คํฐ ์๋ํฌ์ธํธ ๊ฒ์ |
|
|
์๊ฒฉ ๋ณด์ ๋น๋ฐ์ ์ฌ์ฉํ ๋ฉํฐ ํด๋ฌ์คํฐ ์๋ํฌ์ธํธ ๊ฒ์ |
|
|
์ ์ธ์ API ๋ฐ ๊ฐ๋จํ ํ ํด๋ก์ง๋ฅผ ์ฌ์ฉํ ๋ฉํฐ ํด๋ฌ์คํฐ ์๋ํฌ์ธํธ ๊ฒ์ |
|
|
์ฉ์ด์ ๋ํ ์ฐธ๊ณ ์ฌํญ
- ๋ค์ค ๊ธฐ๋ณธ ๊ตฌ์ฑ์ ํด๋น ๊ตฌ์ฑ์ ๋ชจ๋ ํด๋ฌ์คํฐ์ ๋ณต์ ํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค.
- ๊ธฐ๋ณธ ์๊ฒฉ ๊ตฌ์ฑ์ ๊ฒฝ์ฐ ๋จ์ผ ํด๋ฌ์คํฐ๊ฐ ๊ตฌ์ฑ์ ํฌํจํ๊ณ ์ ๋ณด ์์ค๋ก ๊ณ ๋ ค๋ฉ๋๋ค.
- Cloud Service Mesh๋ ์ผ๋ฐ ์ฐ๊ฒฐ์ ๊ธฐ์ค์ผ๋ก ๊ฐ์ํ๋ ๋คํธ์ํฌ ์ ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ํฌ๋ก๋ ์ธ์คํด์ค๋ ๊ฒ์ดํธ์จ์ด ์์ด ์ง์ ํต์ ํ ์ ์๋ ๊ฒฝ์ฐ ๋์ผํ ๋คํธ์ํฌ์ ์์ต๋๋ค.
- ๋ฉํฐ ํด๋ฌ์คํฐ ์๋ํฌ์ธํธ ๊ฒ์์ ์ํ ๊ฐ๋จํ ํ ํด๋ก์ง๋ Fleet์ ๋ชจ๋ ํด๋ฌ์คํฐ๊ฐ ์๋ํฌ์ธํธ ๊ฒ์์ ์ฐธ์ฌํ๊ฑฐ๋ ์ฐธ์ฌํ์ง ์๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ง์๋์ง ์๋ ๋ณต์กํ ํ ํด๋ก์ง์๋ (a) ๋จ๋ฐฉํฅ ์๋ํฌ์ธํธ ๊ฒ์(์: ํด๋ฌ์คํฐ A๋ ํด๋ฌ์คํฐ B์ ์๋ํฌ์ธํธ๋ฅผ ๊ฒ์ํ ์ ์์ง๋ง ๊ทธ ๋ฐ๋๋ ๋ถ๊ฐ๋ฅํจ) ๋ฐ (b) ์ฐ๊ฒฐ๋์ง ์์ ์๋ํฌ์ธํธ ๊ฒ์ ๋คํธ์ํฌ(์: ํด๋ฌ์คํฐ A์ B๋ ์๋ก์ ์๋ํฌ์ธํธ๋ฅผ ๊ฒ์ํ ์ ์๊ณ ํด๋ฌ์คํฐ C์ D๋ ์๋ก์ ์๋ํฌ์ธํธ๋ฅผ ๊ฒ์ํ ์ ์์ง๋ง A/B์ C/D๋ ์๋ก์ ์๋ํฌ์ธํธ๋ฅผ ๊ฒ์ํ ์ ์์)๊ฐ ์์ต๋๋ค.
๊ธฐ๋ณธ ์ด๋ฏธ์ง
โ ๊ด๋ฆฌํ(TD) ์ปจํธ๋กค ํ๋ ์ธ์ด ํฌํจ๋ Cloud Service Mesh๋ distroless ์ด๋ฏธ์ง ์ ํ๋ง ์ง์ํฉ๋๋ค. ๋ณ๊ฒฝ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
Distroless ์ด๋ฏธ์ง์๋ ์ต์ํ์ ๋ฐ์ด๋๋ฆฌ๊ฐ ์์ผ๋ฏ๋ก bash ๋๋ curl๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ ๋ช
๋ น์ด๋ distroless ์ด๋ฏธ์ง์ ์์ผ๋ฏ๋ก ์คํํ ์ ์์ต๋๋ค.
ํ์ง๋ง ์์ ์ปจํ
์ด๋๋ฅผ ์ฌ์ฉํ์ฌ ์คํ ์ค์ธ ์ํฌ๋ก๋ ํฌ๋์ ์ฐ๊ฒฐํ์ฌ ๊ฒ์ฌํ๊ณ ์ปค์คํ
๋ช
๋ น์ด๋ฅผ ์คํํ ์ ์์ต๋๋ค. ์์๋ Cloud Service Mesh ๋ก๊ทธ ์์ง์ ์ฐธ๊ณ ํ์ธ์.
๋ณด์
VPC ์๋น์ค ์ ์ด
์ธ์ฆ์ ๋ฐฐํฌ ๋ฐ ์ํ ๋ฉ์ปค๋์ฆ
๊ธฐ๋ฅ |
๊ด๋ฆฌํ(TD) |
๊ด๋ฆฌํ(istiod) |
์ํฌ๋ก๋ ์ธ์ฆ์ ๊ด๋ฆฌ |
|
|
์ธ๊ทธ๋ ์ค ๋ฐ ์ด๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด์ ์ธ๋ถ ์ธ์ฆ์ ๊ด๋ฆฌ |
|
|
์ธ์ฆ ๊ธฐ๊ด(CA) ์ง์
๋ณด์ ๊ธฐ๋ฅ
Istio ๋ณด์ ๊ธฐ๋ฅ ์ง์ ์ธ์๋ Cloud Service Mesh๋ ์ ํ๋ฆฌ์ผ์ด์
๋ณด์์ด ๊ฐํ๋๋๋ก ๋ ๋ง์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
์น์ธ ์ ์ฑ
๊ธฐ๋ฅ |
๊ด๋ฆฌํ(TD) |
๊ด๋ฆฌํ(istiod) |
์น์ธ v1beta1 ์ ์ฑ
|
โ |
|
์ปค์คํ
์น์ธ ์ ์ฑ
|
ยง |
|
โ TRAFFIC_DIRECTOR
์ปจํธ๋กค ํ๋ ์ธ ๊ตฌํ์ rules.from.source.RemoteIp
๋ฐ rules.from.source.NotRemoteIp
ํ๋๋ฅผ ์ง์ํ์ง ์์ต๋๋ค.
ํผ์ด ์ธ์ฆ
๊ธฐ๋ฅ |
๊ด๋ฆฌํ(TD) |
๊ด๋ฆฌํ(istiod) |
์๋ mTLS |
|
|
mTLS PERMISSIVE ๋ชจ๋ |
|
|
mTLS STRICT ๋ชจ๋ |
* |
* |
mTLS DISABLE ๋ชจ๋ |
|
|
์ธ์ฆ ์์ฒญ
๊ธฐ๋ฅ |
๊ด๋ฆฌํ(TD) |
๊ด๋ฆฌํ(istiod) |
JWT ์ธ์ฆ(์ฐธ๊ณ 1) |
|
|
JWT ํด๋ ์ ๊ธฐ๋ฐ ๋ผ์ฐํ
|
|
|
ํค๋์ ๋ํ JWT ์ฌ๋ณธ ํด๋ ์ |
|
|
์ฐธ๊ณ :
- ์ 3์ JWT๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ ์ค์ ๋ฉ๋๋ค.
- RequestAuthentication API๋ฅผ ์ ์ํ ๋ JWKSURI์ ์ ์ฒด FQDN/ํธ์คํธ ์ด๋ฆ์ ์ถ๊ฐํฉ๋๋ค.
- ๊ด๋ฆฌํ ์ปจํธ๋กค ํ๋ ์ธ์ JWKS URI๋ฅผ ์ง์ ํ ๋ Envoy๊ฐ JWKS๋ฅผ ๊ฐ์ ธ์ค๋๋ก ํฉ๋๋ค.
์๊ฒฉ ๋ถ์
์ธก์ ํญ๋ชฉ
๊ธฐ๋ฅ |
๊ด๋ฆฌํ(TD) |
๊ด๋ฆฌํ(istiod) |
Cloud Monitoring(HTTP ํ๋ก์ ๋ด ์ธก์ ํญ๋ชฉ) |
|
|
Cloud Monitoring(TCP ํ๋ก์ ๋ด ์ธก์ ํญ๋ชฉ) |
|
|
Grafana๋ก Prometheus ์ธก์ ํญ๋ชฉ ๋ด๋ณด๋ด๊ธฐ(Envoy ์ธก์ ํญ๋ชฉ๋ง ํด๋น) |
* |
* |
Kiali๋ก Prometheus ์ธก์ ํญ๋ชฉ ๋ด๋ณด๋ด๊ธฐ |
|
|
Cloud Service Mesh ๋์๋ณด๋๊ฐ ํฌํจ๋์ง ์๋ Google Cloud Managed Service for Prometheus |
* |
* |
Istio Telemetry API |
โ |
|
ํ๋ก์ธ์ค ๋ด๋ถ ๋๋ ์ธ๋ถ์ ์ปค์คํ
์ด๋ํฐ/๋ฐฑ์๋ |
|
|
์์ ์๊ฒฉ ๋ถ์ ๋ฐ ๋ก๊น
๋ฐฑ์๋ |
|
|
โ TRAFFIC_DIRECTOR
์ปจํธ๋กค ํ๋ ์ธ์ ์ก์ธ์ค ๋ก๊ทธ ๋ฐ ํธ๋ ์ด์ค๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ์ฌ์ฉ๋๋ Istio ์๊ฒฉ ๋ถ์ API์ ํ์ ์งํฉ์ ์ง์ํฉ๋๋ค. TRAFFIC_DIRECTOR
์ปจํธ๋กค ํ๋ ์ธ์ ํธ๋ ์ด์ค ์ํ๋ง ๋ ์ดํธ ๊ตฌ์ฑ์ ์ง์ํ์ง ์์ต๋๋ค.
ํ๋ก์ ์์ฒญ ๋ก๊น
์ถ์
๊ธฐ๋ฅ |
๊ด๋ฆฌํ(TD) |
๊ด๋ฆฌํ(istiod) |
Cloud Trace |
* |
* |
Jaeger ์ถ์ (๊ณ ๊ฐ ๊ด๋ฆฌํ Jaeger ์ฌ์ฉ ๊ฐ๋ฅ) |
|
ํธํ ๊ฐ๋ฅ |
Zipkin ์ถ์ (๊ณ ๊ฐ ๊ด๋ฆฌํ Zipkin ์ฌ์ฉ ๊ฐ๋ฅ) |
|
ํธํ ๊ฐ๋ฅ |
๋คํธ์ํน
ํธ๋ํฝ ๊ฐ๋ก์ฑ๊ธฐ ๋ฐ ๋ฆฌ๋๋ ์
๋ฉ์ปค๋์ฆ
๊ธฐ๋ฅ |
๊ด๋ฆฌํ(TD) |
๊ด๋ฆฌํ(istiod) |
CAP_NET_ADMIN ๊ณผ ํจ๊ป init ์ปจํ
์ด๋๋ฅผ ์ฌ์ฉํ๋ iptables ์ฌ์ฉ |
|
โ |
Istio ์ปจํ
์ด๋ ๋คํธ์ํฌ ์ธํฐํ์ด์ค(CNI) |
|
|
ํ์ดํธ๋ฐ์ค ์ฌ์ด๋์นด |
|
|
โ init
์ปจํ
์ด๋ ๋์ ์ปจํ
์ด๋ ๋คํธ์ํฌ ์ธํฐํ์ด์ค(CNI)๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
ํ๋กํ ์ฝ ์ง์
๊ธฐ๋ฅ |
๊ด๋ฆฌํ(TD) |
๊ด๋ฆฌํ(istiod) |
IPv4 |
|
|
HTTP/1.1 |
|
|
HTTP/2 |
|
|
TCP ๋ฐ์ดํธ ์คํธ๋ฆผ(์ฐธ๊ณ 1) |
|
|
gRPC |
|
|
IPv6 |
โ |
|
์ฐธ๊ณ :
- TCP๋ ๋คํธ์ํน ๋ฐ TCP ์ธก์ ํญ๋ชฉ ์์ง์ ์ง์๋๋ ํ๋กํ ์ฝ์ด์ง๋ง ๋ณด๊ณ ๋์ง๋ ์์ต๋๋ค. ์ธก์ ํญ๋ชฉ์ Google Cloud ์ฝ์์ HTTP ์๋น์ค์๋ง ํ์๋ฉ๋๋ค.
- WebSocket, MongoDB, Redis, Kafka, Cassandra, RabbitMQ, Cloud SQL ๋ฑ์ ํ๋กํ ์ฝ์ ์ํ ๋ ์ด์ด 7 ๊ธฐ๋ฅ์ผ๋ก ๊ตฌ์ฑ๋ ์๋น์ค๋ ์ง์๋์ง ์์ต๋๋ค. TCP ๋ฐ์ดํธ ์คํธ๋ฆผ ์ง์์ ์ฌ์ฉํ์ฌ ํ๋กํ ์ฝ์ ์๋์ํฌ ์ ์์ต๋๋ค. TCP ๋ฐ์ดํธ ์คํธ๋ฆผ์์ ํ๋กํ ์ฝ์ ์ง์ํ ์ ์๋ ๊ฒฝ์ฐ(์: Kafka๊ฐ ํ๋กํ ์ฝ๋ณ ์๋ต์์ ๋ฆฌ๋๋ ์
์ฃผ์๋ฅผ ์ ์กํ๊ณ ์ด ๋ฆฌ๋๋ ์
์ด Cloud Service Mesh์ ๋ผ์ฐํ
๋ก์ง๊ณผ ํธํ๋์ง ์๋ ๊ฒฝ์ฐ)์๋ ํ๋กํ ์ฝ์ด ์ง์๋์ง ์์ต๋๋ค.
-
โ ํ๋ก์๋ฆฌ์ค gRPC์์ IPv6 ์ด์ค ์คํ ๊ธฐ๋ฅ์ C++ ๋ฐ Python, gRPC Go v1.71 ๋๋ gRPC Node.js v1.12์ gRPC 1.66.1 ์ด์์์๋ง ์ง์๋ฉ๋๋ค.
์ด์ค ์คํ์ ์ง์ํ์ง ์๋ gRPC ๋ฒ์ ์ผ๋ก ์ด์ค ์คํ ๊ธฐ๋ฅ์ ๊ตฌ์ฑํ๋ ค๊ณ ํ๋ฉด ํด๋ผ์ด์ธํธ๋ Traffic Director์์ ์ ์กํ ์ฒซ ๋ฒ์งธ ์ฃผ์๋ง ์ฌ์ฉํฉ๋๋ค.
Envoy ๋ฐฐํฌ
๊ธฐ๋ฅ |
๊ด๋ฆฌํ(TD) |
๊ด๋ฆฌํ(istiod) |
์ฌ์ด๋์นด |
|
|
์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด |
|
|
์ฌ์ด๋์นด์์ ์ง์ ์ด๊ทธ๋ ์ค |
|
|
์ด๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด๋ฅผ ์ฌ์ฉํ ์ด๊ทธ๋ ์ค |
* |
* |
CRD ์ง์
๊ธฐ๋ฅ |
๊ด๋ฆฌํ(TD) |
๊ด๋ฆฌํ(istiod) |
์ฌ์ด๋์นด ๋ฆฌ์์ค |
|
|
์๋น์ค ํญ๋ชฉ ๋ฆฌ์์ค |
|
|
๋น์จ, ๊ฒฐํจ ์ฝ์
, ๊ฒฝ๋ก ์ผ์น, ๋ฆฌ๋๋ ์
, ์ฌ์๋, ์ฌ์์ฑ, ์ ํ ์๊ฐ, ์ฌ์๋, ๋ฏธ๋ฌ๋ง, ํค๋ ์กฐ์, CORS ๋ผ์ฐํ
๊ท์น |
|
|
`EnvoyFilter` API |
ยง |
|
`WasmPlugin` API |
|
|
Istio Operator |
|
|
Istio ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด์ฉ ๋ถํ ๋ถ์ฐ๊ธฐ
๊ธฐ๋ฅ |
๊ด๋ฆฌํ(TD) |
๊ด๋ฆฌํ(istiod) |
์๋ ํํฐ ์ธ๋ถ ๋ถํ ๋ถ์ฐ๊ธฐ |
|
|
Google Cloud ๋ด๋ถ ๋ถํ ๋ถ์ฐ๊ธฐ |
* |
* |
์๋น์ค ๋ฉ์ ํด๋ผ์ฐ๋ ๊ฒ์ดํธ์จ์ด
๊ธฐ๋ฅ |
๊ด๋ฆฌํ(TD) |
๊ด๋ฆฌํ(istiod) |
์๋น์ค ๋ฉ์ ํด๋ผ์ฐ๋ ๊ฒ์ดํธ์จ์ด |
|
|
Kubernetes Gateway API
๊ธฐ๋ฅ |
๊ด๋ฆฌํ(TD) |
๊ด๋ฆฌํ(istiod) |
Kubernetes Gateway API |
|
|
๋ถํ ๋ถ์ฐ ์ ์ฑ
๊ธฐ๋ฅ |
๊ด๋ฆฌํ(TD) |
๊ด๋ฆฌํ(istiod) |
๋ผ์ด๋ ๋ก๋น |
|
|
์ต์ ์ฐ๊ฒฐ ์ |
|
|
๋ฌด์์ |
|
|
ํจ์ค ์ค๋ฃจ |
|
|
์ผ๊ด๋ ํด์ |
|
|
์ง์ญ |
|
|
GCPTrafficDistributionPolicy |
|
|
GCPBackendPolicy |
|
|
์๋น์ค ํญ๋ชฉ
๊ธฐ๋ฅ |
๊ด๋ฆฌํ(TD) |
๊ด๋ฆฌํ(istiod) |
ServiceEntry v1beta1 |
โ |
|
โ TRAFFIC_DIRECTOR
์ปจํธ๋กค ํ๋ ์ธ ๊ตฌํ์ ๋ค์ ํ๋์ ํ๋์ ๊ฐ์ ์ง์ํ์ง ์์ต๋๋ค.
workloadSelector
ํ๋
endpoints[].network
ํ๋
endpoints[].locality
ํ๋
endpoints[].weight
ํ๋
endpoints[].serviceAccount
ํ๋
resolution
ํ๋์ DNS_ROUND_ROBIN
๊ฐ
location
ํ๋์ MESH_INTERNAL
๊ฐ
endpoints[].address
ํ๋์ Unix ๋๋ฉ์ธ ์์ผ ์ฃผ์
subjectAltNames
ํ๋
๋์ ๊ท์น
๊ธฐ๋ฅ |
๊ด๋ฆฌํ(TD) |
๊ด๋ฆฌํ(istiod) |
DestinationRule v1beta1 |
โ |
|
โ TRAFFIC_DIRECTOR
์ปจํธ๋กค ํ๋ ์ธ ๊ตฌํ์ ๋ค์ ํ๋๋ฅผ ์ง์ํ์ง ์์ต๋๋ค.
trafficPolicy.loadBalancer.localityLbSetting
ํ๋
trafficPolicy.tunnel
ํ๋
trafficPolicy.tls.credentialName
ํ๋
trafficPolicy.portLevelSettings[].tls.credentialName
ํ๋
๋ํ TRAFFIC_DIRECTOR
์ปจํธ๋กค ํ๋ ์ธ ๊ตฌํ์์๋ ํ์ ์งํฉ์ ์ ์ํ๋ ๋์ ๊ท์น์ด Kubernetes ์๋น์ค ๋๋ ServiceEntry์ ๋์ผํ ๋ค์์คํ์ด์ค ๋ฐ ํด๋ฌ์คํฐ์ ์์ด์ผ ํฉ๋๋ค.
Sidecar
๊ธฐ๋ฅ |
๊ด๋ฆฌํ(TD) |
๊ด๋ฆฌํ(istiod) |
Sidecar v1beta1 |
โ |
|
โ TRAFFIC_DIRECTOR
์ปจํธ๋กค ํ๋ ์ธ ๊ตฌํ์ ๋ค์ ํ๋์ ํ๋์ ๊ฐ์ ์ง์ํ์ง ์์ต๋๋ค.
ingress
ํ๋
egress.port
ํ๋
egress.bind
ํ๋
egress.captureMode
ํ๋
inboundConnectionPool
ํ๋
MeshConfig
๊ธฐ๋ฅ |
๊ด๋ฆฌํ(TD) |
๊ด๋ฆฌํ(istiod) |
DiscoverySelectors |
โ |
|
LocalityLB |
ยง |
|
ExtensionProviders |
ยง |
|
CACert |
|
|
ImageType - distroless |
ยง |
|
OutboundTrafficPolicy |
ยง |
|
defaultProviders.accessLogging |
|
|
defaultProviders.tracing |
|
|
defaultConfig.tracing.stackdriver |
ยง |
|
accessLogFile |
ยง |
|
โ TRAFFIC_DIRECTOR
์ปจํธ๋กค ํ๋ ์ธ ๊ตฌํ์ discoverySelectors
๋ก ๊ตฌ์ฑ๋ ๋ฉ์์ ๋ค์์คํ์ด์ค๊ฐ ์์ ๋ ๋ ํฉ์ฑ ์๋น์ค ๋ฐ ์์ฑ๋ ๋คํธ์ํฌ ์๋ํฌ์ธํธ ๊ทธ๋ฃน์ ์๋์ผ๋ก ์ญ์ ํ์ง ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ์ํํ๋ ค๋ฉด ๋ ์ด์ discoverySelectors
์ ์ง์ ๋์ง ์์ ๋ค์์คํ์ด์ค์์ ํฉ์ฑ ์๋น์ค๋ฅผ ์๋์ผ๋ก ์ญ์ ํ๊ณ ์ถ๊ฐ๋ ์๋น์ค ์ฃผ์์ ์ญ์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ ๋ฆฌ ์๋ด๋ ์ ๋ฆฌ ๋ฌธ์ ํด๊ฒฐ์์ ํ์ธํ ์ ์์ต๋๋ค.
ProxyConfig
๊ธฐ๋ฅ |
๊ด๋ฆฌํ(TD) |
๊ด๋ฆฌํ(istiod) |
DNS ํ๋ก์(ISTIO_META_DNS_CAPTURE, ISTIO_META_DNS_AUTO_ALLOCATE) |
|
|
HTTP/1.0 ์ง์(ISTIO_META_NETWORK) |
|
|
์ด๋ฏธ์ง ์ ํ(distroless ๋๋ ๊ธฐ๋ณธ ์ด๋ฏธ์ง) |
โ |
|
Kubernetes ๋ค์ดํฐ๋ธ ์ฌ์ด๋์นด(ENABLE_NATIVE_SIDECARS) |
|
|
โ ์ฝ์
์๋ distroless ์ด๋ฏธ์ง๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๋ฆฌ์
GKE ํด๋ฌ์คํฐ๋ ๋ค์ ๋ฆฌ์ ์ค ํ๋์ ๋๋ ๋ค์ ๋ฆฌ์ ์ค ํ๋์ ์์ญ์ ์์ด์ผ ํฉ๋๋ค.
์ง์ญ |
์์น |
africa-south1 |
์ํ๋ค์ค๋ฒ๊ทธ |
asia-east1 |
ํ์ด์ |
asia-east2 |
ํ์ฝฉ |
asia-northeast1 |
์ผ๋ณธ ๋์ฟ |
asia-northeast2 |
์ผ๋ณธ ์ค์ฌ์นด |
asia-northeast3 |
๋ํ๋ฏผ๊ตญ |
asia-south1 |
์ธ๋ ๋ญ๋ฐ์ด |
asia-south2 |
์ธ๋ ๋ธ๋ฆฌ |
asia-southeast1 |
์ฑ๊ฐํฌ๋ฅด |
asia-southeast2 |
์์นด๋ฅดํ |
australia-southeast1 |
์ค์คํธ๋ ์ผ๋ฆฌ์ ์๋๋ |
australia-southeast2 |
์ค์คํธ๋ ์ผ๋ฆฌ์ ๋ฉ๋ฒ๋ฅธ |
europe-central2 |
ํด๋๋ |
europe-north1 |
ํ๋๋ |
europe-southwest1 |
์คํ์ธ |
europe-west1 |
๋ฒจ๊ธฐ์ |
europe-west2 |
์๊ธ๋๋ |
europe-west3 |
๋
์ผ ํ๋ํฌํธ๋ฅดํธ |
europe-west4 |
๋ค๋๋๋ |
europe-west6 |
์ค์์ค |
europe-west8 |
์ดํ๋ฆฌ์ ๋ฐ๋ผ๋
ธ |
europe-west9 |
ํ๋์ค |
europe-west10 |
๋
์ผ ๋ฒ ๋ฅผ๋ฆฐ |
europe-west12 |
์ดํ๋ฆฌ์ ํ ๋ฆฌ๋
ธ |
me-central1 |
๋ํ |
me-central2 |
์ฌ์ฐ๋์๋ผ๋น์ ๋ด๋ง |
me-west1 |
ํ
์๋น๋ธ |
northamerica-northeast1 |
์บ๋๋ค ๋ชฌํธ๋ฆฌ์ฌ |
northamerica-northeast2 |
์บ๋๋ค ํ ๋ก ํ |
southamerica-east1 |
๋ธ๋ผ์ง |
southamerica-west1 |
์น ๋ |
us-central1 |
์์ด์ค์ |
us-east1 |
์ฌ์ฐ์ค์บ๋กค๋ผ์ด๋ |
us-east4 |
๋ถ๋ฒ์ง๋์ |
us-east5 |
์คํ์ด์ค |
us-south1 |
๋๋ฌ์ค |
us-west1 |
์ค๋ฆฌ๊ฑด |
us-west2 |
๋ก์ค์ค์ ค๋ ์ค |
us-west3 |
์ํธ๋ ์ดํฌ์ํฐ |
us-west4 |
๋ผ์ค๋ฒ ์ด๊ฑฐ์ค |
์ฌ์ฉ์ ์ธํฐํ์ด์ค
๊ธฐ๋ฅ |
๊ด๋ฆฌํ(TD) |
๊ด๋ฆฌํ(istiod) |
Google Cloud ์ฝ์์ Cloud Service Mesh ๋์๋ณด๋ |
|
|
Cloud Monitoring |
|
|
Cloud Logging |
|
|
๊ธฐ๋ฅ |
๊ด๋ฆฌํ(TD) |
๊ด๋ฆฌํ(istiod) |
gcloud beta container fleet mesh debug ๋๊ตฌ |
|
|