Updating Argo Rollouts
Kubernetes Progressive Delivery Controller
Progressive Delivery๋ ์ ํ์ ์ ๋ฐ์ดํธ๋ฅผ ์ ์ดํ๊ณ ์ ์ง์ ์ธ ๋ฐฉ์์ผ๋ก ๋ฆด๋ฆฌ์คํ๋ ํ๋ก์ธ์ค๋ก, ์ผ๋ฐ์ ์ผ๋ก ์๋ํ์ ๋ฉํธ๋ฆญ ๋ถ์์ ๊ฒฐํฉํ์ฌ ์ ๋ฐ์ดํธ์ ์๋ ์น๊ฒฉ ๋๋ ๋กค๋ฐฑ์ ์ ๋ํฉ๋๋ค.
Progressive Delivery์ CI/CD์์ ์ ๊ณตํ๋ ์๋ ์ด์ ์ ๊ตฌ์ถ ํ๋ก์ธ์ค๋ก ํ์ฅํ๋ continuous delivery์ ๋ฐ์ ์ผ๋ก ์ค๋ช ๋๊ธฐ๋ ํฉ๋๋ค. ์ด๋ ์ ๋ฒ์ ์ ๋ ธ์ถ์ ์ฌ์ฉ์ ํ์ ์งํฉ์ ์ ํํ๊ณ ์ฌ๋ฐ๋ฅธ ๋์์ ๊ด์ฐฐ ๋ฐ ๋ถ์ํ ๋ค์, ์ ํ์ฑ์ ์ง์์ ์ผ๋ก ๊ฒ์ฆํ๋ฉด์ ๋ ๋๊ณ ๊ด๋ฒ์ํ ๋์์์ ๋ํ ๋ ธ์ถ์ ์ ์ง์ ์ผ๋ก ์ฆ๊ฐ์ํด์ผ๋ก์จ ๊ฐ๋ฅํฉ๋๋ค.
Argo Rollouts๋ Kubernetes ์ปจํธ๋กค๋ฌ์ด์ CRD ์งํฉ์ผ๋ก, Blue/green๊ณผ canary ๋ฐฐํฌ ๋ฐ ๋ถ์, ์คํ ๋ฐ Kubernetes์ ๋ํ ์ ์ง์ ์ ๊ณต ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ๊ณ ๊ธ ๋ฐฐํฌ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
Argo Rollouts์ ์์ ์ปจํธ๋กค๋ฌ ๋ฐ ์๋น์ค ๋ฉ์์ ํตํฉ๋์ด ํธ๋ํฝ ์กฐ์ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ์ ๋ฐ์ดํธ ์ค์ ํธ๋ํฝ์ ์ ์ฐจ ์ ๋ฒ์ ์ผ๋ก ์ ํํฉ๋๋ค. ๋ํ ๋ค์ํ ๊ณต๊ธ์์ ๋ฉํธ๋ฆญ์ ์ฟผ๋ฆฌํ๊ณ ํด์ํ์ฌ ์ฃผ์ KPI๋ฅผ ํ์ธํ๊ณ ์ ๋ฐ์ดํธ ์ค์ ์๋ํ๋ ํ๋ก๋ชจ์ ๋๋ ๋กค๋ฐฑ์ ์ํํ ์ ์์ต๋๋ค.

Blue/Green ์ ๋ฐ์ดํธ ์ ๋ต
Canary ์ ๋ฐ์ดํธ ์ ๋ต
์ธ๋ถํ๋ ํธ๋ํฝ ์ ์ด
์๋ ๋กค๋ฐฑ ๋ฐ ํ๋ก๋ชจ์
์ฌ์ฉ์ ์ง์ ๊ฐ๋ฅํ ๋ฉํธ๋ฆญ ์ฟผ๋ฆฌ ๋ฐ ๋น์ฆ๋์ค KPI ๋ถ์
Ingress controller : NGINX, ALB
์๋น์ค ๋ฉ์ : Istio, Linkerd, SMI
Metric : Prometeus, Wavefront, Kayenta, Web, Kubernetes Jobs, Datadog, New Relic, Graphite
1. Argo Rollouts ์ค์น
Quick start๋ก Rollout Controller๋ฅผ ์ค์นํฉ๋๋ค. Controller๊ฐ ๋์ํ argo-rollouts ๋ค์์คํ์ด์ค๋ฅผ ์์ฑํฉ๋๋ค.
kubectl ํ๋ฌ๊ทธ์ธ ๋ฅผ ์ค์นํฉ๋๋ค. kubectl ํ๋ฌ๊ทธ์ธ์ ์ ํ ์ฌํญ์ด์ง๋ง ๋ช ๋ น์ค์์ ๋กค์์์ ๊ด๋ฆฌํ๊ณ ์๊ฐํํ๋ ๋ฐ ํธ๋ฆฌํฉ๋๋ค.
์๋ ๋ช ๋ น์ด๋ก rollouts์ด ์ค์น๋์๋์ง ํ์ธํฉ๋๋ค.

Ingress Controller (AWS Load Balancer Controller)๋ฅผ ๊ฐ์ด๋์ ๋ฐ๋ผ ์ค์นํฉ๋๋ค.
2. ์ค์ต ํ๊ฒฝ ๊ตฌ๊ฒฝ
์ค์ต์ ํ์ํ yaml ํ์ผ์ ๋ค์ด๋ก๋ ๋ฐ์ต๋๋ค.
ํ์ผ rollout.yaml, service.yaml, ingress.yaml, bluegreen.yaml ์ด๋ ๊ฒ 4๊ฐ ํ์ผ์ด ์์ด์ผ ํฉ๋๋ค.
rollout.yaml ํ์ผ์ ๋ณด๋ฉด ์๋์ ๊ฐ์ด canary strategy๊ฐ ์ ์๋์ด ์์ต๋๋ค.
๋ค์ด ๋ฐ์ 3๊ฐ์ ํ์ผ์ ์ ์ฉํฉ๋๋ค.
์ค์น ์ดํ ์๋ ๋ช ๋ น์ด๋ก ํ์ธํฉ๋๋ค.

rollout์ ํตํ์ฌ ํ์ฌ ๋ฐฐํฌ ์ํ๋ฅผ ํ์ธํฉ๋๋ค.

3. Canary ๋ฐฐํฌ ์ํ
image๋ฅผ ๋ณ๊ฒฝํ์ฌ rollout์ ๋ํ ์ ๋ฐ์ดํธ๋ฅผ ์ํํฉ๋๋ค.

์ด ์์ ์์๋ Canary ๋ฐ stable ๋ฒ์ ์ ์๊ฒฉ ์ค์น๊ฐ ๋ชจ๋ ์คํ ์ค์ด๋ฉฐ ํธ๋ํฝ์ 5%๊ฐ Canary๋ก ํฅํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ์ดํดํ๋ ค๋ฉด, ALB์ listener rule์ ํ์ธํฉ๋๋ค.
์ฝ์์ EC2->load balancer ์์ ์์ฑ๋ ALB๋ฅผ ์ ํํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋จ ํญ์ ๋ฆฌ์ค๋์์ ๊ท์น๋ณด๊ธฐ/ํธ์ง์ ํด๋ฆญํฉ๋๋ค.


์๋ ๋ช ๋ น์ด๋ฅผ ์ํํ์ฌ ์ ์ง๋์ด ์๋ ๋ฐฐํฌ๋ฅผ ์๋ฃํฉ๋๋ค.

Last updated
Was this helpful?