GKE์์ ๊ด๋ฆฌํ Cloud Service Mesh ์ปจํธ๋กค ํ๋ ์ธ ํ๋ก๋น์ ๋
Cloud Service Mesh๋ ๊ฐ๋จํ ์ฌ์ฉ ์ค์ ํ ์ ์๋ Google ๊ด๋ฆฌํ ์๋น์ค ๋ฉ์์ ๋๋ค. Google์ ๊ณ ๊ฐ์ ์ํด ์์ ์ฑ, ์ ๊ทธ๋ ์ด๋, ํ์ฅ, ๋ณด์์ ์ฒ๋ฆฌํฉ๋๋ค.
์ด ํ์ด์ง์์๋ Fleet API๋ฅผ ์ฌ์ฉํ์ฌ Istio API๋ฅผ ํตํด ๊ด๋ฆฌํ Cloud Service Mesh๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
๊ธฐ๋ณธ ์๊ฑด
์ด ๊ฐ์ด๋์์๋ ์ฌ์ฉ์์๊ฒ ๋ค์์ด ์ด๋ฏธ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
- Cloud ํ๋ก์ ํธ
- Cloud Billing ๊ณ์
- Cloud Service Mesh๋ฅผ ํ๋ก๋น์ ๋ํ๋ ๋ฐ ํ์ํ ๊ถํ ํ๋
- ํด๋ฌ์คํฐ ๋ฐ ๋ ธ๋ ํ์์ ์ํฌ๋ก๋ ์์ด๋ดํฐํฐ ์ฌ์ฉ ์ค์
์๊ตฌ์ฌํญ
- ์ง์๋๋ ๋ฆฌ์ ์ค ํ๋์์ ์ง์๋๋ GKE ๋ฒ์ ์ด ์๋ ํด๋ฌ์คํฐ๊ฐ ํ ๊ฐ ์ด์ ์์ด์ผ ํฉ๋๋ค.
๊ด๋ฆฌํ Cloud Service Mesh๋ GKE ์ถ์ ์ฑ๋์ ์ฌ์ฉํ์ฌ ์์ ์ฑ๊ณผ ์ ๊ทธ๋ ์ด๋ ์๋ ๊ฐ์ ๊ท ํ์ ๋ง์ถฅ๋๋ค. Cloud Service Mesh ํด๋ฌ์คํฐ ๋ด ๊ตฌ์ฑ์์(CNI, MDPC, ํ๋ก์, Istio CRD ํฌํจ)์ ์๋ก์ด ๋ณ๊ฒฝ์ฌํญ์ GKE ์ ์ ์ฑ๋์ ๊ตฌ๋ ํ๋ ํด๋ฌ์คํฐ์ ๋จผ์ ์ถ์๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ถฉ๋ถํ ์์ ์ฑ์ ์ ์ฆํ๋ฉด GKE ์ผ๋ฐ ์ฑ๋๋ก ์น๊ฒฉ๋๊ณ , ๋ง์ง๋ง์ผ๋ก GKE ์์ ํ ๋ฒ์ ์ฑ๋๋ก ์น๊ฒฉ๋ฉ๋๋ค.
- ๊ด๋ฆฌํ Cloud Service Mesh๋ GKE ์ถ์ ์ฑ๋์ ์์ ํ๊ฒ ๋ณ๊ฒฝํ๋ ๊ฒ์ ์ง์ํ์ง ์์ต๋๋ค.
- GKE ์ถ์ ์ฑ๋์ ๋ณ๊ฒฝํ๋ฉด Cloud Service Mesh๋ ํ์ฌ GKE ์ถ์ ์ฑ๋์ ๋ง๊ฒ ํด๋ฌ์คํฐ ๋ด ๊ตฌ์ฑ์์(CNI, MDPC, ๊ธฐ๋ณธ์ผ๋ก ์ฝ์ ๋ ํ๋ก์ ๋ฒ์ , Istio CRD)๋ฅผ ์๋์ผ๋ก ์ ๊ทธ๋ ์ด๋/๋ค์ด๊ทธ๋ ์ด๋ํฉ๋๋ค.
ํด๋ฌ์คํฐ์ ๊ด๋ฆฌํ Cloud Service Mesh๊ฐ ํด๋ฌ์คํฐ์ ์ค์นํ๋ ํ์ ๊ตฌ์ฑ์์๋ฅผ ์ํ ์ถฉ๋ถํ ์ฉ๋์ด ์์ด์ผ ํฉ๋๋ค.
kube-system
๋ค์์คํ์ด์ค์mdp-controller
๋ฐฐํฌ์๋ CPU 50m, ๋ฉ๋ชจ๋ฆฌ 128Mi๊ฐ ํ์ํฉ๋๋ค.kube-system
๋ค์์คํ์ด์ค์istio-cni-node
DaemonSet์๋ ๊ฐ ๋ ธ๋์์ cpu 100m, ๋ฉ๋ชจ๋ฆฌ 100Mi๊ฐ ํ์ํฉ๋๋ค.
์กฐ์ง ์ ์ฑ
constraints/compute.disableInternetNetworkEndpointGroup
์ด ์ฌ์ฉ ์ค์ง๋์ด ์์ด์ผ ํฉ๋๋ค. ์ ์ฑ ์ ์ฌ์ฉ ์ค์ ํ๋ฉด ServiceEntry๊ฐ ์๋ํ์ง ์์ ์ ์์ต๋๋ค.๊ด๋ฆฌํ Cloud Service Mesh๋ฅผ ํ๋ก๋น์ ๋ํ ํด๋ผ์ด์ธํธ ๋จธ์ ์ด API ์๋ฒ์ ๋คํธ์ํฌ๋ก ์ฐ๊ฒฐ๋์ด ์๋์ง ํ์ธํฉ๋๋ค.
ํด๋ฌ์คํฐ๋ฅผ Fleet์ ๋ฑ๋กํด์ผ ํฉ๋๋ค. ์ด๋ ์๋ด์ ํฌํจ๋๊ฑฐ๋ ํ๋ก๋น์ ๋ ์ ์ ๋ณ๋๋ก ์ํ๋ ์ ์์ต๋๋ค.
ํ๋ก์ ํธ์ ์๋น์ค ๋ฉ์ Fleet ๊ธฐ๋ฅ์ด ์ฌ์ฉ ์ค์ ๋์ด ์์ด์ผ ํฉ๋๋ค. ์ด๋ ์๋ด์ ํฌํจ๋์ด ์๊ฑฐ๋ ๋ณ๋๋ก ์ํ๋ ์ ์์ต๋๋ค.
GKE Autopilot์ GKE ๋ฒ์ 1.21.3 ์ด์์์๋ง ์ง์๋ฉ๋๋ค.
Cloud Service Mesh๋ ๋จ์ผ ํ๋ก์ ํธ ๋จ์ผ ๋คํธ์ํฌ ํ๊ฒฝ ๋๋ ๋ค์ค ํ๋ก์ ํธ ๋จ์ผ ๋คํธ์ํฌ ํ๊ฒฝ์์ ์ฌ๋ฌ GKE ํด๋ฌ์คํฐ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๋์ผํ ํ๋ก์ ํธ์ ์๋ ํด๋ฌ์คํฐ๋ฅผ ์กฐ์ธํ๋ ๊ฒฝ์ฐ ํด๋ฌ์คํฐ๋ ๋์ผํ Fleet ํธ์คํธ ํ๋ก์ ํธ์ ๋ฑ๋ก๋์ด์ผ ํ๋ฉฐ ํด๋ฌ์คํฐ๊ฐ ๋์ผํ ๋คํธ์ํฌ์ ๊ณต์ VPC ๊ตฌ์ฑ์ ํจ๊ป ์์ด์ผ ํฉ๋๋ค.
- ๋จ์ผ ํ๋ก์ ํธ ๋ฉํฐ ํด๋ฌ์คํฐ ํ๊ฒฝ์์๋ Fleet ํ๋ก์ ํธ๊ฐ ํด๋ฌ์คํฐ ํ๋ก์ ํธ์ ๊ฐ์ ์ ์์ต๋๋ค. Fleet์ ๋ํ ์์ธํ ๋ด์ฉ์ Fleet ๊ฐ์๋ฅผ ์ฐธ์กฐํ์ธ์.
- ๋ฉํฐ ํ๋ก์ ํธ ํ๊ฒฝ์ ๊ฒฝ์ฐ ํด๋ฌ์คํฐ ํ๋ก์ ํธ์ ๋ณ๋์ ํ๋ก์ ํธ์์ Fleet์ ํธ์คํ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์กฐ์ง ์ ์ฑ ๊ณผ ๊ธฐ์กด ๊ตฌ์ฑ์์ ํ์ฉํ๋ ๊ฒฝ์ฐ ๊ณต์ VPC ํ๋ก์ ํธ๋ฅผ Fleet ํธ์คํธ ํ๋ก์ ํธ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๊ณต์ VPC๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ฌ์คํฐ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
Cloud Service Mesh๋ฅผ ์ค์นํ๋ ๋ฐ ํ์ํ ์ญํ
๋ค์ ํ์์๋ ๊ด๋ฆฌํ Cloud Service Mesh๋ฅผ ์ค์นํ๋ ๋ฐ ํ์ํ ์ญํ ์ ์ค๋ช ํฉ๋๋ค.
์ญํ ์ด๋ฆ | ์ญํ ID | ์์น ๋ถ์ฌ | ์ค๋ช |
---|---|---|---|
GKE ํ๋ธ ๊ด๋ฆฌ์ | roles/gkehub.admin | Fleet ํ๋ก์ ํธ | GKE ํ๋ธ ๋ฐ ๊ด๋ จ ๋ฆฌ์์ค์ ๋ํ ์ ์ฒด ์ก์ธ์ค ๊ถํ์ ๋๋ค. |
์๋น์ค ์ฌ์ฉ๋ ๊ด๋ฆฌ์ | roles/serviceusage.serviceUsageAdmin | Fleet ํ๋ก์ ํธ | ์๋น์ค ์ํ๋ฅผ ์ฌ์ฉ ์ค์ , ์ค์ง, ๊ฒ์ฌํ๊ณ ์์ ์ ๊ฒ์ฌํ๊ณ ์๋น์ ํ๋ก์ ํธ์ ํ ๋น๋๊ณผ ๊ฒฐ์ ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. (์ฐธ๊ณ 1) |
CA ์๋น์ค ๊ด๋ฆฌ์ ๋ฒ ํ | roles/privateca.admin | Fleet ํ๋ก์ ํธ | CA ์๋น์ค ๋ฆฌ์์ค์ ๋ํ ์ ์ฒด ์ก์ธ์ค ๊ถํ์ ๋๋ค. (์ฐธ๊ณ 2) |
Cloud Service Mesh๋ฅผ ์คํํ๋ ๋ฐ ํ์ํ ์ญํ
๋ค์ ํ์์๋ ์๋น์ค ๊ณ์ ์ด ๊ด๋ฆฌํ Cloud Service Mesh๋ฅผ ์คํํ๋ ๋ฐ ํ์ํ ์ญํ ์ ์ค๋ช ํฉ๋๋ค. ๋คํธ์ํฌ ๋๋ ํด๋ฌ์คํฐ ํ๋ก์ ํธ๊ฐ Fleet ํธ์คํธ ํ๋ก์ ํธ์ ๋ค๋ฅธ ๊ฒฝ์ฐ Fleet ํ๋ก์ ํธ์ ์๋น์ค ๊ณ์ ์ ๋ค๋ฅธ ํ๋ก์ ํธ์ ์ด๋ฌํ ์ญํ ์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํด์ผ ํฉ๋๋ค.
์ญํ ์ด๋ฆ | ์ญํ ID | ์์น ๋ถ์ฌ | ์ค๋ช |
---|---|---|---|
Anthos Service Mesh ์๋น์ค ์์ด์ ํธ | roles/anthosservicemesh.serviceAgent | Fleet ํ๋ก์ ํธ | |
Mesh ๊ด๋ฆฌํ ์ปจํธ๋กค ํ๋ ์ธ ์๋น์ค ์์ด์ ํธ(๊ธฐ์กด) | roles/meshcontrolplane.serviceAgent | Fleet ํ๋ก์ ํธ | ์ด ์ญํ ์ ์ด์ Cloud Service Mesh ์ค์น์ ์ผ๋ถ์๋ ๊ธฐ์กด ์ญํ ์ ๋๋ค. ์ค์น์ ์ด ์๋น์ค ์ญํ ์ด ์๋ ๊ฒฝ์ฐ ๊ทธ๋๋ก ๋๋ฉด ๋ฉ๋๋ค. ์ ์ค์น์๋ ์ด ์ญํ ์ด ํ์ํ์ง ์์ต๋๋ค. |
์ ํ์ฌํญ
Cloud Service Mesh ์ง์ ๊ธฐ๋ฅ ๋ฐ ์ ํ์ฌํญ ๋ชฉ๋ก์ ๊ฒํ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ํนํ ๋ค์ ์ฌํญ์ ์ ์ํ์ธ์.
IstioOperator
API๋ ํด๋ฌ์คํฐ ๋ด ๊ตฌ์ฑ์์๋ฅผ ์ ์ดํ๋ ๊ฒ์ด ์ฃผ์ ๋ชฉ์ ์ด๋ฏ๋ก ์ง์๋์ง ์์ต๋๋ค.Certificate Authority Service(CA ์๋น์ค)๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ํด๋ฌ์คํฐ๋ณ๋ก Cloud Service Mesh๋ฅผ ๊ตฌ์ฑํด์ผ ํ๋ฉฐ GKE Enterprise์์ fleet-default ๊ตฌ์ฑ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ ์ง์๋์ง ์์ต๋๋ค.
GKE Autopilot ํด๋ฌ์คํฐ์ ๊ฒฝ์ฐ ํ๋ก์ ํธ ๊ฐ ์ค์ ์ GKE 1.23 ์ด์์์๋ง ์ง์๋ฉ๋๋ค.
GKE Autopilot ํด๋ฌ์คํฐ์ ๊ฒฝ์ฐ GKE Autopilot ๋ฆฌ์์ค ํ๋์ ๋ง๊ฒ ๊ธฐ๋ณธ ํ๋ก์ ๋ฆฌ์์ค ์์ฒญ ๋ฐ ํ๋๊ฐ 500m CPU ๋ฐ 512MB ๋ฉ๋ชจ๋ฆฌ๋ก ์ค์ ๋ฉ๋๋ค. ์ปค์คํ ์ฝ์ ์ ์ฌ์ฉํ์ฌ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ ์ํ ์ ์์ต๋๋ค.
๊ด๋ฆฌํ ์ปจํธ๋กค ํ๋ ์ธ์ ํ๋ก๋น์ ๋ ํ๋ก์ธ์ค ์ค์ Istio CRD๊ฐ ์ง์ ๋ ํด๋ฌ์คํฐ์ ํ๋ก๋น์ ๋๋ฉ๋๋ค. ํด๋ฌ์คํฐ์ ๊ธฐ์กด Istio CRD๊ฐ ์์ผ๋ฉด ๋ฎ์ด์๋๋ค.
Istio CNI ๋ฐ Cloud Service Mesh๋ GKE Sandbox์ ํธํ๋์ง ์์ต๋๋ค. ๋ฐ๋ผ์
TRAFFIC_DIRECTOR
๊ตฌํ์ ์ฌ์ฉํ๋ ๊ด๋ฆฌํ Cloud Service Mesh๋ GKE Sandbox๊ฐ ์ฌ์ฉ ์ค์ ๋ ํด๋ฌ์คํฐ๋ฅผ ์ง์ํ์ง ์์ต๋๋ค.
์์ํ๊ธฐ ์ ์
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
- Cloud Shell์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋
gcloud
๋ฅผ ๊ตฌ์ฑํฉ๋๋ค. -
Google Cloud CLI๋ก ์ธ์ฆํฉ๋๋ค. ์ฌ๊ธฐ์ FLEET_PROJECT_ID๋ Fleet ํธ์คํธ ํ๋ก์ ํธ์ ID์
๋๋ค. ์ผ๋ฐ์ ์ผ๋ก FLEET_PROJECT_ID๋ ๊ธฐ๋ณธ ์์ฑ๋๋ฉฐ ํ๋ก์ ํธ์ ์ด๋ฆ์ด ๋์ผํฉ๋๋ค.
gcloud auth login --project FLEET_PROJECT_ID
- ๊ตฌ์ฑ์์๋ฅผ ์
๋ฐ์ดํธํฉ๋๋ค.
gcloud components update
-
Fleet ํธ์คํธ ํ๋ก์ ํธ์์ ํ์ํ API๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค.
gcloud services enable mesh.googleapis.com \ --project=FLEET_PROJECT_ID
mesh.googleapis.com์ ์ฌ์ฉ ์ค์ ํ๋ฉด ๋ค์ API๊ฐ ์ฌ์ฉ ์ค์ ๋ฉ๋๋ค.
์ผ๋ถ ํ์ API๋ ๋ค๋ฅธ API์ ์์ ์ข ์ ํญ๋ชฉ์ ๊ฐ์ต๋๋ค.API | ๋ชฉ์ | ์ฌ์ฉ ์ค์งํ ์ ์๋๊ฐ? |
---|---|---|
meshconfig.googleapis.com |
Cloud Service Mesh๋ Mesh Configuration API๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ์์ ๊ตฌ์ฑ ๋ฐ์ดํฐ๋ฅผ Google Cloud๋ก ๋ฆด๋ ์ดํฉ๋๋ค. ๋ํ Mesh Configuration API๋ฅผ ์ฌ์ฉ ์ค์ ํ๋ฉด Google Cloud ์ฝ์์์ Cloud Service Mesh ํ์ด์ง์ ์ก์ธ์คํ๊ณ Cloud Service Mesh ์ธ์ฆ ๊ธฐ๊ด์ ์ฌ์ฉํ ์ ์์ต๋๋ค. | ์๋์ |
meshca.googleapis.com |
๊ด๋ฆฌํ Cloud Service Mesh์์ ์ฌ์ฉํ๋ Cloud Service Mesh ์ธ์ฆ ๊ธฐ๊ด๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค. | ์๋์ |
container.googleapis.com |
Google Kubernetes Engine(GKE) ํด๋ฌ์คํฐ๋ฅผ ๋ง๋๋ ๋ฐ ํ์ํฉ๋๋ค. | ์๋์ |
gkehub.googleapis.com |
๋ฉ์๋ฅผ Fleet์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฐ ํ์ํฉ๋๋ค. | ์๋์ |
monitoring.googleapis.com |
๋ฉ์ ์ํฌ๋ก๋์ ๋ํ ์๊ฒฉ ๋ถ์์ ์บก์ฒํ๋ ๋ฐ ํ์ํฉ๋๋ค. | ์๋์ |
stackdriver.googleapis.com |
์๋น์ค UI๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ํ์ํฉ๋๋ค. | ์๋์ |
opsconfigmonitoring.googleapis.com |
Google Cloud์ธ๋ถ ํด๋ฌ์คํฐ์ ์๋น์ค UI๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ํ์ํฉ๋๋ค. | ์๋์ |
connectgateway.googleapis.com |
๊ด๋ฆฌํ Cloud Service Mesh ์ปจํธ๋กค ํ๋ ์ธ์์ ๋ฉ์ ์ํฌ๋ก๋์ ์ก์ธ์คํ ์ ์๋๋ก ํ๋ ๋ฐ ํ์ํฉ๋๋ค. | ์* |
trafficdirector.googleapis.com |
๊ฐ์ฉ์ฑ์ด ๋๊ณ ํ์ฅ ๊ฐ๋ฅํ ๊ด๋ฆฌํ ์ปจํธ๋กค ํ๋ ์ธ์ ์ฌ์ฉ ์ค์ ํฉ๋๋ค. | ์* |
networkservices.googleapis.com |
๊ฐ์ฉ์ฑ์ด ๋๊ณ ํ์ฅ ๊ฐ๋ฅํ ๊ด๋ฆฌํ ์ปจํธ๋กค ํ๋ ์ธ์ ์ฌ์ฉ ์ค์ ํฉ๋๋ค. | ์* |
networksecurity.googleapis.com |
๊ฐ์ฉ์ฑ์ด ๋๊ณ ํ์ฅ ๊ฐ๋ฅํ ๊ด๋ฆฌํ ์ปจํธ๋กค ํ๋ ์ธ์ ์ฌ์ฉ ์ค์ ํฉ๋๋ค. | ์* |
๊ด๋ฆฌํ Cloud Service Mesh ๊ตฌ์ฑ
Fleet API๋ฅผ ์ฌ์ฉํ์ฌ ๊ด๋ฆฌํ Cloud Service Mesh๋ฅผ ํ๋ก๋น์ ๋ํ๋ ๋ฐ ํ์ํ ๋จ๊ณ๋ ์ Fleet ํด๋ฌ์คํฐ์ ๋ํด ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ ์ค์ ํ ์ง ๋๋ ํด๋ฌ์คํฐ๋ณ๋ก ์ฌ์ฉ ์ค์ ํ ์ง ์ฌ๋ถ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
Fleet ๊ตฌ์ฑ
Google Kubernetes Engine(GKE) Enterprise ๋ฒ์ ์ ์ฌ์ฉ ์ค์ ํ ๊ฒฝ์ฐ ๊ด๋ฆฌํ Cloud Service Mesh๋ฅผ Fleet์ ๊ธฐ๋ณธ ๊ตฌ์ฑ์ผ๋ก ์ฌ์ฉ ์ค์ ํ ์ ์์ต๋๋ค. ์ฆ, ํด๋ฌ์คํฐ ์์ฑ ์ค์ ๋ฑ๋ก๋ ๋ชจ๋ ์ Google Cloud ํด๋ฌ์คํฐ์ฉ GKE๋ ํด๋ฌ์คํฐ์์ ๊ด๋ฆฌํ Cloud Service Mesh๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค. Fleet ๊ธฐ๋ณธ ๊ตฌ์ฑ์ ๋ํ ์์ธํ ๋ด์ฉ์ Fleet ์์ค ๊ธฐ๋ฅ ๊ด๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
๊ด๋ฆฌํ Cloud Service Mesh๋ฅผ Fleet์ ๊ธฐ๋ณธ ๊ตฌ์ฑ์ผ๋ก ์ฌ์ฉ ์ค์ ํ๊ณ ํด๋ฌ์คํฐ๋ฅผ ๋ง๋๋ ๋์ ํด๋ฌ์คํฐ๋ฅผ Fleet์ ๋ฑ๋กํ๋ ๊ฒฝ์ฐ Mesh CA๋ง ์ง์๋ฉ๋๋ค. Certificate Authority Service๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ํด๋ฌ์คํฐ๋ณ๋ก ์ฌ์ฉ ์ค์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ด๋ฆฌํ Cloud Service Mesh์ Fleet ์์ค ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉ ์ค์ ํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ์๋ฃํฉ๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ ๊ธฐ๋ฅ ๊ด๋ฆฌ์ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
์๋น์ค ๋ฉ์ ์ฐฝ์์ ๊ตฌ์ฑ์ ํด๋ฆญํฉ๋๋ค.
Google Cloud ์ฝ์์์ ๋ง๋ ๋ชจ๋ ์ ํด๋ฌ์คํฐ์ ์์๋๋ ์ค์ ์ ๊ฒํ ํ๊ณ Fleet์ ๋ฑ๋กํฉ๋๋ค.
์ด๋ฌํ ์ค์ ์ ์ ์ฉํ๋ ค๋ฉด ๊ตฌ์ฑ์ ํด๋ฆญํฉ๋๋ค.
ํ์ธ ๋ํ์์์์ ํ์ธ์ ํด๋ฆญํฉ๋๋ค.
์ ํ์ฌํญ: ๊ธฐ์กด ํด๋ฌ์คํฐ๋ฅผ ๊ธฐ๋ณธ ์ค์ ์ผ๋ก ๋๊ธฐํํฉ๋๋ค.
- Fleet์ ํด๋ฌ์คํฐ ๋ชฉ๋ก์์ ๋๊ธฐํํ ํด๋ฌ์คํฐ๋ฅผ ์ ํํฉ๋๋ค. Cloud Service Mesh๊ฐ ์ค์น๋ ํด๋ฌ์คํฐ๋ง ์ ํํ ์ ์์ต๋๋ค.
- Fleet ์ค์ ๊ณผ ๋๊ธฐํ๋ฅผ ํด๋ฆญํ๊ณ ํ์ธ ๋ํ์์๊ฐ ๋ํ๋๋ฉด ํ์ธ์ ํด๋ฆญํฉ๋๋ค. ์ด ์์ ์ ์๋ฃํ๋ ๋ฐ ๋ช ๋ถ ์ ๋ ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
gcloud
Google Cloud CLI๋ฅผ ์ฌ์ฉํ์ฌ Fleet ์์ค ๊ธฐ๋ณธ๊ฐ์ ๊ตฌ์ฑํ๋ ค๋ฉด ๋ค์ ์ค์ ์ ์ง์ ํด์ผ ํฉ๋๋ค.
Fleet ์์ค ์ค์
ํ ์ค์
management: automatic
๋ง ํฌํจ๋mesh.yaml
ํ์ผ์ ๋ง๋ญ๋๋ค.echo "management: automatic" > mesh.yaml
Fleet์์ Cloud Service Mesh๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค.
gcloud container fleet mesh enable --project FLEET_PROJECT_ID \ --fleet-default-member-config mesh.yaml
๋ค์ ์ค๋ฅ๊ฐ ํ์๋๋ฉด GKE Enterprise๋ฅผ ์ฌ์ฉ ์ค์ ํด์ผ ํฉ๋๋ค.
ERROR: (gcloud.container.fleet.mesh.enable) FAILED_PRECONDITION: The [anthos.googleapis.com] service is required for this operation and is not enabled for the project [PROJECT_NUMBER]. Please use the Google Developers Console to enable it.: failed precondition
๋คํธ์ํฌ ์์ค ์ค์
๋คํธ์ํฌ์ ํ๋ก์ ํธ๊ฐ Fleet ํธ์คํธ ํ๋ก์ ํธ์ ๋ค๋ฅธ ๊ฒฝ์ฐ(์๋ฅผ ๋ค์ด ๊ณต์ VPC๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ) Fleet ํ๋ก์ ํธ์ Cloud Service Mesh ์๋น์ค ๊ณ์ ์ด ๋คํธ์ํฌ ํ๋ก์ ํธ์ ์ก์ธ์คํ๋๋ก ํ์ฉํด์ผ ํฉ๋๋ค. ์ด ์์ ์ ๋คํธ์ํฌ ํ๋ก์ ํธ์ ๋ํด ํ ๋ฒ๋ง ์ํํ๋ฉด ๋ฉ๋๋ค.
Fleet ํ๋ก์ ํธ์ ์๋น์ค ๊ณ์ ์ ๋คํธ์ํฌ ํ๋ก์ ํธ์ ์ก์ธ์คํ ์ ์๋ ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
gcloud projects add-iam-policy-binding "NETWORK_PROJECT_ID" \ --member "serviceAccount:service-FLEET_PROJECT_NUMBER@gcp-sa-servicemesh.iam.gserviceaccount.com" \ --role roles/anthosservicemesh.serviceAgent
ํด๋ฌ์คํฐ ์์ค ์ค์
Cloud Service Mesh์์ ์ฌ์ฉํ ํด๋ฌ์คํฐ๋ฅผ ๋ง๋ค ์ค๋น๊ฐ ๋๋ฉด Google Cloud CLI๋ฅผ ํตํด ํ ๋ฒ์ ํด๋ฌ์คํฐ๋ฅผ ๋ง๋ค๊ณ ๋ฑ๋กํ์ฌ ๊ธฐ๋ณธ ๊ตฌ์ฑ์ ์ฌ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
gcloud container clusters create-auto CLUSTER_NAME \ --fleet-project FLEET_PROJECT_ID \ --location=LOCATION
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ Fleet ํ๋ก์ ํธ์ ํ๋ก์ ํธ ๋ฒํธ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
gcloud projects list --filter="FLEET_PROJECT_ID" --format="value(PROJECT_ID)"
--location
ํ๋๊ทธ๋ ํด๋ฌ์คํฐ์ ์ปดํจํ ์์ญ์ด๋ ๋ฆฌ์ (์:us-central1-a
๋๋us-central1
)์ ๋๋ค.ํด๋ฌ์คํฐ์ ํ๋ก์ ํธ๊ฐ Fleet ํธ์คํธ ํ๋ก์ ํธ์ ๋ค๋ฅธ ๊ฒฝ์ฐ, ํด๋ฌ์คํฐ ํ๋ก์ ํธ์ Cloud Service Mesh ์๋น์ค ๊ณ์ ์ด ํด๋ฌ์คํฐ ํ๋ก์ ํธ์ ์ก์ธ์คํ๋๋ก ํ์ฉํ๊ณ ํด๋ฌ์คํฐ ํ๋ก์ ํธ์์ ํ์ํ API๋ฅผ ์ฌ์ฉ ์ค์ ํด์ผ ํฉ๋๋ค. ์ด ์์ ์ ๊ฐ ํด๋ฌ์คํฐ ํ๋ก์ ํธ์ ๋ํด ํ ๋ฒ๋ง ์ํํ๋ฉด ๋ฉ๋๋ค.
Fleet ํ๋ก์ ํธ์ ์๋น์ค ๊ณ์ ์ ํด๋ฌ์คํฐ ํ๋ก์ ํธ์ ์ก์ธ์คํ ์ ์๋ ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
gcloud projects add-iam-policy-binding "CLUSTER_PROJECT_ID" \ --member "serviceAccount:service-FLEET_PROJECT_NUMBER@gcp-sa-servicemesh.iam.gserviceaccount.com" \ --role roles/anthosservicemesh.serviceAgent
ํด๋ฌ์คํฐ ํ๋ก์ ํธ์์ Mesh API๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค.
gcloud services enable mesh.googleapis.com \ --project=CLUSTER_PROJECT_ID
CLUSTER_PROJECT_ID๋ฅผ ํด๋ฌ์คํฐ ํ๋ก์ ํธ์ ๊ณ ์ ์๋ณ์๋ก ๋ฐ๊ฟ๋๋ค. Fleet๊ณผ ๋์ผํ ํ๋ก์ ํธ์ ํด๋ฌ์คํฐ๋ฅผ ๋ง๋ ๊ฒฝ์ฐ CLUSTER_PROJECT_ID๋ FLEET_PROJECT_ID์ ๋์ผํฉ๋๋ค.
๊ณ์ํด์ ์ปจํธ๋กค ํ๋ ์ธ์ด ํ๋ก๋น์ ๋๋์๋์ง ํ์ธํฉ๋๋ค.
ํด๋ฌ์คํฐ๋ณ ๊ตฌ์ฑ
๋ฉ์์ ๊ฐ ํด๋ฌ์คํฐ์ ๊ด๋ฆฌํ Cloud Service Mesh๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ๊ตฌ์ฑํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ์ํํฉ๋๋ค.
Cloud Service Mesh Fleet ๊ธฐ๋ฅ ์ฌ์ฉ ์ค์
Fleet ํ๋ก์ ํธ์์ Cloud Service Mesh๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค. ์ฌ๋ฌ ํด๋ฌ์คํฐ๋ฅผ ๋ฑ๋กํ๋ ค๋ ๊ฒฝ์ฐ Cloud Service Mesh๋ Fleet ์์ค์์ ์ฌ์ฉ ์ค์ ๋๋ฏ๋ก ์ด ๋ช ๋ น์ด๋ ํ ๋ฒ๋ง ์คํํ๋ฉด ๋ฉ๋๋ค.
gcloud container fleet mesh enable --project FLEET_PROJECT_ID
Fleet์ ํด๋ฌ์คํฐ ๋ฑ๋ก
Fleet ์ํฌ๋ก๋ ์์ด๋ดํฐํฐ๋ก GKE ํด๋ฌ์คํฐ๋ฅผ ๋ฑ๋กํฉ๋๋ค.
--location
ํ๋๊ทธ๋ ํด๋ฌ์คํฐ์ ์ปดํจํ ์์ญ์ด๋ ๋ฆฌ์ (์:us-central1-a
๋๋us-central1
)์ ๋๋ค.gcloud container clusters update CLUSTER_NAME \ --location CLUSTER_LOCATION \ --fleet-project FLEET_PROJECT_ID
ํด๋ฌ์คํฐ๊ฐ ๋ฑ๋ก๋์๋์ง ํ์ธํฉ๋๋ค.
gcloud container fleet memberships list --project FLEET_PROJECT_ID
์ถ๋ ฅ ์์:
NAME EXTERNAL_ID LOCATION cluster-1 1d8e255d-2b55-4df9-8793-0435461a2cbc us-central1
์๋ ๊ด๋ฆฌ๋ฅผ ์ฌ์ฉ ์ค์ ํ ๋ ํ์ํ๋ฏ๋ก MEMBERSHIP_NAME์ ๊ธฐ๋กํฉ๋๋ค.
ํด๋ฌ์คํฐ์ ๋คํธ์ํฌ ํ๋ก์ ํธ๊ฐ Fleet ํธ์คํธ ํ๋ก์ ํธ์ ๋ค๋ฅธ ๊ฒฝ์ฐ(์: ๊ณต์ VPC ์ฌ์ฉ) Fleet ํ๋ก์ ํธ์ Cloud Service Mesh ์๋น์ค ๊ณ์ ์ด ๋คํธ์ํฌ ํ๋ก์ ํธ์ ์ก์ธ์คํ๋๋ก ํ์ฉํด์ผ ํฉ๋๋ค. ์ด ์์ ์ ๋คํธ์ํฌ ํ๋ก์ ํธ์ ๋ํด ํ ๋ฒ๋ง ์ํํ๋ฉด ๋ฉ๋๋ค.
Fleet ํ๋ก์ ํธ์ ์๋น์ค ๊ณ์ ์ ๋คํธ์ํฌ ํ๋ก์ ํธ์ ์ก์ธ์คํ ์ ์๋ ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
gcloud projects add-iam-policy-binding "NETWORK_PROJECT_ID" \ --member "serviceAccount:service-FLEET_PROJECT_NUMBER@gcp-sa-servicemesh.iam.gserviceaccount.com" \ --role roles/anthosservicemesh.serviceAgent
ํด๋ฌ์คํฐ์ ํ๋ก์ ํธ๊ฐ Fleet ํธ์คํธ ํ๋ก์ ํธ์ ๋ค๋ฅธ ๊ฒฝ์ฐ, ํด๋ฌ์คํฐ ํ๋ก์ ํธ์ Cloud Service Mesh ์๋น์ค ๊ณ์ ์ด ํด๋ฌ์คํฐ ํ๋ก์ ํธ์ ์ก์ธ์คํ๋๋ก ํ์ฉํ๊ณ ํด๋ฌ์คํฐ ํ๋ก์ ํธ์์ ํ์ํ API๋ฅผ ์ฌ์ฉ ์ค์ ํด์ผ ํฉ๋๋ค.
์ด ์์ ์ ๊ฐ ํด๋ฌ์คํฐ ํ๋ก์ ํธ์ ๋ํด ํ ๋ฒ๋ง ์ํํ๋ฉด ๋ฉ๋๋ค. ์ด์ ์ ์ด ํด๋ฌ์คํฐ์ Fleet ํ๋ก์ ํธ ์กฐํฉ์ ๋ํด ๊ด๋ฆฌํ Cloud Service Mesh๋ฅผ ๊ตฌ์ฑํ๋ค๋ฉด ์ด๋ฌํ ๋ณ๊ฒฝ์ฌํญ์ด ์ด๋ฏธ ์ ์ฉ๋์์ผ๋ฏ๋ก ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ ํ์๊ฐ ์์ต๋๋ค.
Fleet ํ๋ก์ ํธ์ ์๋น์ค ๊ณ์ ์ ํด๋ฌ์คํฐ ํ๋ก์ ํธ์ ์ก์ธ์คํ ์ ์๋ ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
gcloud projects add-iam-policy-binding "CLUSTER_PROJECT_ID" \ --member "serviceAccount:service-FLEET_PROJECT_NUMBER@gcp-sa-servicemesh.iam.gserviceaccount.com" \ --role roles/anthosservicemesh.serviceAgent
ํด๋ฌ์คํฐ ํ๋ก์ ํธ์์ Mesh API๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค.
gcloud services enable mesh.googleapis.com \ --project=CLUSTER_PROJECT_ID
Certificate Authority Service ๊ตฌ์ฑ(์ ํ์ฌํญ)
์๋น์ค ๋ฉ์ ๋ฐฐํฌ์ Certificate Authority Service(CA Service)๊ฐ ํ์ํ ๊ฒฝ์ฐ ๊ด๋ฆฌํ Cloud Service Mesh์ฉ Certificate Authority Service ๊ตฌ์ฑ์ ๋ฐ๋ผ Fleet์ ์ฌ์ฉ ์ค์ ํ์ธ์. ๋ค์ ์น์ ์ผ๋ก ์งํํ๊ธฐ ์ ์ ๋ชจ๋ ๋จ๊ณ๋ฅผ ์๋ฃํด์ผ ํฉ๋๋ค.
์๋ ๊ด๋ฆฌ ์ฌ์ฉ ์ค์
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ์๋ ๊ด๋ฆฌ๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค.
gcloud container fleet mesh update \
--management automatic \
--memberships MEMBERSHIP_NAME \
--project FLEET_PROJECT_ID \
--location MEMBERSHIP_LOCATION
๊ฐ ํญ๋ชฉ์ ์๋ฏธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- MEMBERSHIP_NAME์ ํด๋ฌ์คํฐ๊ฐ Fleet์ ๋ฑ๋ก๋์๋์ง ํ์ธํ ๋ ๋์ด๋ ๋ฉค๋ฒ์ญ ์ด๋ฆ์ ๋๋ค.
MEMBERSHIP_LOCATION์ ๋ฉค๋ฒ์ญ ์์น์ ๋๋ค(๋ฆฌ์ ๋๋
global
).์ต๊ทผ์ ์ด ๊ฐ์ด๋์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉค๋ฒ์ญ์ ๋ง๋ ๊ฒฝ์ฐ ํด๋ฌ์คํฐ์ ๋ฆฌ์ ์ด์ด์ผ ํฉ๋๋ค. ์์ญ ํด๋ฌ์คํฐ๊ฐ ์๋ ๊ฒฝ์ฐ ํด๋ฌ์คํฐ์ ์์ญ์ ํด๋นํ๋ ๋ฆฌ์ ์ ์ฌ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด
us-central1-c
์ ์์ญ ํด๋ฌ์คํฐ๊ฐ ์๋ ๊ฒฝ์ฐ ๊ฐus-central1
์ ์ฌ์ฉํฉ๋๋ค.2023๋ 5์ ์ด์ ์ ๋ฑ๋กํ๊ฑฐ๋ ๋ฉค๋ฒ์ญ์ ๋ฑ๋กํ ๋
global
์์น๋ฅผ ์ง์ ํ ๊ฒฝ์ฐ ์ด ๊ฐ์global
์ผ ์ ์์ต๋๋ค.gcloud container fleet memberships list --project FLEET_PROJECT_ID
๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉค๋ฒ์ญ์ ์์น๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
Terraform ์ง์
Cloud Service Mesh๋ GKEHub ๊ธฐ๋ฅ ๋ฉค๋ฒ์ญ ๋ชจ๋์ ํตํด Terraform์ ํตํ ํ๋ก๋น์ ๋์ ์ง์ํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ ๊ด๋ฆฌํ ์๋น์ค ๋ฉ์ ํ๋ก๋น์ ๋ ํํ ๋ฆฌ์ผ์ ์ฐธ์กฐํ์ธ์.
์ ์ด ์์ญ์ด ํ๋ก๋น์ ๋๋์๋์ง ํ์ธ
๋ช ๋ถ ํ ์ปจํธ๋กค ํ๋ ์ธ ์ํ๊ฐ ACTIVE
์ธ์ง ํ์ธํฉ๋๋ค.
gcloud container fleet mesh describe --project FLEET_PROJECT_ID
์ถ๋ ฅ์ ๋ค์๊ณผ ๋น์ทํฉ๋๋ค.
...
membershipSpecs:
projects/746296320118/locations/us-central1/memberships/demo-cluster-1:
mesh:
management: MANAGEMENT_AUTOMATIC
membershipStates:
projects/746296320118/locations/us-central1/memberships/demo-cluster-1:
servicemesh:
controlPlaneManagement:
details:
- code: REVISION_READY
details: 'Ready: asm-managed'
state: ACTIVE
implementation: ISTIOD | TRAFFIC_DIRECTOR
dataPlaneManagement:
details:
- code: OK
details: Service is running.
state: ACTIVE
state:
code: OK
description: 'Revision(s) ready for use: asm-managed.'
...
implementation
ํ๋์ ํ์๋ ์ปจํธ๋กค ํ๋ ์ธ(ISTIOD
๋๋ TRAFFIC_DIRECTOR
)์ ๊ธฐ๋กํด ๋ก๋๋ค. ์ปจํธ๋กค ํ๋ ์ธ ์ฐจ์ด์ , ์ง์๋๋ ๊ตฌ์ฑ, ์ปจํธ๋กค ํ๋ ์ธ ๊ตฌํ ์ ํ ๋ฐฉ๋ฒ์ Cloud Service Mesh ์ง์ ๊ธฐ๋ฅ์ ์ฐธ์กฐํ์ธ์.
kubectl
์์ ํด๋ฌ์คํฐ๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ๊ตฌ์ฑํฉ๋๋ค.
๋ค์ ์น์
์์๋ ๊ฐ ํด๋ฌ์คํฐ์ ๋ํด kubectl
๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค. ๋ค์ ์น์
์ ์งํํ๊ธฐ ์ ์ ๊ฐ ํด๋ฌ์คํฐ์ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํ์ฌ ํด๋ฌ์คํฐ๋ฅผ ๊ฐ๋ฆฌํค๋๋ก kubectl
์ ๊ตฌ์ฑํฉ๋๋ค.
gcloud container clusters get-credentials CLUSTER_NAME \
--location CLUSTER_LOCATION \
--project CLUSTER_PROJECT_ID
์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด๋ ์ปจํธ๋กค ํ๋ ์ธ๊ณผ ํจ๊ป ์๋์ผ๋ก ๋ฐฐํฌ๋์ง ์์ต๋๋ค. ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด์ ์ปจํธ๋กค ํ๋ ์ธ์ ๋ฐฐํฌ๋ฅผ ๋ถ๋ฆฌํ๋ฉด ํ๋ก๋์ ํ๊ฒฝ์์ ๊ฒ์ดํธ์จ์ด๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. Istio ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด ๋๋ ์ด๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๊ฒ์ดํธ์จ์ด ๋ฐฐํฌ๋ฅผ ์ฐธ์กฐํ์ธ์. Kubernetes Gateway API๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ฉ์์ฉ ๊ฒ์ดํธ์จ์ด ์ค๋น๋ฅผ ์ฐธ์กฐํ์ธ์. ๋ค๋ฅธ ์ ํ์ ๊ธฐ๋ฅ์ ์ฌ์ฉ ์ค์ ํ๋ ค๋ฉด Cloud Service Mesh์์ ์ ํ์ ๊ธฐ๋ฅ ์ฌ์ฉ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
๊ด๋ฆฌํ ๋ฐ์ดํฐ ์์ญ
๊ด๋ฆฌํ Cloud Service Mesh๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ Google์์ ํ๋ก์ ์ ๊ทธ๋ ์ด๋๋ฅผ ์์ ํ ๊ด๋ฆฌํฉ๋๋ค.
๊ด๋ฆฌํ ๋ฐ์ดํฐ ์์ญ ๊ธฐ๋ฅ์ ์ฌ์ฉ ์ค์ ํ๋ฉด ํ๋ก์์ ์ ๋ฒ์ ์ ๋ค์ ์ฝ์ ํ๋๋ก ์ํฌ๋ก๋๋ฅผ ์ฌ์์ํ์ฌ ์ฌ์ด๋์นด ํ๋ก์ ๋ฐ ์ฝ์ ๋ ๊ฒ์ดํธ์จ์ด๊ฐ ๊ด๋ฆฌํ ์ปจํธ๋กค ํ๋ ์ธ๊ณผ ํจ๊ป ์๋์ผ๋ก ์ ๋ฐ์ดํธ๋ฉ๋๋ค. ์ด๋ ์ปจํธ๋กค ํ๋ ์ธ์ด ์ ๊ทธ๋ ์ด๋๋ ํ ์์๋๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ์์ ํ 2์ฃผ ์ด๋ด์ ์๋ฃ๋ฉ๋๋ค.
๊ด๋ฆฌํ ๋ฐ์ดํฐ ์์ญ์ GKE ์ถ์ ์ฑ๋์ ์ฌ์ฉํฉ๋๋ค. ๊ด๋ฆฌํ ๋ฐ์ดํฐ ์์ญ์ด ์ฌ์ฉ ์ค์ ๋ ์ํ์์ GKE ์ถ์ ์ฑ๋์ ๋ณ๊ฒฝํ๋ฉด ๊ด๋ฆฌํ Cloud Service Mesh๋ ๊ด๋ฆฌํ ๋ฐ์ดํฐ ์์ญ ์ถ์์ ๊ฐ์ด ๋ชจ๋ ๊ธฐ์กด ์ํฌ๋ก๋์ ํ๋ก์๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.
์ฌ์ฉ ์ค์ง๋ ๊ฒฝ์ฐ ํ๋ก์ ๊ด๋ฆฌ๋ ํด๋ฌ์คํฐ์์ ํฌ๋์ ์์ฐ ์๋ช ์ฃผ๊ธฐ์ ๋ฐ๋ผ ์๋์ผ๋ก ์คํ๋๋ฉฐ ์ ๋ฐ์ดํธ ๋น์จ์ ์ ์ดํ๋ ค๋ฉด ์ฌ์ฉ์๊ฐ ์๋์ผ๋ก ํธ๋ฆฌ๊ฑฐํด์ผ ํฉ๋๋ค.
๊ด๋ฆฌํ ๋ฐ์ดํฐ ์์ญ์ ์ด์ ๋ฒ์ ์ ํ๋ก์๋ฅผ ์คํ ์ค์ธ ํฌ๋๋ฅผ ์ญ์ ํ์ฌ ํ๋ก์๋ฅผ ์ ๊ทธ๋ ์ด๋ํฉ๋๋ค. ์ ๊ฑฐ๋ ์ ์ง์ ์ผ๋ก ์ํ๋์ด ํฌ๋ ์ค๋จ ์์ฐ์ ๋ฐ๋ฅด๊ณ ๋ณ๊ฒฝ ์๋๋ฅผ ์ ์ดํฉ๋๋ค.
๊ด๋ฆฌํ ๋ฐ์ดํฐ ์์ญ์์๋ ๋ค์์ ๊ด๋ฆฌํ์ง ์์ต๋๋ค.
- ์ฝ์ ๋์ง ์์ ํฌ๋
- ์๋์ผ๋ก ์ฝ์ ๋ ํฌ๋
- ์์
- StatefulSets
- DaemonSets
๊ด๋ฆฌํ ๋ฐ์ดํฐ ์์ญ ์ฌ์ฉ ์ค์ง(์ ํ์ฌํญ)
์ ํด๋ฌ์คํฐ์์ ๊ด๋ฆฌํ Cloud Service Mesh๋ฅผ ํ๋ก๋น์ ๋ํ๋ ๊ฒฝ์ฐ ๊ด๋ฆฌํ ๋ฐ์ดํฐ ์์ญ์ ์์ ํ ๋๋ ๊ฐ๋ณ ๋ค์์คํ์ด์ค ๋๋ ํฌ๋์ ๋ํด ์ฌ์ฉ ์ค์งํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋๋ ์๋์ผ๋ก ์ค์ง๋ ๊ธฐ์กด ํด๋ฌ์คํฐ์ ๋ํด ๊ด๋ฆฌํ ๋ฐ์ดํฐ ์์ญ์ด ๊ณ์ ์ฌ์ฉ ์ค์ง๋ฉ๋๋ค.
ํด๋ฌ์คํฐ ์์ค์์ ๊ด๋ฆฌํ ๋ฐ์ดํฐ ์์ญ์ ์ฌ์ฉ ์ค์งํ๊ณ ์ฌ์ด๋์นด ํ๋ก์๋ฅผ ์ง์ ๊ด๋ฆฌํ๋๋ก ๋๋๋ฆฌ๋ ค๋ฉด ์ฃผ์์ ๋ณ๊ฒฝํฉ๋๋ค.
kubectl annotate --overwrite controlplanerevision -n istio-system \
mesh.cloud.google.com/proxy='{"managed":"false"}'
๋ค์์คํ์ด์ค์ ๊ด๋ฆฌํ ๋ฐ์ดํฐ ์์ญ์ ์ฌ์ฉ ์ค์งํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
kubectl annotate --overwrite namespace NAMESPACE \
mesh.cloud.google.com/proxy='{"managed":"false"}'
ํฌ๋์ ๊ด๋ฆฌํ ๋ฐ์ดํฐ ์์ญ์ ์ฌ์ฉ ์ค์งํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
kubectl annotate --overwrite pod POD_NAME \
mesh.cloud.google.com/proxy='{"managed":"false"}'
์ ์ง๋ณด์ ๊ธฐ๊ฐ ์ฌ์ฉ ์ค์
GKE ์ ์ง๋ณด์ ๊ธฐ๊ฐ์ด ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ ๋ค์ ๊ฐ๋ฅํ ์ ์ง๋ณด์ ๊ธฐ๊ฐ์ด ์์๋ ๋ ํ์ฑ ์ ๊ทธ๋ ์ด๋๊ฐ ์์๋๊ณ ๋ชจ๋ ๊ด๋ฆฌํ ํฌ๋์ ์ ๋ฐ์ดํธ๊ฐ ์๋ฃ๋ ๋๊น์ง ์ค๋จ ์์ด ๊ณ์ ์งํ๋ฉ๋๋ค(์ผ๋ฐ์ ์ผ๋ก 12์๊ฐ). CVE ๊ด๋ จ ์ถ์์๋ ์ ์ง๋ณด์ ๊ธฐ๊ฐ์ด ์ ์ฉ๋์ง ์์ต๋๋ค.
Cloud Service Mesh๋ GKE ์ ์ง๋ณด์ ๊ธฐ๊ฐ์ ์ฌ์ฉํ์ฌ GKE์ ์กฐ์ ํฉ๋๋ค.
์ ์ง๋ณด์ ์๋ฆผ ์ฌ์ฉ ์ค์
์ ์ง๋ณด์๊ฐ ์์ฝ๋๊ธฐ ์ต๋ 1์ฃผ์ผ ์ ์ ์์ ๋ ๊ด๋ฆฌํ ๋ฐ์ดํฐ ์์ญ ์ ์ง๋ณด์์ ๋ํ ์๋ฆผ์ ์์ฒญํ ์ ์์ต๋๋ค. ์ ์ง๋ณด์ ์๋ฆผ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ก๋์ง ์์ต๋๋ค. ์๋ฆผ์ ๋ฐ์ผ๋ ค๋ฉด ๋จผ์ GKE ์ ์ง๋ณด์ ๊ธฐ๊ฐ๋ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค. ์ฌ์ฉ ์ค์ ํ๋ฉด ์ ๊ทธ๋ ์ด๋ ์์ ์ต์ 2์ผ ์ ์ ์๋ฆผ์ด ์ ์ก๋ฉ๋๋ค.
๊ด๋ฆฌํ ๋ฐ์ดํฐ ์์ญ ์ ์ง๋ณด์ ์๋ฆผ์ ๋ฐ์ผ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
์ปค๋ฎค๋์ผ์ด์ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
Cloud Service Mesh ์ ๊ทธ๋ ์ด๋ ํ์ ์ด๋ฉ์ผ ์ด์์ ๋ผ๋์ค ๋ฒํผ์ ์ฌ์ฉ ์ค์ ํ์ฌ ์ ์ง๋ณด์ ์๋ฆผ์ ์ฌ์ฉ ์ค์ ํ์ธ์.
์๋ฆผ์ ๋ฐ์ผ๋ ค๋ ๊ฐ ์ฌ์ฉ์๊ฐ ๊ฐ๋ณ์ ์ผ๋ก ์ ํํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ์๋ฆผ์ ๋ํ ์ด๋ฉ์ผ ํํฐ๋ฅผ ์ค์ ํ๋ ค๋ ๊ฒฝ์ฐ ์ ๋ชฉ ์ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Upcoming upgrade for your Cloud Service Mesh cluster "CLUSTER_LOCATION/CLUSTER_NAME"
.
๋ค์ ์์์์๋ ์ผ๋ฐ์ ์ธ ๊ด๋ฆฌํ ๋ฐ์ดํฐ ์์ญ ์ ์ง๋ณด์ ์๋ฆผ์ ๋ณด์ฌ์ค๋๋ค.
์ ๋ชฉ ์ค: Cloud Service Mesh ํด๋ฌ์คํฐ '
<location/cluster-name>
' ์ ๊ทธ๋ ์ด๋ ์์ Cloud Service Mesh ์ฌ์ฉ์๋,
${instance_id}(https://console.cloud.google.com/kubernetes/clusters/details/${instance_id}/details?project=${project_id}) ํด๋ฌ์คํฐ์ Cloud Service Mesh ๊ตฌ์ฑ์์๊ฐ ${scheduled_date_human_readable} ${scheduled_time_human_readable}์ ์ ๊ทธ๋ ์ด๋๋ ์์ ์ ๋๋ค.
์ถ์ ๋ ธํธ(https://cloud.google.com/service-mesh/v1.24/docs/release-notes)๋ฅผ ํ์ธํ์ฌ ์๋ก์ด ์ ๋ฐ์ดํธ์ ๋ํด ์์๋ณผ ์ ์์ต๋๋ค.
์ด ์ ์ง๋ณด์๊ฐ ์ทจ์๋๋ฉด ์ด๋ฉ์ผ์ ๋ค์ ๋ณด๋ด๋๋ฆฌ๊ฒ ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค.
Cloud Service Meshํ
(c) 2023 Google LLC 1600 Amphithoter Parkway, Mountain View, CA 94043 Google Cloud Platform ๋๋ ๊ณ์ ์ ์ค์ ๋ณ๊ฒฝ์ฌํญ์ ๋ํ ์ ๋ฐ์ดํธ๋ฅผ ์๋ฆฌ๊ธฐ ์ํด ์ ์ก๋๋ ๊ณต์ง์ ๋๋ค. ์ฌ์ฉ์ ํ๊ฒฝ์ค์ (https://console.cloud.google.com/user-preferences/communication?project=${project_id})์ ์์ ํ๋ฉด ์ ์ง๋ณด์ ๊ธฐ๊ฐ ์๋ฆผ ์์ ์ ํด์ ํ ์ ์์ต๋๋ค.
์๋ํฌ์ธํธ ๊ฒ์ ๊ตฌ์ฑ(๋ฉํฐ ํด๋ฌ์คํฐ ์ค์น๋ง ํด๋น)
๋ฉ์์ ํด๋ฌ์คํฐ๊ฐ ํ๋๋ง ์์ผ๋ฉด ์ด๋ฌํ ๋ฉํฐ ํด๋ฌ์คํฐ ๋จ๊ณ๋ฅผ ๊ฑด๋๋ฐ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ง์ด๊ทธ๋ ์ด์ ์ผ๋ก ์ด๋ํฉ๋๋ค.
๊ณ์ํ๊ธฐ ์ ์ ๊ฐ ํด๋ฌ์คํฐ์ Cloud Service Mesh๊ฐ ๊ตฌ์ฑ๋์ด ์๋์ง ํ์ธํฉ๋๋ค.
Fleet API๋ก Cloud Service Mesh๋ฅผ ์ฌ์ฉ ์ค์ ํ๋ฉด ์ด ํด๋ฌ์คํฐ์ ์๋ํฌ์ธํธ ๊ฒ์์ด ์ฌ์ฉ ์ค์ ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ฐฉํ๋ฒฝ ํฌํธ๋ฅผ ์ด์ด์ผ ํฉ๋๋ค. ํ๋ ์ด์์ ํด๋ฌ์คํฐ์ ๋ํด ์๋ํฌ์ธํธ ๊ฒ์์ ์ค์งํ๋ ค๋ฉด ์ ์ธ์ API๋ก ํด๋ฌ์คํฐ ๊ฐ ์๋ํฌ์ธํธ ๊ฒ์์์ ์๋ํฌ์ธํธ ๊ฒ์์ ์ค์งํ๋ ์๋ด๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ ๊ฐ์ ํด๋ฌ์คํฐ๊ฐ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ HelloWorld ์๋น์ค ์์๋ฅผ ์ฐธ์กฐํ์ธ์.
์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ
๊ด๋ฆฌํ Cloud Service Mesh๋ฅผ ์ฌ์ฉํ๋ Fleet์ ํด๋ฌ์คํฐ๊ฐ ๋ ๊ฐ ์ด์ ์๋ ๊ฒฝ์ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์งํํ๊ณ ๋ฐฐํฌํ๊ธฐ ์ ์ ์๋ํฌ์ธํธ ๊ฒ์ ๋๋ ๋ฐฉํ๋ฒฝ ํฌํธ๊ฐ ์๋ํ ๋๋ก ๊ตฌ์ฑ๋์ด ์๋์ง ํ์ธํฉ๋๋ค.๋ค์์คํ์ด์ค์ ์ฝ์ ์ ์ฌ์ฉ ์ค์ ํฉ๋๋ค. ์ด ๋จ๊ณ๋ ์ปจํธ๋กค ํ๋ ์ธ ๊ตฌํ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
๊ด๋ฆฌํ(TD)
- ๊ธฐ๋ณธ ์ฝ์ ๋ผ๋ฒจ์ ๋ค์์คํ์ด์ค์ ์ ์ฉํฉ๋๋ค.
kubectl label namespace NAMESPACE \
istio.io/rev- istio-injection=enabled --overwrite
๊ด๋ฆฌํ(Istiod)
๊ถ์ฅ: ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ๋ค์์คํ์ด์ค์ ๊ธฐ๋ณธ ์ฝ์ ๋ผ๋ฒจ์ ์ ์ฉํฉ๋๋ค.
kubectl label namespace NAMESPACE \
istio.io/rev- istio-injection=enabled --overwrite
๊ด๋ฆฌํ Istiod ์ปจํธ๋กค ํ๋ ์ธ์ด ์๋ ๊ธฐ์กด ์ฌ์ฉ์: ๊ธฐ๋ณธ ์ฝ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ง๋ง ๋ฒ์ ๊ธฐ๋ฐ ์ฝ์ ์ ์ง์๋ฉ๋๋ค. ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ ์ถ์ ์ฑ๋์ ์ฐพ์ต๋๋ค.
kubectl -n istio-system get controlplanerevision
์ถ๋ ฅ์ ๋ค์๊ณผ ๋น์ทํฉ๋๋ค.
NAME AGE asm-managed-rapid 6d7h
์ฐธ๊ณ : ์ ๋ชฉ๋ก์ ๋ ๊ฐ์ ์ปจํธ๋กค ํ๋ ์ธ ๋ฒ์ ์ด ํ์๋๋ฉด ํ๋๋ฅผ ์ญ์ ํฉ๋๋ค. ํด๋ฌ์คํฐ์ ์ฌ๋ฌ ์ปจํธ๋กค ํ๋ ์ธ ์ฑ๋์ ๋๋ ๋ฐฉ์์ ์ง์๋์ง ์์ต๋๋ค.
์ถ๋ ฅ์์
NAME
์ด ์๋์ ๊ฐ์ Cloud Service Mesh ๋ฒ์ ์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ถ์ ์ฑ๋์ ํด๋นํ๋ ๋ฒ์ ๋ผ๋ฒจ์ ๋๋ค.๋ค์์คํ์ด์ค์ ๋ฒ์ ๋ผ๋ฒจ์ ์ ์ฉํฉ๋๋ค.
kubectl label namespace NAMESPACE \ istio-injection- istio.io/rev=REVISION_LABEL --overwrite
๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์์คํ์ด์ค ๋ผ๋ฒจ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ ์ฉ๋์๋์ง ํ์ธํฉ๋๋ค.
kubectl get namespace -L istio-injection
์ถ๋ ฅ ์์:
NAME STATUS AGE ISTIO-INJECTION
default Active 5m9s enabled
์ด์ ๊ด๋ฆฌํ Cloud Service Mesh๊ฐ ๊ตฌ์ฑ๋์์ต๋๋ค. ๋ผ๋ฒจ์ด ์ง์ ๋ ๋ค์์คํ์ด์ค์ ๊ธฐ์กด ์ํฌ๋ก๋๊ฐ ์์ผ๋ฉด ํ๋ก์๊ฐ ์ฝ์ ๋๋๋ก ์ํฌ๋ก๋๋ฅผ ๋ค์ ์์ํฉ๋๋ค.
๋ฉํฐ ํด๋ฌ์คํฐ ์ค์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ ๊ฒฝ์ฐ ํน์ ๊ตฌ์ฑ์ ํด๋ฌ์คํฐ ํ์ ์งํฉ์ผ๋ก ์ ํํ ๊ณํ์ด ์๋ ํ ๋ชจ๋ ํด๋ฌ์คํฐ์์ Kubernetes ๋ฐ ์ปจํธ๋กค ํ๋ ์ธ ๊ตฌ์ฑ์ ๋ณต์ ํฉ๋๋ค. ํน์ ํด๋ฌ์คํฐ์ ์ ์ฉ๋๋ ๊ตฌ์ฑ์ ํด๋น ํด๋ฌ์คํฐ์ ๋ํ ์ ๋ณด ์์ค์ ๋๋ค.
์ฝ์ ๋ง์ถค์ค์ (์ ํ์ฌํญ)
๊ธฐ๋ณธ๊ฐ์ ์ฌ์ ์ํ๊ณ ์ฝ์ ์ค์ ์ ๋ง์ถค์ค์ ํ ์ ์์ง๋ง, ์ด ๊ฒฝ์ฐ ์๊ธฐ์น ์์ ๊ตฌ์ฑ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ ์ฌ์ด๋์นด ์ปจํ ์ด๋์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ฝ์ ์ ๋ง์ถค์ค์ ํ๊ธฐ ์ ์ ์ํ ๋ค์ ์ ๋ณด์์ ํน์ ์ค์ ๋ฐ ๊ถ์ฅ์ฌํญ์ ๊ดํ ๋ ธํธ๋ฅผ ์ฝ์ด๋ณด์ธ์.
๊ฐ๋ณ ํฌ๋์์ ํฌ๋๋ณ ๊ตฌ์ฑ์ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ์ต์
์ ์ฌ์ ์ํ ์ ์์ต๋๋ค.
์ด๋ ๊ฒ ํ๋ ค๋ฉด istio-proxy
์ปจํ
์ด๋๋ฅผ ํฌ๋์ ์ถ๊ฐํฉ๋๋ค. ์ฌ์ด๋์นด ์ฝ์
์ ์ฌ๊ธฐ์ ์ ์๋ ๋ชจ๋ ๊ตฌ์ฑ์ ๊ธฐ๋ณธ ์ฝ์
ํ
ํ๋ฆฟ์ ๋ํ ์ฌ์ ์๋ก ์ทจ๊ธํฉ๋๋ค.
์๋ฅผ ๋ค์ด ๋ค์ ๊ตฌ์ฑ์ CPU ์์ฒญ ๋ฎ์ถ๊ธฐ, ๋ณผ๋ฅจ ๋ง์ดํธ ์ถ๊ฐ, preStop
ํํฌ ์ถ๊ฐ๋ฅผ ํฌํจํ ๋ค์ํ ์ค์ ์ ๋ง์ถค์ค์ ํฉ๋๋ค.
apiVersion: v1
kind: Pod
metadata:
name: example
spec:
containers:
- name: hello
image: alpine
- name: istio-proxy
image: auto
resources:
requests:
cpu: "200m"
memory: "256Mi"
limits:
cpu: "200m"
memory: "256Mi"
volumeMounts:
- mountPath: /etc/certs
name: certs
lifecycle:
preStop:
exec:
command: ["sleep", "10"]
volumes:
- name: certs
secret:
secretName: istio-certs
์ผ๋ฐ์ ์ผ๋ก ํฌ๋์ ์๋ ๋ชจ๋ ํ๋๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ผ๋ถ ํ๋์๋ ์ฃผ์ํด์ผ ํฉ๋๋ค.
- Kubernetes์์๋ ์ฝ์
์ ์คํํ๊ธฐ ์ ์
image
ํ๋๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค. ํน์ ์ด๋ฏธ์ง๋ฅผ ์ค์ ํ์ฌ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ ์ํ ์ ์์ง๋ง,image
๋ฅผauto
๋ก ์ค์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ์ฌ์ด๋์นด ์ธ์ ํฐ๊ฐ ์๋์ผ๋ก ์ฌ์ฉํ ์ด๋ฏธ์ง๋ฅผ ์ ํํฉ๋๋ค. containers
์ ์ผ๋ถ ํ๋๋ ๊ด๋ จ ์ค์ ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ์๋ฅผ ๋ค์ด CPU ํ๋๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์์ผ ํฉ๋๋ค. ๋ ํ๋๊ฐ ๋ชจ๋ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑ๋์ง ์์ผ๋ฉด ํฌ๋ ์์์ด ์คํจํ ์ ์์ต๋๋ค.- Kubernetes๋ฅผ ์ฌ์ฉํ๋ฉด
spec
ํฌ๋์ ๋ฆฌ์์ค์requests
๋ฐlimits
๋ฅผ ๋ ๋ค ์ค์ ํ ์ ์์ต๋๋ค. GKE Autopilot์์๋requests
๋ง ๊ณ ๋ คํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ Autopilot์์ ๋ฆฌ์์ค ํ๋ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
๋ํ ํฌ๋์ ์ฃผ์์ผ๋ก ํน์ ํ๋๋ฅผ ๊ตฌ์ฑํ ์ ์์ง๋ง ์์ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ์ค์ ์ ๋ง์ถค์ค์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ค์ ์ฃผ์์๋ ํนํ ์ฃผ์ํ์ธ์.
- GKE Standard์ ๊ฒฝ์ฐ
sidecar.istio.io/proxyCPU
๊ฐ ์ค์ ๋๋ฉดsidecar.istio.io/proxyCPULimit
์ ๋ช ์์ ์ผ๋ก ์ค์ ํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฌ์ด๋์นด์ CPU ํ๋๊ฐ ๋ฌด์ ํ์ผ๋ก ์ค์ ๋ฉ๋๋ค. - GKE Standard์ ๊ฒฝ์ฐ
sidecar.istio.io/proxyMemory
๊ฐ ์ค์ ๋๋ฉดsidecar.istio.io/proxyMemoryLimit
์ ๋ช ์์ ์ผ๋ก ์ค์ ํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฌ์ด๋์นด์ ๋ฉ๋ชจ๋ฆฌ ํ๋๊ฐ ๋ฌด์ ํ์ผ๋ก ์ค์ ๋ฉ๋๋ค. - GKE Autopilot์ ๊ฒฝ์ฐ ์ฃผ์์ ์ฌ์ฉํ์ฌ
requests
๋ฐlimits
๋ฆฌ์์ค๋ฅผ ๊ตฌ์ฑํ๋ฉด ๋ฆฌ์์ค๊ฐ ์ด๊ณผ ํ๋ก๋น์ ๋๋ ์ ์์ต๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด ์ด๋ฏธ์ง ํ ํ๋ฆฟ ๋ฐฉ์์ ์ฌ์ฉํ์ธ์. Autopilot์ ๋ฆฌ์์ค ์์ ์์๋ฅผ ์ฐธ์กฐํ์ธ์.
์๋ฅผ ๋ค์ด ์๋ ๋ฆฌ์์ค ์ฃผ์์ ์ฐธ์กฐํ์ธ์.
spec:
template:
metadata:
annotations:
sidecar.istio.io/proxyCPU: "200m"
sidecar.istio.io/proxyCPULimit: "200m"
sidecar.istio.io/proxyMemory: "256Mi"
sidecar.istio.io/proxyMemoryLimit: "256Mi"
๊ด๋ฆฌํ Cloud Service Mesh๋ก ์ ํ๋ฆฌ์ผ์ด์ ๋ง์ด๊ทธ๋ ์ด์
ํด๋ฌ์คํฐ ๋ด Cloud Service Mesh์์ ๊ด๋ฆฌํ Cloud Service Mesh๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ์ํํฉ๋๋ค.
- ํ์ฌ ๋ค์์คํ์ด์ค ๋ผ๋ฒจ์ ๋ฐ๊ฟ๋๋ค. ์ด ๋จ๊ณ๋ ์ปจํธ๋กค ํ๋ ์ธ ๊ตฌํ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
๊ด๋ฆฌํ(TD)
- ๊ธฐ๋ณธ ์ฝ์ ๋ผ๋ฒจ์ ๋ค์์คํ์ด์ค์ ์ ์ฉํฉ๋๋ค.
kubectl label namespace NAMESPACE \
istio.io/rev- istio-injection=enabled --overwrite
๊ด๋ฆฌํ(Istiod)
๊ถ์ฅ: ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ๋ค์์คํ์ด์ค์ ๊ธฐ๋ณธ ์ฝ์ ๋ผ๋ฒจ์ ์ ์ฉํฉ๋๋ค.
kubectl label namespace NAMESPACE \
istio.io/rev- istio-injection=enabled --overwrite
๊ด๋ฆฌํ Istiod ์ปจํธ๋กค ํ๋ ์ธ์ด ์๋ ๊ธฐ์กด ์ฌ์ฉ์: ๊ธฐ๋ณธ ์ฝ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ง๋ง ๋ฒ์ ๊ธฐ๋ฐ ์ฝ์ ์ ์ง์๋ฉ๋๋ค. ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ ์ถ์ ์ฑ๋์ ์ฐพ์ต๋๋ค.
kubectl -n istio-system get controlplanerevision
์ถ๋ ฅ์ ๋ค์๊ณผ ๋น์ทํฉ๋๋ค.
NAME AGE asm-managed-rapid 6d7h
์ฐธ๊ณ : ์ ๋ชฉ๋ก์ ๋ ๊ฐ์ ์ปจํธ๋กค ํ๋ ์ธ ๋ฒ์ ์ด ํ์๋๋ฉด ํ๋๋ฅผ ์ญ์ ํฉ๋๋ค. ํด๋ฌ์คํฐ์ ์ฌ๋ฌ ์ปจํธ๋กค ํ๋ ์ธ ์ฑ๋์ ๋๋ ๋ฐฉ์์ ์ง์๋์ง ์์ต๋๋ค.
์ถ๋ ฅ์์
NAME
์ด ์๋์ ๊ฐ์ Cloud Service Mesh ๋ฒ์ ์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ถ์ ์ฑ๋์ ํด๋นํ๋ ๋ฒ์ ๋ผ๋ฒจ์ ๋๋ค.๋ค์์คํ์ด์ค์ ๋ฒ์ ๋ผ๋ฒจ์ ์ ์ฉํฉ๋๋ค.
kubectl label namespace NAMESPACE \ istio-injection- istio.io/rev=REVISION_LABEL --overwrite
๋ค์์คํ์ด์ค์์ ๋ฐฐํฌ๋ฅผ ์์ฐจ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ํฉ๋๋ค.
kubectl rollout restart deployment -n NAMESPACE
์ ํ๋ฆฌ์ผ์ด์ ์ ํ ์คํธํ์ฌ ์ํฌ๋ก๋๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธํฉ๋๋ค.
๋ค๋ฅธ ๋ค์์คํ์ด์ค์ ์ํฌ๋ก๋๊ฐ ์์ผ๋ฉด ๊ฐ ๋ค์์คํ์ด์ค์ ์ด์ ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํฉ๋๋ค.
๋ฉํฐ ํด๋ฌ์คํฐ ์ค์ ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ ๊ฒฝ์ฐ ๊ตฌ์ฑ์ ํด๋ฌ์คํฐ ํ์ ์งํฉ์ผ๋ก ์ ํํ๋ ค๋ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋ชจ๋ ํด๋ฌ์คํฐ์์ Kubernetes ๋ฐ Istio ๊ตฌ์ฑ์ ๋ณต์ ํฉ๋๋ค. ํน์ ํด๋ฌ์คํฐ์ ์ ์ฉ๋๋ ๊ตฌ์ฑ์ ํด๋น ํด๋ฌ์คํฐ์ ๋ํ ์ ๋ณด ์์ค์ ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์
์ด ์์ํ ๋๋ก ์๋ํ๋ฉด ๋ชจ๋ ๋ค์์คํ์ด์ค๋ฅผ ๊ด๋ฆฌํ ์ปจํธ๋กค ํ๋ ์ธ์ผ๋ก ์ ํํ ํ ํด๋ฌ์คํฐ ๋ด istiod
๋ฅผ ์ญ์ ํ๊ฑฐ๋ ๋ฐฑ์
์ผ๋ก ๋ณด์กดํ ์ ์์ต๋๋ค. istiod
๋ ๋ ์ ์ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋๋ก ์๋์ผ๋ก ์ถ์๋ฉ๋๋ค. ์ญ์ ํ๋ ค๋ฉด ์ด์ ์ปจํธ๋กค ํ๋ ์ธ ์ญ์ ๋ก ๊ฑด๋๋๋๋ค.
๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ๊ด๋ฆฌํ ์ปจํธ๋กค ํ๋ ์ธ ๋ฌธ์ ํด๊ฒฐ์ ์ ๋ณด์ ๋ฐ๋ผ ์๋ณํ๊ณ ํด๊ฒฐํ ์ ์๊ณ , ํ์ํ ๊ฒฝ์ฐ ์ด์ ๋ฒ์ ์ผ๋ก ๋กค๋ฐฑํ ์ ์์ต๋๋ค.
์ด์ ์ปจํธ๋กค ํ๋ ์ธ ์ญ์
์ค์น๋ฅผ ์ํํ๊ณ ๋ชจ๋ ๋ค์์คํ์ด์ค์ Google ๊ด๋ฆฌํ ์ปจํธ๋กค ํ๋ ์ธ์ด ์ฌ์ฉ๋๋์ง ํ์ธํ ํ ์ด์ ์ปจํธ๋กค ํ๋ ์ธ์ ์ญ์ ํ ์ ์์ต๋๋ค.
kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod -n istio-system --ignore-not-found=true
์๋ ์ฝ์
๋์ istioctl kube-inject
๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋๋ ์ถ๊ฐ์ ์ธ ๊ฒ์ดํธ์จ์ด๋ฅผ ์ค์นํ ๊ฒฝ์ฐ, ์ปจํธ๋กค ํ๋ ์ธ์ ๋ํด ์ธก์ ํญ๋ชฉ์ ํ์ธํ๊ณ ์ฐ๊ฒฐ๋ ์๋ํฌ์ธํธ ์๊ฐ 0์ธ์ง ํ์ธํฉ๋๋ค.
๋กค๋ฐฑ
์ด์ ์ปจํธ๋กค ํ๋ ์ธ ๋ฒ์ ์ผ๋ก ๋กค๋ฐฑํด์ผ ํ ๊ฒฝ์ฐ ๋ค์ ๋จ๊ณ๋ฅผ ์ํํฉ๋๋ค.
์ปจํธ๋กค ํ๋ ์ธ์ ์ด์ ๋ฒ์ ์ ์ฝ์ ํ ์ํฌ๋ก๋๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค. ๋ค์ ๋ช ๋ น์ด์์ ๋ฒ์ ๊ฐ
asm-191-1
์ ์์๋ก๋ง ์ฌ์ฉ๋์์ต๋๋ค. ์์ ๊ฐ์ ์ด์ ์ปจํธ๋กค ํ๋ ์ธ์ ๋ฒ์ ๋ผ๋ฒจ๋ก ๋ฐ๊พธ์ธ์.kubectl label namespace NAMESPACE istio-injection- istio.io/rev=asm-191-1 --overwrite
ํ๋ก์์ ์ด์ ๋ฒ์ ์ด ์ง์ ๋๋๋ก ์ฌ์ฝ์ ์ ํธ๋ฆฌ๊ฑฐํ๋ ํฌ๋๋ฅผ ๋ค์ ์์ํฉ๋๋ค.
kubectl rollout restart deployment -n NAMESPACE
๊ด๋ฆฌํ ์ปจํธ๋กค ํ๋ ์ธ์ด ์๋์ผ๋ก 0์ผ๋ก ์ถ์๋๊ณ ์ฌ์ฉ ์ค์ด ์๋ ๋๋ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. ๋ณํ ์นํ ๋ฐ ํ๋ก๋น์ ๋์ ๊ทธ๋๋ก ์ ์ง๋๊ณ ํด๋ฌ์คํฐ ๋์์ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค.
์ด์ ๊ฒ์ดํธ์จ์ด๊ฐ asm-managed
๋ฒ์ ์ผ๋ก ์ค์ ๋์์ต๋๋ค. ๋กค๋ฐฑํ๋ ค๋ฉด Cloud Service Mesh install ๋ช
๋ น์ด๋ฅผ ๋ค์ ์คํํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ํด๋ฌ์คํฐ ๋ด ์ปจํธ๋กค ํ๋ ์ธ์ ๋ค์ ๊ฐ๋ฆฌํค๋ ๊ฒ์ดํธ์จ์ด๊ฐ ๋ค์ ๋ฐฐํฌ๋ฉ๋๋ค.
kubectl -n istio-system rollout undo deploy istio-ingressgateway
์ฑ๊ณตํ๋ฉด ๋ค์ ์ถ๋ ฅ์ด ํ์๋ฉ๋๋ค.
deployment.apps/istio-ingressgateway rolled back
Cloud Service Mesh ์ ๊ฑฐ
๊ด๋ฆฌํ ์ปจํธ๋กค ํ๋ ์ธ์ ์ฌ์ฉํ๋ ๋ค์์คํ์ด์ค๊ฐ ์์ผ๋ฉด 0์ผ๋ก ์๋ ์ถ์๋ฉ๋๋ค. ์์ธํ ๋จ๊ณ๋ Cloud Service Mesh ์ ๊ฑฐ๋ฅผ ์ฐธ์กฐํ์ธ์.