Istio Revision and Canary Upgrade
๊ท์ฌ์ด ์นด๋๋ฆฌ์ (unsplash)
Istio Canary Upgrade
K8s ํด๋ฌ์คํฐ์ Istio ๋ฉ์ฌ๋ฅผ ๊ตฌ์ถํด๋ฌ๋ Istio ๋ฒ์ ์ด ์ ๊ท ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์ด ์ถ์๋๊ณ , K8s ๋ฒ์ ์ ์ฌ๋ฆฌ๋ฉด ์ธํ ํ Istio ๋ฉ์ฌ์ ๋ฒ์ ๊ณผ ํธํ์ด ์ ๋ ์๋ ์๋ค. Istio๋ MSA์ ๋คํธ์ํฌ ํธ๋ํฝ์ ๋ค๋ฃจ๋ ๋๊ตฌ์ด๊ธฐ ๋๋ฌธ์ Istio ๋ฌธ์์์๋ ์ ๊ทธ๋ ์ด๋๋ฅผ ๋งค์ฐ ์ ์คํ ์ ๊ฒ์ ๊ถ์ฅํ๋ค.
์๋ก์ด Istio ๋ฒ์ ์ผ๋ก ๋ฉ์ฌ๋ฅผ ์ธํ
ํด์ผ ํ ๋, Istio๋ revision
๋ผ๋ ํ๊ทธ ์ ๋ณด๋ฅผ ํตํด ์ปจํธ๋กค ํ๋ ์ธ์ ์ผ๋ถ๋ง ๊ต์ฒดํ๋, Canary Upgrade ๋ฐฉ์์ ์ง์ํ๋ค.
์๋ Istio์์ ๋์์ 2๊ฐ์ ์ปจํธ๋กค ํ๋ ์ธ์ด ๋จ๋ ๊ฑธ ํ์ฉํ์ง ์์ง๋ง, ์๋์ ๊ฐ์ด revision
์ ์ง์ ํ๋ฉด 2๊ฐ ์ปจํธ๋กค ํ๋ ์ธ ๋์์ ์กด์ฌํ๊ฒ ๋๋ค.
$ istioctl install --revision=canary
๋ง์ฝ ์ญ์ ํ๊ณ ์ถ๋ค๋ฉด, ์ค์น ํ๋ revision
์ ๊ทธ๋๋ก ์ฃผ๋ฉด ๋๋ค.
$ istioctl uninstall --revision=canary
๋ฐ์ดํฐ ํ๋ ์ธ์ ์ ๊ท revision์ผ๋ก ๋์ฒดํ๊ธฐ
test-ns
๋ผ๋ ๋ค์์คํ์ด์ค์ istio-inejction=enabled
๋ผ๋ ๋ ์ด๋ธ์ด ๋ถ์ด์์ด์ ํด๋น ๋ค์์คํ์ด์ค์ ๋ฌ Pod๋ค์ sidecar๊ฐ ๋ถ์ ์ํ๋ก ์ธํ
ํด๋ณด์.
$ kubectl create ns test-ns
$ kubectl label namespace test-ns istio-injection=enabled
$ kubectl apply -n test-ns -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/sleep/sleep.yaml
---
NAME READY STATUS RESTARTS AGE
sleep-bc9998558-ph8kw 2/2 Running 0 5s
์ด ๊ฒฝ์ฐ๋ revision=canary
istio๋ฅผ ์ค์นํ๊ธฐ ์ ์ ์๋ istio ๋ฉ์ฌ์ ์ ์ด๋ฅผ ๋ฐ๋๋ค. ์ test-ns
๋ค์์คํ์ด์ค์ Pod์ด ์๋ก ๋์ด canary
istio ๋ฉ์ฌ์ ์ ์ด๋ฅผ ๋ฐ๋๋ก ์์ ํด๋ณด์.
์ผ๋จ ๊ธฐ์กด์ istio-injection
๋ ์ด๋ธ์ ์ ๊ฑฐํ๊ณ istio.io/rev=canary
๋ผ๋ ๋ ์ด๋ธ์ ์ถ๊ฐํ๋ค.
$ kubectl label namespace test-ns istio-injection- istio.io/rev=canary
๊ทธ๋ฆฌ๊ณ Pod๋ค์ ๋ค์ ๋์์ค๋ค.
$ kubectl rollout restart deployment -n test-ns
---
NAME READY STATUS RESTARTS AGE
sleep-bbc457487-k5pdt 2/2 Running 0 9s
๊ทธ๋ฆฌ๊ณ istioctl proxy-status
์ปค๋งจ๋๋ก istio์ proxy ์ํ๋ค์ ํ์ธํด๋ณด๋ฉด
sleep
Pod์ด canary
istio๋ฅผ ์ปจํธ๋กค ํ๋ ์ธ์ผ๋ก ์ฌ์ฉํ๋ ๊ฑธ ํ์ธํ ์ ์๋ค!!
istio-injection
๋ ์ด๋ธ์ ์ ๊ฑฐํ ์ด์ ๋ ์ ๋ ์ด๋ธ์ด istio.io/rev
๋ ์ด๋ธ๋ณด๋ค ์ฐ์ ๊ถ์ ๊ฐ๋ ๋ ์ด๋ธ์ด๊ธฐ ๋๋ฌธ์ด๋ค. ๋ณ๋๋ก ๋์ด istio ์ปจํธ๋กค ํ๋ ์ธ์ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด ์์ ๊ณผ์ ์ฒ๋ผ ๊ธฐ์กด ๋ ์ด๋ธ์ ์ ๊ฑฐํ๊ณ istio.io/rev
๋ ์ด๋ธ๋ ์ถ๊ฐํด์ผ ํ๋ค.
istioctl tags
istioctl
์์๋ โtagsโ๋ผ๊ณ revision์ ๋ณ๋ช
(alias)๋ฅผ ์ง์ ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
์์ง์ ์ ์ง ์ ์ ์ธ ๊ฒ ๊ฐ์์ ๋ฌธ์๋ง ๋ณด๊ณ ๋๊ธฐ๊ฒ ๋ค ๐
โก๏ธ istio: istioctl tag