๐ŸŒฑ ์ธํ”„๋Ÿฐ/โš“ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์–ด๋‚˜๋” ํด๋ž˜์Šค (์ง€์ƒํŽธ)

(17) Argo Rollouts ๋ฅผ ์ด์šฉํ•œ ๋ฐฐํฌ - Blue/Green, Canary

mallin 2025. 6. 24. 02:25

โš“ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์–ด๋‚˜๋” ํด๋ž˜์Šค (์ง€์ƒํŽธ) - Spring 1, 2 ์„ ๋“ฃ๊ณ  ์ž‘์„ฑํ•˜๋Š” ๋ณต์Šต ๋ธ”๋กœ๊ทธ ์ž…๋‹ˆ๋‹ค.

 

1. Blue/Green ๋ฐฐํฌ

  • ๋ฐฐํฌ ์‹œ ๋กค๋ฐฑ์ด ๋น ๋ฆ„
  • ๋ฐฐํฌ ์ค‘ v1, v2 ๊ฐ„์˜ ๋™์‹œ ํ˜ธ์ถœ ์—†์Œ
  • Script ๋ฅผ ํ†ตํ•ด ์ž๋™ ๋ฐฐํฌ ๊ฐ€๋Šฅ
  • v2 ์— ๊ณผ๋„ํ•œ ํŠธ๋ž˜ํ”ฝ ์œ ์ž…์‹œ ๋ฌธ์ œ ๋ฐœ์ƒ

Rollouts ๋ฅผ ์‚ฌ์šฉํ•œ Blue/Green ๋ฐฐํฌ

  • Service ๋ฅผ ๋‘ ๊ฐœ ์ง€์ •
    • Service (active) : ์‹ค์ œ ์„œ๋น„์Šค ์‚ฌ์šฉ์ž๊ฐ€ ๋“ค์–ด์˜ค๋Š” ์•กํ‹ฐ๋ธŒ ์„œ๋น„์Šค , Service(preview) : ์—…๊ทธ๋ ˆ์ด๋“œ ์ค‘์— v2 ๋ฒ„์ „์œผ๋กœ๋งŒ ๋“ค์–ด๊ฐ€๋ณผ ์ˆ˜ ์žˆ๋Š” ํ”„๋ฆฌ๋ทฐ ์„œ๋น„์Šค
  • Rollout์€ ๋จผ์ € ReplicaSet์„ ๋งŒ๋“ ๋‹ค → Pod ์ƒ์„ฑ
    • ๋‘ Service ๋Š” Pod ์™€ ์—ฐ๊ฒฐ๋˜์–ด์„œ ํŠธ๋ž˜ํ”ฝ์„ ์ „๋‹ฌํ•ด์ค€๋‹ค

๋ฐฐํฌ ๋‹จ๊ณ„

  1. Rollout ์—์„œ ํƒœ๊ทธ๋ฅผ ๋ณ€๊ฒฝ
  2. ์‹ฑํฌ๋ฅผํ•˜๊ฑฐ๋‚˜ Kubernetes ์ž์›์„ ์ง์ ‘์ˆ˜์ •ํ•˜๋ฉด ์‹œ์ž‘
  3. v2 ๋ฒ„์ „์˜ ๋ ˆํ”Œ๋ฆฌ์นด์…‹, ํŒŒ๋“œ ์ƒ์„ฑ
  4. active ์„œ๋น„์Šค๋Š” v1 pod์— preview ์„œ๋น„์Šค๋Š” v2ํŒŒ๋“œ๋กœ ์—ฐ๊ฒฐ
  5. QA ๋‹ด๋‹น์ž๋Š” preview ์„œ๋น„์Šค๋กœ ํ…Œ์ŠคํŠธ ์ง„ํ–‰
  6. promote ๋ช…๋ น์–ด๋ฅผ ๋‚ ๋ฆฌ๋ฉด active ํŠธ๋ž˜ํ”ฝ → preview ํŠธ๋ž˜ํ”ฝ์œผ๋กœ

 

2. Canary ๋ฐฐํฌ

  • ํŠน์ • ํ—ค๋” ๊ฐ’์— ํ•œํ•ด์„œ๋งŒ v2 ๋กœ ํŠธ๋ž˜ํ”ฝ ์œ 
  • ์ฝœ๋“œ ์Šคํƒ€ํŠธ ๋ฐฉ์ง€, ๋‘ ๋ฒ„์ „ ๋น„๊ต ๊ฐ€๋Šฅ
  • A/B ํ…Œ์ŠคํŠธ ์šฉ๋„

Rollouts ๋ฅผ ์‚ฌ์šฉํ•œ Canary ๋ฐฐํฌ

  • ์„ฌ์„ธํ•œ ํŠธ๋ž˜ํ”ฝ ์กฐ์ ˆ์€ nginx, lstio ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ
  • Service๋Š” ํ•˜๋‚˜
  • ์ƒ์„ธ ์†์„ฑ
    • setWeight : 33 → ์ „์ฒด ํŒŒ๋“œ์—์„œ Canary ๊ฐ€ 33% ์ฐจ์ง€
    • pause : {} → ํ”„๋กœ๋ชจํŠธ ๋ช…๋ น์ด ์˜ฌ ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ
    • setWeight: 66 → ์ „์ฒด ํŒŒ๋“œ์—์„œ Canary ๊ฐ€ 66%
    • pause: {duration: 2m} → 2๋ถ„๋™์•ˆ ๋Œ€๊ธฐ
  • setWeight: 33 pause: {} setWeight: 66 pause: {duration: 2m}

 

์ด๋ฏธ์ง€ ์ถœ์ฒ˜ URL : https://inf.run/k7mF