๋ฒ์ 1.6.9๋ก ์ ๊ทธ๋ ์ด๋ ๊ฐ์
Apigee Hybrid ์ ๊ทธ๋ ์ด๋ ์ ์ฐจ๋ ๋ค์๊ณผ ๊ฐ์ ์น์ ์ผ๋ก ์ ๋ฆฌ๋ฉ๋๋ค.
- ํ์ด๋ธ๋ฆฌ๋ ์ค์น๋ฅผ ๋ฐฑ์ ํฉ๋๋ค.
- Kubernetes ๋ฒ์ ์ ํ์ธํ๊ณ ์ฌ๋ฐ๋ฅด๊ฒ ์ ๊ทธ๋ ์ด๋ํฉ๋๋ค.
- Hybrid ๋ฐํ์ ๋ฒ์ 1.6.9๋ฅผ ์ค์นํฉ๋๋ค.
- ASM์ ์ ๊ทธ๋ ์ด๋ํฉ๋๋ค.
์ ํ ์กฐ๊ฑด
์ด ์ ๊ทธ๋ ์ด๋ ์๋ด์์๋ Apigee Hybrid 1.5๊ฐ ์ค์น๋์ด ์๊ณ ๋ฒ์ 1.6.9๋ก ์ ๊ทธ๋ ์ด๋ํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์ด์ ๋ฒ์ ์์ ์ ๋ฐ์ดํธํ๋ ๊ฒฝ์ฐ Apigee Hybrid๋ฅผ ๋ฒ์ 1.5๋ก ์ ๊ทธ๋ ์ด๋์ ๋ํ ์๋ด๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ฒ์ 1.6์ผ๋ก ์ ๊ทธ๋ ์ด๋
- ์ด ์๋ด์์๋
apigeectl
์ ํธ๋ฆฌํฐ๊ฐ ์ค์น๋ ํ์ผ ์์คํ ์ ๋๋ ํฐ๋ฆฌ์ ํ๊ฒฝ ๋ณ์$APIGEECTL_HOME
์ ์ฌ์ฉํฉ๋๋ค. ํ์ํ ๊ฒฝ์ฐapigeectl
๋๋ ํฐ๋ฆฌ๋กcd
ํ๊ณ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ์๋ฅผ ์ ์ํฉ๋๋ค.Linux
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOME
MacOS
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOME
Windows
set APIGEECTL_HOME=%CD%
echo %APIGEECTL_HOME%
- (๊ถ์ฅ์ฌํญ) ๋ฒ์ 1.5
$APIGEECTL_HOME/
๋๋ ํฐ๋ฆฌ์ ๋ฐฑ์ ์ฌ๋ณธ์ ๋ง๋ญ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.tar -czvf $APIGEECTL_HOME/../apigeectl-v1.5-backup.tar.gz $APIGEECTL_HOME
- (๊ถ์ฅ์ฌํญ) Cassandra ๋ฐฑ์ ๋ฐ ๋ณต๊ตฌ์ ์๋ด์ ๋ฐ๋ผ Cassandra ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐฑ์ ํฉ๋๋ค.
- Kubernetes ํ๋ซํผ์ Hybrid 1.6์์ ์ง์๋๋ ๋ฒ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ํฉ๋๋ค. ๋์์ด ํ์ํ๋ฉด ํ๋ซํผ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
cert-manager
v1.5.4 ์ด์ ๋ฒ์ ์ ์คํํ๊ณ ์์ผ๋ฉด v1.5.4๋ก ์ ๊ทธ๋ ์ด๋ํด์ผ ํฉ๋๋ค.-
๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฌ
cert-manager
๋ฒ์ ์ ํ์ธํฉ๋๋ค.kubectl -n cert-manager get deployment -o yaml | grep 'image:'
๋ค์๊ณผ ๋น์ทํ ๊ฒฐ๊ณผ๊ฐ ๋ฐํ๋ฉ๋๋ค.
image: quay.io/jetstack/cert-manager-controller:v1.5.4 image: quay.io/jetstack/cert-manager-cainjector:v1.5.4 image: quay.io/jetstack/cert-manager-webhook:v1.5.4
-
๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐํฌ๋ฅผ ์ญ์ ํฉ๋๋ค.
$ kubectl delete -n cert-manager deployment cert-manager cert-manager-cainjector cert-manager-webhook
-
๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ
cert-manager
๋ฅผ v1.5.4 ๋ฒ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ํฉ๋๋ค.$ kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.4/cert-manager.yaml
-
- Google OAUTH ํ ํฐ๊ณผ ํจ๊ป ์ฌ์ฉํ๋ ๋ฐ ํ์ํ
apigee-runtime
์๋น์ค ๊ณ์ ์ ๋ง๋ญ๋๋ค.create-service-account
๋๊ตฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.- ์๋น์ค ๊ณ์ ์ ๋ง๋ญ๋๋ค.
./tools/create-service-account --env prod --profile apigee-runtime
- ์ ์๋น์ค ๊ณ์ ์ Apigee
overrides.yaml
ํ์ผ์ ์ถ๊ฐํฉ๋๋ค.envs: - name: "environment-name" โฆ โฆ โฆ serviceAccountPaths: runtime: "path-to-service-account-file" โฆ โฆ โฆ
- ์๋น์ค ๊ณ์ ์ ๋ง๋ญ๋๋ค.
envs
์๋ ํญ๋ชฉ ์ธ์๋ ์ฌ์ ์ ํ์ผ์ ์ต์์ ์์ค์์udca.serviceAccountPath
์์ฑ์ ์ถ๊ฐํฉ๋๋ค.udca
๋connectAgent
,logger
,mart
,metrics
,watcher
์ ํจ๊ป ํ๊ฒฝ ์์ค์์ ํ ๋ฒ ๊ทธ๋ฆฌ๊ณ ์กฐ์ง ์์ค์์ ํ ๋ฒ์ ํฉํด ์ฌ์ ์์ ๋ ๋ฒ ํ์๋์ด์ผ ํฉ๋๋ค.์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
โฆ โฆ โฆ metrics: serviceAccountPath: "metrics-service-account-file" udca: serviceAccountPath: "udca-service-account-file" watcher: serviceAccountPath: "watcher-service-account-file" โฆ โฆ โฆ
- ์ ํ์ฌํญ: Cloud Trace๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด
apigee-runtime
์๋น์ค ๊ณ์ ์ Cloud Trace ์์ด์ ํธ(roles/cloudtrace.agent
) Google ์ญํ ์ด ์๋์ง ํ์ธํฉ๋๋ค. Cloud ์ฝ์ > IAM ๋ฐ ๊ด๋ฆฌ์ > ์๋น์ค ๊ณ์ UI์์ ๋๋ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ด ์์ ์ ์ํํ ์ ์์ต๋๋ค.- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ
apigee-runtime
์๋น์ค ๊ณ์ ์ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ๊ฐ์ ธ์ต๋๋ค.gcloud iam service-accounts list --filter "apigee-runtime"
apigee-runtime@$ORG_NAME.iam.gserviceaccount.com
ํจํด๊ณผ ์ผ์นํ๋ฉด ๋ค์ ๋จ๊ณ์์ ์ด ํจํด์ ์ฌ์ฉํ ์ ์์ต๋๋ค. - ์๋น์ค ๊ณ์ ์ Cloud Trace ์์ด์ ํธ ์ญํ ์ ํ ๋นํฉ๋๋ค.
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-runtime@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/cloudtrace.agent"
์ฌ๊ธฐ์ $PROJECT_ID๋ Apigee Hybrid๊ฐ ์ค์น๋ Google Cloud ํ๋ก์ ํธ์ ์ด๋ฆ์ ๋๋ค.
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ
Hybrid 1.6.9 ๋ฐํ์ ์ค์น
- ํ์ด๋ธ๋ฆฌ๋ ๊ธฐ๋ณธ ๋๋ ํฐ๋ฆฌ(
apigeectl
์คํ ํ์ผ์ด ์๋ ๋๋ ํฐ๋ฆฌ์ ์์ ๋๋ ํฐ๋ฆฌ)์ ์๋์ง ํ์ธํฉ๋๋ค.cd $APIGEECTL_HOME/..
-
๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ด์์ฒด์ ์ฉ ์ถ์ ๋ฒ์ ํจํค์ง๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค. ๋ค์ ํ ์ด๋ธ์์ ํ๋ซํผ์ ์ ํํด์ผ ํฉ๋๋ค.
Linux
Linux 64๋นํธ:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.6.9/apigeectl_linux_64.tar.gz
MacOS
Mac 64๋นํธ:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.6.9/apigeectl_mac_64.tar.gz
Windows
Windows 64 ๋นํธ:
curl -LO ^ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.6.9/apigeectl_windows_64.zip
- ํ์ฌ
apigeectl/
๋๋ ํฐ๋ฆฌ์ ์ด๋ฆ์ ๋ฐฑ์ ๋๋ ํฐ๋ฆฌ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.Linux
mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.5/
MacOS
mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.5/
Windows
rename %APIGEECTL_HOME% %APIGEECTL_HOME%-v1.5
-
๋ค์ด๋ก๋ํ gzip ํ์ผ ์ฝํ ์ธ ๋ฅผ Hybrid ๊ธฐ๋ณธ ๋๋ ํฐ๋ฆฌ์ ์ถ์ถํฉ๋๋ค. ํ์ด๋ธ๋ฆฌ๋ ๊ธฐ๋ณธ ๋๋ ํฐ๋ฆฌ๋ ์ด๋ฆ์ด ๋ณ๊ฒฝ๋
apigeectl-v1.5
๋๋ ํฐ๋ฆฌ๊ฐ ์๋ ๋๋ ํฐ๋ฆฌ์ ๋๋ค.Linux
tar xvzf filename.tar.gz -C ./
MacOS
tar xvzf filename.tar.gz -C ./
Windows
tar xvzf filename.zip -C ./
-
tar ์ฝํ ์ธ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ฆ์ ํด๋น ๋ฒ์ ๊ณผ ํ๋ซํผ์ด ํฌํจ๋ ๋๋ ํฐ๋ฆฌ๋ก ํ์ฅ๋ฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด
./apigeectl_1.6.9-d591b23_linux_64
์ ๋๋ค. ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋๋ ํฐ๋ฆฌ ์ด๋ฆ์apigeectl
๋ก ๋ณ๊ฒฝํฉ๋๋ค.Linux
mv directory-name-linux apigeectl
MacOS
mv directory-name-mac apigeectl
Windows
rename directory-name-windows apigeectl
-
apigeectl
๋๋ ํฐ๋ฆฌ๋ก ๋ณ๊ฒฝํฉ๋๋ค.cd ./apigeectl
apigeectl
์คํ ํ์ผ์ ์ด ๋๋ ํฐ๋ฆฌ์ ์์ต๋๋ค. - ์ด ์๋ด์์๋
apigeectl
์ ํธ๋ฆฌํฐ๊ฐ ์ค์น๋ ํ์ผ ์์คํ ์ ๋๋ ํฐ๋ฆฌ์ ํ๊ฒฝ ๋ณ์$APIGEECTL_HOME
์ ์ฌ์ฉํฉ๋๋ค. ํ์ํ ๊ฒฝ์ฐapigeectl
๋๋ ํฐ๋ฆฌ๋กcd
ํ๊ณ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ์๋ฅผ ์ ์ํฉ๋๋ค.Linux
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOME
MacOS
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOME
Windows
set APIGEECTL_HOME=%CD%
echo %APIGEECTL_HOME%
version
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌapigeectl
์ ๋ฒ์ ์ ํ์ธํฉ๋๋ค../apigeectl version
Version: 1.6.9
hybrid-base-directory/hybrid-files
๋๋ ํฐ๋ฆฌ๋ก ์ด๋ํฉ๋๋ค.hybrid-files
๋๋ ํฐ๋ฆฌ์๋ ์ฌ์ ์ ํ์ผ, ์ธ์ฆ์, ์๋น์ค ๊ณ์ ๊ณผ ๊ฐ์ ๊ตฌ์ฑ ํ์ผ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.cd $APIGEECTL_HOME/../hybrid-files
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ
kubectl
์ด ์ฌ๋ฐ๋ฅธ ์ปจํ ์คํธ๋ก ์ค์ ๋์๋์ง ํ์ธํฉ๋๋ค. ํ์ฌ ์ปจํ ์คํธ๋ฅผ Apigee Hybrid๋ฅผ ์ ๊ทธ๋ ์ด๋ํ๋ ํด๋ฌ์คํฐ๋ก ์ค์ ํด์ผ ํฉ๋๋ค.kubectl config get-contexts | grep \*
hybrid-files
๋๋ ํฐ๋ฆฌ์์ ๋ค์์ ์ํํฉ๋๋ค.-
๋ค์ ๊ธฐํธํ๋ ๋งํฌ๋ฅผ
$APIGEECTL_HOME
์ผ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค. ์ด๋ฌํ ๋งํฌ๋ฅผ ์ฌ์ฉํ๋ฉดhybrid-files
๋๋ ํฐ๋ฆฌ ๋ด์์ ์๋ก ์ค์น๋apigeectl
๋ช ๋ น์ด๋ฅผ ์คํํ ์ ์์ต๋๋ค.ln -nfs
$APIGEECTL_HOME
/tools toolsln -nfs
$APIGEECTL_HOME
/config configln -nfs
$APIGEECTL_HOME
/templates templatesln -nfs
$APIGEECTL_HOME
/plugins plugins -
์ฌ๋ณผ๋ฆญ ๋งํฌ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์์ฑ๋์๋์ง ํ์ธํ๋ ค๋ฉด ์ด ๋ช
๋ น์ด๋ฅผ ์คํํ๊ณ ๋งํฌ ๊ฒฝ๋ก๊ฐ ์ฌ๋ฐ๋ฅธ ์์น๋ฅผ ๊ฐ๋ฆฌํค๋์ง ํ์ธํฉ๋๋ค.
ls -l | grep ^l
- ํ
์คํธ ์คํ ์ด๊ธฐํ๋ฅผ ์ํํ์ฌ ์ค๋ฅ๋ฅผ ํ์ธํฉ๋๋ค.
${APIGEECTL_HOME}/apigeectl init -f ./overrides/OVERRIDES.yaml --dry-run=client
์ฌ๊ธฐ์ OVERRIDES๋ ์ฌ์ ์ ํ์ผ ์ด๋ฆ์ ๋๋ค.
- ์ค๋ฅ๊ฐ ์์ผ๋ฉด Hybrid 1.6.9๋ฅผ ์ด๊ธฐํํฉ๋๋ค.
${APIGEECTL_HOME}/apigeectl init -f ./overrides/OVERRIDES.yaml
- ์ด๊ธฐํ ์ํ๋ฅผ ํ์ธํฉ๋๋ค.
${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml
apply
๋ช ๋ น์ด ํ ์คํธ ์คํ์ผ๋ก ์ค๋ฅ๊ฐ ์๋์ง ํ์ธํฉ๋๋ค.${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --dry-run=client
- ์ค๋ฅ๊ฐ ์์ผ๋ฉด ์ฌ์ ์๋ฅผ ์ ์ฉํฉ๋๋ค. ์ค์น์ ๋ฐ๋ผ ํ๋ก๋์
ํ๊ฒฝ ๋๋ ๋ฐ๋ชจ/์คํ์ฉ ํ๊ฒฝ์ ์๋ด๋ฅผ ์ ํํ์ฌ ๋ฐ๋ฆ
๋๋ค.
ํ๋ก๋์
ํ๋ก๋์ ํ๊ฒฝ์ ๊ฒฝ์ฐ ๊ฐ ํ์ด๋ธ๋ฆฌ๋ ๊ตฌ์ฑ์์๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๊ณ ๋ค์ ๊ตฌ์ฑ์์๋ก ์งํํ๊ธฐ ์ ์ ์ ๊ทธ๋ ์ด๋๋ ๊ตฌ์ฑ์์์ ์ํ๋ฅผ ํ์ธํด์ผ ํฉ๋๋ค.
- ํ์ฌ ์์น๊ฐ
hybrid-files
๋๋ ํฐ๋ฆฌ์ธ์ง ํ์ธํฉ๋๋ค. - ์ฌ์ ์๋ฅผ ์ ์ฉํ์ฌ Cassandra๋ฅผ ์
๊ทธ๋ ์ด๋ํฉ๋๋ค.
${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --datastore
- ์๋ฃ๋ฅผ ํ์ธํฉ๋๋ค.
${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml
ํฌ๋๊ฐ ์ค๋น๋ ๊ฒฝ์ฐ์๋ง ๋ค์ ๋จ๊ณ๋ก ์งํํฉ๋๋ค.
- ์ฌ์ ์๋ฅผ ์ ์ฉํ์ฌ ์๊ฒฉ ๋ถ์ ๊ตฌ์ฑ์์๋ฅผ ์
๊ทธ๋ ์ด๋ํ๊ณ ์๋ฃ๋ฅผ ํ์ธํฉ๋๋ค.
${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --telemetry
${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml
- Redis ๊ตฌ์ฑ์์๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --redis
- ์ฌ์ ์๋ฅผ ์ ์ฉํ์ฌ ์กฐ์ง ์์ค ๊ตฌ์ฑ์์(MART, Watcher, Apigee Connect)๋ฅผ ์
๊ทธ๋ ์ด๋ํ๊ณ ์๋ฃ๋ฅผ ํ์ธํฉ๋๋ค.
${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --org
${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml
- ์ฌ์ ์๋ฅผ ์ ์ฉํ์ฌ ํ๊ฒฝ์ ์
๊ทธ๋ ์ด๋ํฉ๋๋ค. ๋ค์ ๋ ๊ฐ์ง ์ค์์ ์ ํํ ์ ์์ต๋๋ค.
- ํ๊ฒฝ๋ณ ํ๊ฒฝ: ํ ๋ฒ์ ํ๋์ ํ๊ฒฝ์ ์ฌ์ ์๋ฅผ ์ ์ฉํ๊ณ ์๋ฃ๋ฅผ ํ์ธํฉ๋๋ค. ํ๊ฒฝ๋ง๋ค ์ด ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํฉ๋๋ค.
${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --env ENV_NAME
${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml
์ฌ๊ธฐ์ ENV_NAME์ ์ ๊ทธ๋ ์ด๋ํ๋ ํ๊ฒฝ์ ์ด๋ฆ์ ๋๋ค.
- ํ ๋ฒ์ ๋ชจ๋ ํ๊ฒฝ: ํ ๋ฒ์ ๋ชจ๋ ํ๊ฒฝ์ ์ฌ์ ์๋ฅผ ์ ์ฉํ๊ณ ์๋ฃ ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค.
${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --all-envs
${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml
- ํ๊ฒฝ๋ณ ํ๊ฒฝ: ํ ๋ฒ์ ํ๋์ ํ๊ฒฝ์ ์ฌ์ ์๋ฅผ ์ ์ฉํ๊ณ ์๋ฃ๋ฅผ ํ์ธํฉ๋๋ค. ํ๊ฒฝ๋ง๋ค ์ด ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํฉ๋๋ค.
๋ฐ๋ชจ/์คํ์ฉ
๋๋ถ๋ถ์ ๋ฐ๋ชจ ๋๋ ์คํ์ฉ ํ๊ฒฝ์์๋ ๋ชจ๋ ๊ตฌ์ฑ์์์ ์ฌ์ ์๋ฅผ ํ ๋ฒ์ ์ ์ฉํ ์ ์์ต๋๋ค. ๋ฐ๋ชจ/์คํ์ฉ ํ๊ฒฝ์ ๊ท๋ชจ๊ฐ ํฌ๊ณ ๋ณต์กํ๊ฑฐ๋ ํ๋ก๋์ ํ๊ฒฝ์ ๋น์ทํ๊ฒ ๋ชจ๋ฐฉํ๋ ๊ฒฝ์ฐ ํ๋ก๋์ ํ๊ฒฝ ์ ๊ทธ๋ ์ด๋ ์๋ด๋ฅผ ์ฐธ์กฐํ์ธ์.
- ํ์ฌ ์์น๊ฐ
hybrid-files
๋๋ ํฐ๋ฆฌ์ธ์ง ํ์ธํฉ๋๋ค. ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml
- ์ํ๋ฅผ ํ์
ํฉ๋๋ค.
${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml
- ํ์ฌ ์์น๊ฐ
-
๋ค์ ๊ธฐํธํ๋ ๋งํฌ๋ฅผ
ASM์ ๋ฒ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋
ํ๋ซํผ์ ์ ํฉํ ASM ๋ฌธ์๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ทธ๋ ์ด๋๋ฅผ ์ํํฉ๋๋ค.
ASM ์ค์น ๋ฐ ๊ตฌ์ฑ ์๋ด๋ ํ๋ซํผ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ํ๋ซํผ์ ๋ค์ ์นดํ ๊ณ ๋ฆฌ๋ก ๋ถ๋ฅ๋ฉ๋๋ค.
- GKE: Google Cloud์์ ์คํ๋๋ Google Kubernetes Engine ํด๋ฌ์คํฐ์ ๋๋ค.
- Google Cloud ์ธ๋ถ: ๋ค์ ์์น์์ ์คํ๋๋ Anthos ํด๋ฌ์คํฐ:
- VMware์ฉ Anthos ํด๋ฌ์คํฐ(GKE On-Prem)
- ๋ฒ ์ด๋ฉํ์ฉ Anthos
- AWS์ฉ Anthos ํด๋ฌ์คํฐ
- Amazon EKS
- ๊ธฐํ Kubernetes ํ๋ซํผ: ๋ค์ ์ ํ์์ ์์ฑ ๋ฐ ์คํ๋๋ ๊ท์ ์ค์ ํด๋ฌ์คํฐ์
๋๋ค.
- AKS
- EKS
- OpenShift
GKE
ํ์ด๋ธ๋ฆฌ๋ ์ค์น์์ ASM ๋ฒ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๋ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ ๊ทธ๋ ์ด๋๋ฅผ ์ค๋นํฉ๋๋ค.
- ASM์ ์ ๋ฒ์ ์ ์ค์นํฉ๋๋ค.
- ํ์ฌ ์ค์น์์ ์ด์ ASM ๋ฒ์ ์ ๋ฐฐํฌ, ์๋น์ค, ์นํ ์ ์ญ์ ํฉ๋๋ค.
- ๊ฒ์ดํธ์จ์ด๋ฅผ ์ ๊ทธ๋ ์ด๋ํ๊ณ ์ ์นํ ์ ๊ตฌ์ฑํฉ๋๋ค.
GKE์ ํ์ด๋ธ๋ฆฌ๋์ฉ ASM ๋ฒ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
- Anthos Service Mesh ์ ๊ทธ๋ ์ด๋์ ์๊ตฌ์ฌํญ์ ๊ฒํ ํ์ง๋ง ์์ง ์ ๊ทธ๋ ์ด๋๋ฅผ ์ํํ์ง ๋ง์ธ์.
- ์ ๋ฒ์ ์ ์ค์นํ๊ธฐ ์ ํ์ฌ ๋ฒ์ ์ ํ์ธํฉ๋๋ค. ์ด์ ASM ๋ฒ์ ์ ๋ฐฐํฌ, ์๋น์ค, ์นํ
์ ํ์ฌ ์ค์น์์ ์ญ์ ํ๋ ค๋ฉด ์ด ์ ๋ณด๊ฐ ํ์ํฉ๋๋ค. ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฌ istiod ๋ฒ์ ์ ํ๊ฒฝ ๋ณ์์ ์ ์ฅํฉ๋๋ค.
export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[].metadata.labels.'istio\.io\/rev'}'{"\n"}') echo ${DELETE_REV}
- ์
overlay.yaml
ํ์ผ์ ๋ง๋ค๊ฑฐ๋ ๊ธฐ์กดoverlay.yaml
์ ๋ค์ ์ฝํ ์ธ ๊ฐ ํฌํจ๋์๋์ง ํ์ธํฉ๋๋ค.apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: revision: components: ingressGateways: - name: istio-ingressgateway enabled: true k8s: nodeSelector: # default node selector, if different or not using node selectors, change accordingly. cloud.google.com/gke-nodepool: apigee-runtime resources: requests: cpu: 1000m service: type: LoadBalancer loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out. ports: - name: http-status-port port: 15021 - name: http2 port: 80 targetPort: 8080 - name: https port: 443 targetPort: 8443 meshConfig: accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
- ASM ๋ฌธ์์ ๋ค์ ์น์
์ ์๋ ์๋ด๋ฅผ ๋ฐ๋ฆ
๋๋ค.
- asmcli๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค.
- ํด๋ฌ์คํฐ์ ๊ด๋ฆฌ์ ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
- ํ๋ก์ ํธ ๋ฐ ํด๋ฌ์คํฐ๋ฅผ ๊ฒ์ฆํฉ๋๋ค.
- ์ ํ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ์ ๊ทธ๋ ์ด๋ํฉ๋๋ค. '๊ฒ์ดํธ์จ์ด ์ ๊ทธ๋ ์ด๋ ์น์ '์ ์์ํ๊ธฐ ์ ์ ์ค์งํ์ธ์.
- ๋ณํ ์นํ
๋ฐ ์ ํจ์ฑ ๊ฒ์ฆ ์นํ
์ ์ญ์ ํฉ๋๋ค.
asmcli
๋ฅผ ์ค์นํ ๋๋ ํฐ๋ฆฌ๋กcd
๋ฅผ ์ด๋ํฉ๋๋ค.- ์นํ
์ญ์ ๋ฅผ ์ํด ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉํ ํ๊ฒฝ ๋ณ์์ ํ์ฌ ์ ๋ฒ์ ์ ์ ์ฅํฉ๋๋ค.
UPGRADE_REV=""
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ํฌํจํ๋ ์
ธ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ญ๋๋ค.
#!/bin/bash set -ex PROJECT_ID="YOUR_PROJECT_ID" CLUSTER_NAME="YOUR_CLUSTER_NAME" CLUSTER_LOCATION="YOUR_CLUSTER_LOCATION" kubectl label namespace istio-system istio.io/rev=${UPGRADE_REV} istio-injection- --overwrite kubectl rollout restart deployment -n istio-system kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAYistio-ingressgateway kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAY/istio-ingressgateway-connectors if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then kubectl apply -f out/asm/istio/istiod-service.yaml kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true fi
- ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ์ฌ ํ์ฌ ์นํ ์ ์ญ์ ํฉ๋๋ค.
- ๊ฒ์ดํธ์จ์ด ์ ๊ทธ๋ ์ด๋์ ๋จ๊ณ์ ๋ฐ๋ผ ์ ์นํ ์ ๋ง๋ค๊ณ ํธ๋ํฝ์ ์ ๊ฒ์ดํธ์จ์ด๋ก ์ ํํฉ๋๋ค.
Google Cloud ์ธ๋ถ
์ด ์๋ด์์๋ ASM ์ ๊ทธ๋ ์ด๋์ ๋ํด ์ค๋ช ํฉ๋๋ค.
- VMware์ฉ Anthos ํด๋ฌ์คํฐ(GKE On-Prem)
- ๋ฒ ์ด๋ฉํ์ฉ Anthos
- AWS์ฉ Anthos ํด๋ฌ์คํฐ
- Amazon EKS
ํ์ด๋ธ๋ฆฌ๋ ์ค์น์์ ASM ๋ฒ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๋ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ ๊ทธ๋ ์ด๋๋ฅผ ์ค๋นํฉ๋๋ค.
- ASM์ ์ ๋ฒ์ ์ ์ค์นํฉ๋๋ค.
- ํ์ฌ ์ค์น์์ ๋ณํ ์นํ ๋ฐ ๊ฒ์ฆ ์นํ ์ ์ญ์ ํฉ๋๋ค.
- ๊ฒ์ดํธ์จ์ด๋ฅผ ์ ๊ทธ๋ ์ด๋ํ๊ณ ์ ์นํ ์ ๊ตฌ์ฑํฉ๋๋ค.
- Anthos Service Mesh ์ ๊ทธ๋ ์ด๋์ ์๊ตฌ์ฌํญ์ ๊ฒํ ํ์ง๋ง ์์ง ์ ๊ทธ๋ ์ด๋๋ฅผ ์ํํ์ง ๋ง์ธ์.
- ์ ๋ฒ์ ์ ์ค์นํ๊ธฐ ์ ํ์ฌ ๋ฒ์ ์ ํ์ธํฉ๋๋ค. ํ์ฌ ASM ์ค์น์์ ๊ฒ์ฆ ์นํ
๋ฐ ๋ณ๊ฒฝ ์นํ
์ ์ญ์ ํ๋ ค๋ฉด ์ด ์ ๋ณด๊ฐ ํ์ํฉ๋๋ค. ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฌ istiod ๋ฒ์ ์ ํ๊ฒฝ ๋ณ์์ ์ ์ฅํฉ๋๋ค.
export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[].metadata.labels.'istio\.io\/rev'}'{"\n"}') echo ${DELETE_REV}
- ์
overlay.yaml
ํ์ผ์ ๋ง๋ค๊ฑฐ๋ ๊ธฐ์กดoverlay.yaml
์ ๋ค์ ์ฝํ ์ธ ๊ฐ ํฌํจ๋์๋์ง ํ์ธํฉ๋๋ค.apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: revision: components: ingressGateways: - name: istio-ingressgateway enabled: true k8s: nodeSelector: # default node selector, if different or not using node selectors, change accordingly. cloud.google.com/gke-nodepool: apigee-runtime resources: requests: cpu: 1000m service: type: LoadBalancer loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out. ports: - name: http-status-port port: 15021 - name: http2 port: 80 targetPort: 8080 - name: https port: 443 targetPort: 8443 values: gateways: istio-ingressgateway: runAsRoot: true meshConfig: accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
- ASM ๋ฌธ์์ ๋ค์ ์น์
์ ์๋ ์๋ด๋ฅผ ๋ฐ๋ฆ
๋๋ค.
- asmcli๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค.
- ํด๋ฌ์คํฐ์ ๊ด๋ฆฌ์ ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
- ํ๋ก์ ํธ ๋ฐ ํด๋ฌ์คํฐ๋ฅผ ๊ฒ์ฆํฉ๋๋ค.
- ์ ํ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ์ ๊ทธ๋ ์ด๋ํฉ๋๋ค. '๊ฒ์ดํธ์จ์ด ์ ๊ทธ๋ ์ด๋ ์น์ '์ ์์ํ๊ธฐ ์ ์ ์ค์งํ์ธ์.
- ๋ณํ ์นํ
๋ฐ ์ ํจ์ฑ ๊ฒ์ฆ ์นํ
์ ์ญ์ ํฉ๋๋ค.
asmcli
๋ฅผ ์ค์นํ ๋๋ ํฐ๋ฆฌ๋กcd
๋ฅผ ์ด๋ํฉ๋๋ค.- ์นํ
์ญ์ ๋ฅผ ์ํด ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉํ ํ๊ฒฝ ๋ณ์์ ํ์ฌ ์ ๋ฒ์ ์ ์ ์ฅํฉ๋๋ค.
UPGRADE_REV=""
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ํฌํจํ๋ ์
ธ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ญ๋๋ค.
#!/bin/bash set -ex PROJECT_ID="YOUR_PROJECT_ID" CLUSTER_NAME="YOUR_CLUSTER_NAME" CLUSTER_LOCATION="YOUR_CLUSTER_LOCATION" gcloud config configurations activate ${PROJECT_ID} gcloud container clusters get-credentials ${CLUSTER_NAME} --region ${CLUSTER_LOCATION} --project ${PROJECT_ID} kubectl label namespace istio-system istio.io/rev=${UPGRADE_REV} istio-injection- --overwrite kubectl rollout restart deployment -n istio-system kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAYistio-ingressgateway kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAY/istio-ingressgateway-connectors if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then kubectl apply -f out/asm/istio/istiod-service.yaml kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true fi
- ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ์ฌ ํ์ฌ ์นํ ์ ์ญ์ ํฉ๋๋ค.
- ๊ฒ์ดํธ์จ์ด ์ ๊ทธ๋ ์ด๋์ ๋จ๊ณ์ ๋ฐ๋ผ ์ ์นํ ์ ๋ง๋ค๊ณ ํธ๋ํฝ์ ์ ๊ฒ์ดํธ์จ์ด๋ก ์ ํํฉ๋๋ค.
AKS/EKS
์ด ์๋ด์์ Anthos๊ฐ ์ฐ๊ฒฐ๋ ํด๋ฌ์คํฐ์์ Anthos Service Mesh(ASM) ๋ฒ์ ๋ฅผ ์ ๊ทธ๋ ์ด๋ํ๋ ํ๋ก์ธ์ค๋ ์๋ก ์ค์นํ๋ ํ๋ก์ธ์ค์ ๋์ผํฉ๋๋ค.
Anthos Service Mesh ์ค์น ์ค๋น
- ๋ณํ ์นํ
๋ฐ ์ ํจ์ฑ ๊ฒ์ฆ ์นํ
์ ์ญ์ ํฉ๋๋ค.
asmcli
๋ฅผ ์ค์นํ ๋๋ ํฐ๋ฆฌ๋กcd
๋ฅผ ์ด๋ํฉ๋๋ค.- ์นํ
์ญ์ ๋ฅผ ์ํด ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉํ ํ๊ฒฝ ๋ณ์์ ํ์ฌ ์ ๋ฒ์ ์ ์ ์ฅํฉ๋๋ค.
UPGRADE_REV=""
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ํฌํจํ๋ ์
ธ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ญ๋๋ค.
#!/bin/bash set -ex kubectl label namespace istio-system istio.io/rev=${UPGRADE_REV} istio-injection- --overwrite kubectl rollout restart deployment -n istio-system if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then kubectl apply -f out/asm/istio/istiod-service.yaml kubectl apply -f ASMCLI_OUTPUT_DIR/asm/istio/istiod-service.yaml ASMCLI_OUTPUT_DIR/istioctl tag set default --revision ${UPGRADE_REV} kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true fi
- ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ์ฌ ํ์ฌ ์นํ ์ ์ญ์ ํฉ๋๋ค.
- Anthos Service Mesh ์ค์น ํ์ผ์ ํ์ฌ ์์
๋๋ ํฐ๋ฆฌ์ ๋ค์ด๋ก๋ํฉ๋๋ค.
curl -LO https://storage.googleapis.com/gke-release/asm/-linux-amd64.tar.gz
- ์๋ช
ํ์ผ์ ๋ค์ด๋ก๋ํ๊ณ openssl์ ์ฌ์ฉํ์ฌ ์๋ช
์ ํ์ธํฉ๋๋ค.
curl -LO https://storage.googleapis.com/gke-release/asm/-linux-amd64.tar.gz.1.sig
openssl dgst -verify /dev/stdin -signature -linux-amd64.tar.gz.1.sig .tar.gz <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - ์ํ๋ ํ์ผ ์์คํ
์์น์ ํ์ผ ์ฝํ
์ธ ์์ถ์ ํ๋๋ค. ์๋ฅผ ๋ค์ด ์ฝํ
์ธ ๋ฅผ ํ์ฌ ์์
๋๋ ํฐ๋ฆฌ์ ์ถ์ถํ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ธ์.
tar xzf -linux-amd64.tar.gz
์ด ๋ช ๋ น์ด๋ ๋ค์์ ํฌํจํ๋ ํ์ฌ ์์ ๋๋ ํฐ๋ฆฌ์
์ด๋ผ๋ ์ค์น ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ญ๋๋ค.
- ์ํ ์ ํ๋ฆฌ์ผ์ด์
์
samples
๋๋ ํฐ๋ฆฌ์ ์์ต๋๋ค. - Anthos Service Mesh๋ฅผ ์ค์นํ๋ ๋ฐ ์ฌ์ฉํ๋
istioctl
๋ช ๋ น์ค ๋๊ตฌ๋bin
๋๋ ํฐ๋ฆฌ์ ์์ต๋๋ค. - Anthos Service Mesh ๊ตฌ์ฑ ํ๋กํ์
manifests/profiles
๋๋ ํฐ๋ฆฌ์ ์์ต๋๋ค.
- ์ํ ์ ํ๋ฆฌ์ผ์ด์
์
- Anthos Service Mesh ์ค์น ๋ฃจํธ ๋๋ ํฐ๋ฆฌ์ ์๋์ง ํ์ธํฉ๋๋ค.
cd
- ํธ์๋ฅผ ์ํด /bin ๋๋ ํฐ๋ฆฌ์ ๋๊ตฌ๋ฅผ PATH์ ์ถ๊ฐํฉ๋๋ค.
export PATH=$PWD/bin:$PATH
- Anthos Service Mesh ์ค์น ํ์ผ์ ํ์ฌ ์์
๋๋ ํฐ๋ฆฌ์ ๋ค์ด๋ก๋ํฉ๋๋ค.
curl -LO https://storage.googleapis.com/gke-release/asm/-osx.tar.gz
- ์๋ช
ํ์ผ์ ๋ค์ด๋ก๋ํ๊ณ openssl์ ์ฌ์ฉํ์ฌ ์๋ช
์ ํ์ธํฉ๋๋ค.
curl -LO https://storage.googleapis.com/gke-release/asm/-osx.tar.gz.1.sig
openssl dgst -sha256 -verify /dev/stdin -signature -osx.tar.gz.1.sig .tar.gz <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - ์ํ๋ ํ์ผ ์์คํ
์์น์ ํ์ผ ์ฝํ
์ธ ์์ถ์ ํ๋๋ค. ์๋ฅผ ๋ค์ด ์ฝํ
์ธ ๋ฅผ ํ์ฌ ์์
๋๋ ํฐ๋ฆฌ์ ์ถ์ถํ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ธ์.
tar xzf -osx.tar.gz
์ด ๋ช ๋ น์ด๋ ๋ค์์ ํฌํจํ๋ ํ์ฌ ์์ ๋๋ ํฐ๋ฆฌ์
์ด๋ผ๋ ์ค์น ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ญ๋๋ค.
- ์ํ ์ ํ๋ฆฌ์ผ์ด์
์
samples
๋๋ ํฐ๋ฆฌ์ ์์ต๋๋ค. - Anthos Service Mesh๋ฅผ ์ค์นํ๋ ๋ฐ ์ฌ์ฉํ๋
istioctl
๋ช ๋ น์ค ๋๊ตฌ๋bin
๋๋ ํฐ๋ฆฌ์ ์์ต๋๋ค. - Anthos Service Mesh ๊ตฌ์ฑ ํ๋กํ์
manifests/profiles
๋๋ ํฐ๋ฆฌ์ ์์ต๋๋ค.
- ์ํ ์ ํ๋ฆฌ์ผ์ด์
์
- Anthos Service Mesh ์ค์น ๋ฃจํธ ๋๋ ํฐ๋ฆฌ์ ์๋์ง ํ์ธํฉ๋๋ค.
cd
- ํธ์๋ฅผ ์ํด /bin ๋๋ ํฐ๋ฆฌ์ ๋๊ตฌ๋ฅผ PATH์ ์ถ๊ฐํฉ๋๋ค.
export PATH=$PWD/bin:$PATH
- Anthos Service Mesh ์ค์น ํ์ผ์ ํ์ฌ ์์
๋๋ ํฐ๋ฆฌ์ ๋ค์ด๋ก๋ํฉ๋๋ค.
curl -LO https://storage.googleapis.com/gke-release/asm/-win.zip
- ์๋ช
ํ์ผ์ ๋ค์ด๋ก๋ํ๊ณ openssl์ ์ฌ์ฉํ์ฌ ์๋ช
์ ํ์ธํฉ๋๋ค.
curl -LO https://storage.googleapis.com/gke-release/asm/-win.zip.1.sig
openssl dgst -verify - -signature -win.zip.1.sig .win.zip <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - ์ํ๋ ํ์ผ ์์คํ
์์น์ ํ์ผ ์ฝํ
์ธ ์์ถ์ ํ๋๋ค. ์๋ฅผ ๋ค์ด ์ฝํ
์ธ ๋ฅผ ํ์ฌ ์์
๋๋ ํฐ๋ฆฌ์ ์ถ์ถํ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ธ์.
tar xzf -win.zip
์ด ๋ช ๋ น์ด๋ ๋ค์์ ํฌํจํ๋ ํ์ฌ ์์ ๋๋ ํฐ๋ฆฌ์
์ด๋ผ๋ ์ค์น ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ญ๋๋ค.
- ์ํ ์ ํ๋ฆฌ์ผ์ด์
์
samples
๋๋ ํฐ๋ฆฌ์ ์์ต๋๋ค. - Anthos Service Mesh๋ฅผ ์ค์นํ๋ ๋ฐ ์ฌ์ฉํ๋
istioctl
๋ช ๋ น์ค ๋๊ตฌ๋bin
๋๋ ํฐ๋ฆฌ์ ์์ต๋๋ค. - Anthos Service Mesh ๊ตฌ์ฑ ํ๋กํ์
manifests\profiles
๋๋ ํฐ๋ฆฌ์ ์์ต๋๋ค.
- ์ํ ์ ํ๋ฆฌ์ผ์ด์
์
- Anthos Service Mesh ์ค์น ๋ฃจํธ ๋๋ ํฐ๋ฆฌ์ ์๋์ง ํ์ธํฉ๋๋ค.
cd
- ํธ์๋ฅผ ์ํด \bin ๋๋ ํฐ๋ฆฌ์ ๋๊ตฌ๋ฅผ PATH์ ์ถ๊ฐํฉ๋๋ค.
set PATH=%CD%\bin:%PATH%
- ์ด์ ASM Istio๊ฐ ์ค์น๋์์ผ๋ฏ๋ก
istioctl
์ ๋ฒ์ ์ ํ์ธํฉ๋๋ค.istioctl version
- ์ปจํธ๋กค ํ๋ ์ธ ๊ตฌ์ฑ์์์ ๋ํด istio-system์ด๋ผ๋ ๋ค์์คํ์ด์ค๋ฅผ ๋ง๋ญ๋๋ค.
kubectl create namespace istio-system
Linux
MacOS
Windows
Anthos Service Mesh ์ค์น
overlay.yaml
ํ์ผ์ ์์ ํ๊ฑฐ๋ ๋ค์ ์ฝํ ์ธ ๊ฐ ํฌํจ๋ ์ ํ์ผ์ ๋ง๋ญ๋๋ค.apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: meshConfig: accessLogFile: /dev/stdout enableTracing: true accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}' components: - enabled: true name: istio-ingressgateway k8s: service: type: LoadBalancer ports: - name: status-port port: 15021 targetPort: 15021 - name: http2 port: 80 targetPort: 8080 - name: https port: 443 targetPort: 8443
asm-multicloud
ํ๋กํ์ ์ฌ์ฉํ์ฌistioctl
๋ก Anthos Service Mesh๋ฅผ ์ค์นํฉ๋๋ค.istioctl install \ --set profile=asm-multicloud \ --set revision="" \ --filename overlayfile.yaml
๋ค์๊ณผ ๋น์ทํ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
kubectl get pods -n istio-system NAME READY STATUS RESTARTS AGE istio-ingressgateway-88b6fd976-flgp2 1/1 Running 0 3m13s istio-ingressgateway-88b6fd976-p5dl9 1/1 Running 0 2m57s istiod--798ffb964-2ls88 1/1 Running 0 3m21s istiod--798ffb964-fnj8c 1/1 Running 1 3m21s
--set revision
์ธ์๋istio.io/rev=
ํ์์ ๋ฒ์ ๋ผ๋ฒจ์ istiod์ ์ถ๊ฐํฉ๋๋ค. ๋ฒ์ ๋ผ๋ฒจ์ ์๋ ์ฌ์ด๋์นด ์ธ์ ํฐ ์นํ ์์ ์ฝ์ ๋ ์ฌ์ด๋์นด๋ฅผ ํน์ istiod ๋ฒ์ ๊ณผ ์ฐ๊ฒฐํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋ค์์คํ์ด์ค์ ์ฌ์ด๋์นด ์๋ ์ฝ์ ์ ์ฌ์ฉ ์ค์ ํ๋ ค๋ฉด istiod์ ๋ผ๋ฒจ๊ณผ ์ผ์นํ๋ ๋ฒ์ ์ผ๋ก ๋ผ๋ฒจ์ ์ง์ ํด์ผ ํฉ๋๋ค.- ์ค์น๊ฐ ์๋ฃ๋์๋์ง ํ์ธํฉ๋๋ค.
kubectl get svc -n istio-system
๋ค์๊ณผ ๋น์ทํ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 172.200.48.52 34.74.177.168 15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP 3m35s istiod ClusterIP 172.200.18.133 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 4m46s istiod- ClusterIP 172.200.63.220 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 3m43s
OpenShift
์ด ์๋ด์์ Anthos๊ฐ ์ฐ๊ฒฐ๋ ํด๋ฌ์คํฐ์์ Anthos Service Mesh(ASM) ๋ฒ์ ๋ฅผ ์ ๊ทธ๋ ์ด๋ํ๋ ํ๋ก์ธ์ค๋ ์๋ก ์ค์นํ๋ ํ๋ก์ธ์ค์ ๋์ผํฉ๋๋ค.
Anthos Service Mesh ์ค์น ์ค๋น
- ๋ณํ ์นํ
๋ฐ ์ ํจ์ฑ ๊ฒ์ฆ ์นํ
์ ์ญ์ ํฉ๋๋ค.
asmcli
๋ฅผ ์ค์นํ ๋๋ ํฐ๋ฆฌ๋กcd
๋ฅผ ์ด๋ํฉ๋๋ค.- ์นํ
์ญ์ ๋ฅผ ์ํด ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉํ ํ๊ฒฝ ๋ณ์์ ํ์ฌ ์ ๋ฒ์ ์ ์ ์ฅํฉ๋๋ค.
UPGRADE_REV=""
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ํฌํจํ๋ ์
ธ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ญ๋๋ค.
#!/bin/bash set -ex kubectl label namespace istio-system istio.io/rev=${UPGRADE_REV} istio-injection- --overwrite kubectl rollout restart deployment -n istio-system kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAYistio-ingressgateway if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then kubectl apply -f out/asm/istio/istiod-service.yaml kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true fi
- ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ์ฌ ํ์ฌ ์นํ ์ ์ญ์ ํฉ๋๋ค.
- ๋ค์ OpenShift CLI(
oc
) ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ istio-system์anyuid
SCC(๋ณด์ ์ปจํ ์คํธ ์ ์ฝ์กฐ๊ฑด)์ ๋ถ์ฌํฉ๋๋ค.oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
- Anthos Service Mesh ์ค์น ํ์ผ์ ํ์ฌ ์์
๋๋ ํฐ๋ฆฌ์ ๋ค์ด๋ก๋ํฉ๋๋ค.
curl -LO https://storage.googleapis.com/gke-release/asm/-linux-amd64.tar.gz
- ์๋ช
ํ์ผ์ ๋ค์ด๋ก๋ํ๊ณ openssl์ ์ฌ์ฉํ์ฌ ์๋ช
์ ํ์ธํฉ๋๋ค.
curl -LO https://storage.googleapis.com/gke-release/asm/-linux-amd64.tar.gz.1.sig
openssl dgst -verify /dev/stdin -signature -linux-amd64.tar.gz.1.sig .tar.gz <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - ์ํ๋ ํ์ผ ์์คํ
์์น์ ํ์ผ ์ฝํ
์ธ ์์ถ์ ํ๋๋ค. ์๋ฅผ ๋ค์ด ์ฝํ
์ธ ๋ฅผ ํ์ฌ ์์
๋๋ ํฐ๋ฆฌ์ ์ถ์ถํ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ธ์.
tar xzf -linux-amd64.tar.gz
์ด ๋ช ๋ น์ด๋ ๋ค์์ ํฌํจํ๋ ํ์ฌ ์์ ๋๋ ํฐ๋ฆฌ์
์ด๋ผ๋ ์ค์น ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ญ๋๋ค.
- ์ํ ์ ํ๋ฆฌ์ผ์ด์
์
samples
๋๋ ํฐ๋ฆฌ์ ์์ต๋๋ค. - Anthos Service Mesh๋ฅผ ์ค์นํ๋ ๋ฐ ์ฌ์ฉํ๋
istioctl
๋ช ๋ น์ค ๋๊ตฌ๋bin
๋๋ ํฐ๋ฆฌ์ ์์ต๋๋ค. - Anthos Service Mesh ๊ตฌ์ฑ ํ๋กํ์
manifests/profiles
๋๋ ํฐ๋ฆฌ์ ์์ต๋๋ค.
- ์ํ ์ ํ๋ฆฌ์ผ์ด์
์
- Anthos Service Mesh ์ค์น ๋ฃจํธ ๋๋ ํฐ๋ฆฌ์ ์๋์ง ํ์ธํฉ๋๋ค.
cd
- ํธ์๋ฅผ ์ํด /bin ๋๋ ํฐ๋ฆฌ์ ๋๊ตฌ๋ฅผ PATH์ ์ถ๊ฐํฉ๋๋ค.
export PATH=$PWD/bin:$PATH
- ๋ค์ OpenShift CLI(
oc
) ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ istio-system์anyuid
SCC(๋ณด์ ์ปจํ ์คํธ ์ ์ฝ์กฐ๊ฑด)์ ๋ถ์ฌํฉ๋๋ค.oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
- Anthos Service Mesh ์ค์น ํ์ผ์ ํ์ฌ ์์
๋๋ ํฐ๋ฆฌ์ ๋ค์ด๋ก๋ํฉ๋๋ค.
curl -LO https://storage.googleapis.com/gke-release/asm/-osx.tar.gz
- ์๋ช
ํ์ผ์ ๋ค์ด๋ก๋ํ๊ณ openssl์ ์ฌ์ฉํ์ฌ ์๋ช
์ ํ์ธํฉ๋๋ค.
curl -LO https://storage.googleapis.com/gke-release/asm/-osx.tar.gz.1.sig
openssl dgst -sha256 -verify /dev/stdin -signature -osx.tar.gz.1.sig .tar.gz <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - ์ํ๋ ํ์ผ ์์คํ
์์น์ ํ์ผ ์ฝํ
์ธ ์์ถ์ ํ๋๋ค. ์๋ฅผ ๋ค์ด ์ฝํ
์ธ ๋ฅผ ํ์ฌ ์์
๋๋ ํฐ๋ฆฌ์ ์ถ์ถํ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ธ์.
tar xzf -osx.tar.gz
์ด ๋ช ๋ น์ด๋ ๋ค์์ ํฌํจํ๋ ํ์ฌ ์์ ๋๋ ํฐ๋ฆฌ์
์ด๋ผ๋ ์ค์น ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ญ๋๋ค.
- ์ํ ์ ํ๋ฆฌ์ผ์ด์
์
samples
๋๋ ํฐ๋ฆฌ์ ์์ต๋๋ค. - Anthos Service Mesh๋ฅผ ์ค์นํ๋ ๋ฐ ์ฌ์ฉํ๋
istioctl
๋ช ๋ น์ค ๋๊ตฌ๋bin
๋๋ ํฐ๋ฆฌ์ ์์ต๋๋ค. - Anthos Service Mesh ๊ตฌ์ฑ ํ๋กํ์
manifests/profiles
๋๋ ํฐ๋ฆฌ์ ์์ต๋๋ค.
- ์ํ ์ ํ๋ฆฌ์ผ์ด์
์
- Anthos Service Mesh ์ค์น ๋ฃจํธ ๋๋ ํฐ๋ฆฌ์ ์๋์ง ํ์ธํฉ๋๋ค.
cd
- ํธ์๋ฅผ ์ํด /bin ๋๋ ํฐ๋ฆฌ์ ๋๊ตฌ๋ฅผ PATH์ ์ถ๊ฐํฉ๋๋ค.
export PATH=$PWD/bin:$PATH
- ๋ค์ OpenShift CLI(
oc
) ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ istio-system์anyuid
SCC(๋ณด์ ์ปจํ ์คํธ ์ ์ฝ์กฐ๊ฑด)์ ๋ถ์ฌํฉ๋๋ค.oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
- Anthos Service Mesh ์ค์น ํ์ผ์ ํ์ฌ ์์
๋๋ ํฐ๋ฆฌ์ ๋ค์ด๋ก๋ํฉ๋๋ค.
curl -LO https://storage.googleapis.com/gke-release/asm/-win.zip
- ์๋ช
ํ์ผ์ ๋ค์ด๋ก๋ํ๊ณ openssl์ ์ฌ์ฉํ์ฌ ์๋ช
์ ํ์ธํฉ๋๋ค.
curl -LO https://storage.googleapis.com/gke-release/asm/-win.zip.1.sig
openssl dgst -verify - -signature -win.zip.1.sig .win.zip <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - ์ํ๋ ํ์ผ ์์คํ
์์น์ ํ์ผ ์ฝํ
์ธ ์์ถ์ ํ๋๋ค. ์๋ฅผ ๋ค์ด ์ฝํ
์ธ ๋ฅผ ํ์ฌ ์์
๋๋ ํฐ๋ฆฌ์ ์ถ์ถํ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ธ์.
tar xzf -win.zip
์ด ๋ช ๋ น์ด๋ ๋ค์์ ํฌํจํ๋ ํ์ฌ ์์ ๋๋ ํฐ๋ฆฌ์
์ด๋ผ๋ ์ค์น ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ญ๋๋ค.
- ์ํ ์ ํ๋ฆฌ์ผ์ด์
์
samples
๋๋ ํฐ๋ฆฌ์ ์์ต๋๋ค. - Anthos Service Mesh๋ฅผ ์ค์นํ๋ ๋ฐ ์ฌ์ฉํ๋
istioctl
๋ช ๋ น์ค ๋๊ตฌ๋bin
๋๋ ํฐ๋ฆฌ์ ์์ต๋๋ค. - Anthos Service Mesh ๊ตฌ์ฑ ํ๋กํ์
manifests\profiles
๋๋ ํฐ๋ฆฌ์ ์์ต๋๋ค.
- ์ํ ์ ํ๋ฆฌ์ผ์ด์
์
- Anthos Service Mesh ์ค์น ๋ฃจํธ ๋๋ ํฐ๋ฆฌ์ ์๋์ง ํ์ธํฉ๋๋ค.
cd
- ํธ์๋ฅผ ์ํด \bin ๋๋ ํฐ๋ฆฌ์ ๋๊ตฌ๋ฅผ PATH์ ์ถ๊ฐํฉ๋๋ค.
set PATH=%CD%\bin:%PATH%
- ์ด์ ASM Istio๊ฐ ์ค์น๋์์ผ๋ฏ๋ก
istioctl
์ ๋ฒ์ ์ ํ์ธํฉ๋๋ค.istioctl version
- ์ปจํธ๋กค ํ๋ ์ธ ๊ตฌ์ฑ์์์ ๋ํด istio-system์ด๋ผ๋ ๋ค์์คํ์ด์ค๋ฅผ ๋ง๋ญ๋๋ค.
kubectl create namespace istio-system
Linux
MacOS
Windows
Anthos Service Mesh ์ค์น
overlay.yaml
ํ์ผ์ ์์ ํ๊ฑฐ๋ ๋ค์ ์ฝํ ์ธ ๊ฐ ํฌํจ๋ ์ ํ์ผ์ ๋ง๋ญ๋๋ค.apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: meshConfig: accessLogFile: /dev/stdout enableTracing: true accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}' components: - enabled: true name: istio-ingressgateway k8s: service: type: LoadBalancer ports: - name: status-port port: 15021 targetPort: 15021 - name: http2 port: 80 targetPort: 8080 - name: https port: 443 targetPort: 8443
asm-multicloud
ํ๋กํ์ ์ฌ์ฉํ์ฌistioctl
๋ก Anthos Service Mesh๋ฅผ ์ค์นํฉ๋๋ค.istioctl install \ --set profile=asm-multicloud \ --set revision="" \ --filename overlayfile.yaml
๋ค์๊ณผ ๋น์ทํ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
kubectl get pods -n istio-system NAME READY STATUS RESTARTS AGE istio-ingressgateway-88b6fd976-flgp2 1/1 Running 0 3m13s istio-ingressgateway-88b6fd976-p5dl9 1/1 Running 0 2m57s istiod--798ffb964-2ls88 1/1 Running 0 3m21s istiod--798ffb964-fnj8c 1/1 Running 1 3m21s
--set revision
์ธ์๋istio.io/rev=1.6.11-asm.1
ํ์์ ๋ฒ์ ๋ผ๋ฒจ์ istiod์ ์ถ๊ฐํฉ๋๋ค. ๋ฒ์ ๋ผ๋ฒจ์ ์๋ ์ฌ์ด๋์นด ์ธ์ ํฐ ์นํ ์์ ์ฝ์ ๋ ์ฌ์ด๋์นด๋ฅผ ํน์ istiod ๋ฒ์ ๊ณผ ์ฐ๊ฒฐํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋ค์์คํ์ด์ค์ ์ฌ์ด๋์นด ์๋ ์ฝ์ ์ ์ฌ์ฉ ์ค์ ํ๋ ค๋ฉด istiod์ ๋ผ๋ฒจ๊ณผ ์ผ์นํ๋ ๋ฒ์ ์ผ๋ก ๋ผ๋ฒจ์ ์ง์ ํด์ผ ํฉ๋๋ค.- ์ค์น๊ฐ ์๋ฃ๋์๋์ง ํ์ธํฉ๋๋ค.
kubectl get svc -n istio-system
๋ค์๊ณผ ๋น์ทํ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 172.200.48.52 34.74.177.168 15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP 3m35s istiod ClusterIP 172.200.18.133 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 4m46s istiod- ClusterIP 172.200.63.220 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 3m43s
์ ๊ทธ๋ ์ด๋ ๋กค๋ฐฑ
์ด์ ์ ๊ทธ๋ ์ด๋๋ฅผ ๋กค๋ฐฑํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
- ํ์ด๋ธ๋ฆฌ๋ ๋ฐํ์ ๋ค์์คํ์ด์ค์ ์๋ฃ๋ ์์
์ ์ญ์ ํฉ๋๋ค. ์ฌ๊ธฐ์ NAMESPACE๋ ์ฌ์ ์ ํ์ผ์ ์ง์ ๋ ๋ค์์คํ์ด์ค(๋ค์์คํ์ด์ค๊ฐ ์ง์ ๋ ๊ฒฝ์ฐ)์
๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ๋ค์์คํ์ด์ค๋
apigee
์ ๋๋ค.kubectl delete job -n NAMESPACE \ $(kubectl get job -n NAMESPACE \ -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
apigee-system
๋ค์์คํ์ด์ค์ ๋ํด ์๋ฃ๋ ์์ ์ ์ญ์ ํฉ๋๋ค.kubectl delete job -n apigee-system \ $(kubectl get job -n apigee-system \ -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
apigeectl
์ ์ด์ ๋ฒ์ ์ด ํฌํจ๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ๊ฐ๋ฆฌํค๋๋กAPIGEECTL_HOME
๋ณ์๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.export APIGEECTL_HOME=PATH_TO_PREVIOUS_APIGEECTL_DIRECTORY
- ๋กค๋ฐฑํ ์ค์น์ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ์์
${APIGEECTL_HOME}/apigeectl apply
๋ฅผ ์คํํ๊ณ ํฌ๋ ์ํ๋ฅผ ํ์ธํ ํ${APIGEECTL_HOME}/apigeectl init
๋ฅผ ์คํํฉ๋๋ค. ๋กค๋ฐฑํ๋ ค๋ ๋ฒ์ ์ ์๋ ์ฌ์ ์ ํ์ผ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.hybrid-files
๋๋ ํฐ๋ฆฌ์์${APIGEECTL_HOME}/apigeectl apply
๋ฅผ ์คํํฉ๋๋ค.${APIGEECTL_HOME}/apigeectl apply -f ./overrides/ORIGINAL_OVERRIDES
.yaml
- ํฌํธ์ ์ํ๋ฅผ ํ์ธํฉ๋๋ค.
kubectl -n NAMESPACE get pods
์ฌ๊ธฐ์ NAMESPACE๋ Apigee Hybrid ๋ค์์คํ์ด์ค์ ๋๋ค.
apigeeds
์ ์ํ๋ฅผ ํ์ธํฉ๋๋ค.kubectl describe apigeeds -n apigee
๋ค์๊ณผ ๋น์ทํ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
Status: Cassandra Data Replication: Cassandra Pod Ips: 10.8.2.204 Cassandra Ready Replicas: 1 Components: Cassandra: Last Successfully Released Version: Revision: v1-f8aa9a82b9f69613 Version: v1 Replicas: Available: 1 Ready: 1 Total: 1 Updated: 1 State: running Scaling: In Progress: false Operation: Requested Replicas: 0 State: running
apigeeds
รpod๊ฐ ์คํ ์ค์ธ ๊ฒฝ์ฐ์๋ง ๋ค์ ๋จ๊ณ๋ฅผ ์งํํฉ๋๋ค.apigeectl init
์ ์คํํฉ๋๋ค.${APIGEECTL_HOME}/apigeectl init -f ./overrides/ORIGINAL_OVERRIDES.yaml