Updating Argo Rollouts
Kubernetes Progressive Delivery Controller
Last updated
Was this helpful?
Kubernetes Progressive Delivery Controller
Last updated
Was this helpful?
Progressive Delivery๋ ์ ํ์ ์ ๋ฐ์ดํธ๋ฅผ ์ ์ดํ๊ณ ์ ์ง์ ์ธ ๋ฐฉ์์ผ๋ก ๋ฆด๋ฆฌ์คํ๋ ํ๋ก์ธ์ค๋ก, ์ผ๋ฐ์ ์ผ๋ก ์๋ํ์ ๋ฉํธ๋ฆญ ๋ถ์์ ๊ฒฐํฉํ์ฌ ์ ๋ฐ์ดํธ์ ์๋ ์น๊ฒฉ ๋๋ ๋กค๋ฐฑ์ ์ ๋ํฉ๋๋ค.
Progressive Delivery์ CI/CD์์ ์ ๊ณตํ๋ ์๋ ์ด์ ์ ๊ตฌ์ถ ํ๋ก์ธ์ค๋ก ํ์ฅํ๋ continuous delivery์ ๋ฐ์ ์ผ๋ก ์ค๋ช ๋๊ธฐ๋ ํฉ๋๋ค. ์ด๋ ์ ๋ฒ์ ์ ๋ ธ์ถ์ ์ฌ์ฉ์ ํ์ ์งํฉ์ ์ ํํ๊ณ ์ฌ๋ฐ๋ฅธ ๋์์ ๊ด์ฐฐ ๋ฐ ๋ถ์ํ ๋ค์, ์ ํ์ฑ์ ์ง์์ ์ผ๋ก ๊ฒ์ฆํ๋ฉด์ ๋ ๋๊ณ ๊ด๋ฒ์ํ ๋์์์ ๋ํ ๋ ธ์ถ์ ์ ์ง์ ์ผ๋ก ์ฆ๊ฐ์ํด์ผ๋ก์จ ๊ฐ๋ฅํฉ๋๋ค.
๋ 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
Quick start๋ก Rollout Controller๋ฅผ ์ค์นํฉ๋๋ค. Controller๊ฐ ๋์ํ argo-rollouts
๋ค์์คํ์ด์ค๋ฅผ ์์ฑํฉ๋๋ค.
kubectl ํ๋ฌ๊ทธ์ธ ๋ฅผ ์ค์นํฉ๋๋ค. kubectl ํ๋ฌ๊ทธ์ธ์ ์ ํ ์ฌํญ์ด์ง๋ง ๋ช ๋ น์ค์์ ๋กค์์์ ๊ด๋ฆฌํ๊ณ ์๊ฐํํ๋ ๋ฐ ํธ๋ฆฌํฉ๋๋ค.
์๋ ๋ช ๋ น์ด๋ก rollouts์ด ์ค์น๋์๋์ง ํ์ธํฉ๋๋ค.
์ค์ต์ ํ์ํ yaml ํ์ผ์ ๋ค์ด๋ก๋ ๋ฐ์ต๋๋ค.
ํ์ผ rollout.yaml, service.yaml, ingress.yaml, bluegreen.yaml ์ด๋ ๊ฒ 4๊ฐ ํ์ผ์ด ์์ด์ผ ํฉ๋๋ค.
rollout.yaml ํ์ผ์ ๋ณด๋ฉด ์๋์ ๊ฐ์ด canary strategy๊ฐ ์ ์๋์ด ์์ต๋๋ค.
๋ค์ด ๋ฐ์ 3๊ฐ์ ํ์ผ์ ์ ์ฉํฉ๋๋ค.
์ค์น ์ดํ ์๋ ๋ช ๋ น์ด๋ก ํ์ธํฉ๋๋ค.
rollout์ ํตํ์ฌ ํ์ฌ ๋ฐฐํฌ ์ํ๋ฅผ ํ์ธํฉ๋๋ค.
image๋ฅผ ๋ณ๊ฒฝํ์ฌ rollout์ ๋ํ ์ ๋ฐ์ดํธ๋ฅผ ์ํํฉ๋๋ค.
์ด ์์ ์์๋ Canary ๋ฐ stable ๋ฒ์ ์ ์๊ฒฉ ์ค์น๊ฐ ๋ชจ๋ ์คํ ์ค์ด๋ฉฐ ํธ๋ํฝ์ 5%๊ฐ Canary๋ก ํฅํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ์ดํดํ๋ ค๋ฉด, ALB์ listener rule์ ํ์ธํฉ๋๋ค.
์ฝ์์ EC2->load balancer ์์ ์์ฑ๋ ALB๋ฅผ ์ ํํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋จ ํญ์ ๋ฆฌ์ค๋์์ ๊ท์น๋ณด๊ธฐ/ํธ์ง
์ ํด๋ฆญํฉ๋๋ค.
์๋ ๋ช ๋ น์ด๋ฅผ ์ํํ์ฌ ์ ์ง๋์ด ์๋ ๋ฐฐํฌ๋ฅผ ์๋ฃํฉ๋๋ค.
Ingress Controller (AWS Load Balancer Controller)๋ฅผ ์ ๋ฐ๋ผ ์ค์นํฉ๋๋ค.
Load Balancer Controller Installation ๊ฐ์ด๋ ์๋ณธ :