๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“š Book Review/๐Ÿ“˜ Kubernetes Best Practice

[Kubernetes Best Practice] 5. ์ง€์†์  ํ†ตํ•ฉ, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌ

by Seongpyo Hong 2021. 2. 25.

์ด ๊ธ€์€ Kubernetes Best Practice๋ฅผ ์ฝ๊ณ  ๊ฐœ์ธ์ ์œผ๋กœ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋ถ€๋ถ„๊ณผ ์ž˜ ๋ชจ๋ฅด๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๋‚ด์šฉ์€ ์ฑ…์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๋‚ด์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑํ•˜์˜€์œผ๋ฉฐ ์ž์„ธํ•œ ๋‚ด์šฉ์ด ๊ถ๊ธˆํ•˜์‹  ๋ถ„๋“ค์€ ์ฑ…์„ ๊ตฌ๋งคํ•ด์„œ ์ฝ๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ๋“œ๋ฆฝ๋‹ˆ๋‹ค. 

์ตœ๊ทผ ์„œ๋น„์Šค ๋ฉ”์‹œ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฑฐ๋‚˜ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๊ณต๋ถ€ํ•˜๋ฉด์„œ ๊ฐ€์žฅ ๋งŽ์ด ๋“ค์—ˆ๋˜ ์ƒ๊ฐ์€ ์ด ๋ฐฉ๋ฒ•์ด ์ตœ์„ ์ธ๊ฐ€? ๋ผ๋Š” ์ƒ๊ฐ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ๊ถ๊ธˆ์ฆ์„ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ ๋„์›€์ด ๋ ๋งŒํ•œ ์ฑ…์„ ๋ฐœ๊ฒฌํ•ด์„œ ์ฝ์–ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.


์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๊ฒฝ๋Ÿ‰ํ™”

์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•  ๋•Œ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๋ฅผ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๊ณ ๋ ค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘์„์ˆ˜๋ก registry์—์„œ ๋‹ค์šด ๋ฐ›๋Š” ์‹œ๊ฐ„์ด ๊ฐ์†Œํ•˜์–ด ๋ฐฐํฌ ๊ณผ์ •์—์„œ ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์ด ์ค„์–ด๋“ค๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ถˆํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ฅผ ํฌํ•จ์‹œํ‚ค์ง€ ์•Š๊ฒŒ๋˜์–ด ๋ณด์•ˆ์ ์ธ ๋ถ€๋ถ„๋„ ๊ฐ•ํ™”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€ ํฌ๊ธฐ๋ฅผ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์š”์†Œ๋“ค์„ ๊ณ ๋ คํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

  • Multistage Build
    ์ด๋ฏธ์ง€ ๋นŒ๋“œ ๊ณผ์ •์„ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๋กœ ์ •์˜ํ•ด์„œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•  ๋•Œ ํ•„์š”ํ•œ ํŒŒ์ผ์ด ์•„๋‹Œ ๋นŒ๋“œ ๋‹จ๊ณ„์™€ ๊ฐ™์ด ์ด์ „ ๊ณผ์ •์—์„œ ํ•„์š”ํ•œ ๋„๊ตฌ๋“ค์„ ์ œ๊ฑฐํ•˜๊ณ  ์ด๋ฅผ ํ†ตํ•ด ์ด๋ฏธ์ง€๋ฅผ ๊ฒฝ๋Ÿ‰ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ณต์‹๋ฌธ์„œ์—์„œ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • Distroless Image
    ์ผ๋ฐ˜์ ์ธ ๋ฐฐํฌํ•œ ๋ฆฌ๋ˆ…์Šค์—์„œ ์ œ๊ณต๋˜๋Š” ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €, ์‰˜์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์ด๋ฏธ์ง€์˜ ๊ฒฝ๋Ÿ‰ํ™”๋ฟ๋งŒ ์•„๋‹ˆ๋ผ CVE์™€ ๊ฐ™์€ ๋ณด์•ˆ ๋ฌธ์ œ์—๋„ ๋Œ€์‘์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋””๋ฒ„๊น… ๋‚œ์ด๋„๊ฐ€ ์ฆ๊ฐ€ํ•œ๋‹ค๋Š” ๋‹จ์ ๋„ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
  • ์ตœ์ ํ™” ์ด๋ฏธ์ง€
    Alpine ๋ฆฌ๋ˆ…์Šค์™€ ๊ฐ™์ด ๋””๋ฒ„๊น…์„ ์œ„ํ•œ ์ตœ์†Œํ•œ์˜ ๋„๊ตฌ๋“ค์„ ์ œ๊ณตํ•˜๋Š” ์ด๋ฏธ์ง€์ž…๋‹ˆ๋‹ค. ์ด ์—ญ์‹œ ์ด๋ฏธ์ง€๋ฅผ ๊ฒฝ๋Ÿ‰ํ™” ์‹œํ‚ค๋ฉฐ ๋ถˆํ•„์š”ํ•œ ํŒจํ‚ค์ง€์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ ์œ„ํ—˜๋„ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ํƒœ๊ทธ

CI ๋‹จ๊ณ„์—์„œ ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์ปค๋ฐ‹๋˜๋ฉด ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•œ ํ›„์— CD๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋„์ปค ์ด๋ฏธ์ง€ ๋นŒ๋“œ ๊ณผ์ •์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ ์ด๋ฏธ์ง€์˜ ๋ฒ„์ „์„ ์‰ฝ๊ฒŒ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์ ์ ˆํ•œ ์ด๋ฏธ์ง€ ํƒœ๊ทธ ์ „๋žต์„ ์ˆ˜๋ฆฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ ์€ latest ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. latest๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์ƒˆ๋กœ์šด ๋ฒ„์ „์ด ์–ด๋–ค ๋ถ€๋ถ„์ด ์ˆ˜์ •๋œ ๋ฒ„์ „์ธ์ง€ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ต๊ณ , ๋กค๋ฐฑ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ๋„ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํƒœ๊ทธ ์ „๋žต์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • (๋นŒ๋“œ ์‹œ์Šคํ…œ)-BuildID
  • Commit Hash

๋ฐฐํฌ

์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋Š” ๋ถˆ๋ณ€ ๊ฐ์ฒด๋กœ ๋‹ค๋ฃจ์–ด์ง€๊ธฐ ๋–„๋ฌธ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐฐํฌํ•จ์— ์žˆ์–ด ํ™˜๊ฒฝ์˜ ๋ถˆ์ผ์น˜๋กœ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ฐฐํฌํ•˜๋Š” ์ „๋žต์œผ๋กœ ๋‹ค์–‘ํ•œ ์ „๋žต์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

  • RollingUpdate
    Pod์„ ์ ์ง„์ ์œผ๋กœ ์ƒˆ๋กœ์šด ๋ฒ„์ „์œผ๋กœ ๊ต์ฒดํ•จ์œผ๋กœ์จ ์—…๋ฐ์ดํŠธ๊ฐ€ ์„œ๋น„์Šค ์ค‘๋‹จ ์—†์ด ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค. ๋˜ํ•œ, maxSurge๋‚˜ maxUnavailable๊ณผ ๊ฐ™์€ ์˜ต์…˜์„ ํ†ตํ•ด ํ•œ ๋ฒˆ์— ์—…๋ฐ์ดํŠธ ํ•  ์ตœ๋Œ€ ๋ ˆํ”Œ๋ฆฌ์นด ์ˆ˜, ์—…๋ฐ์ดํŠธ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ตœ๋Œ€ ๋ ˆํ”Œ๋ฆฌ์นด ์ˆ˜ ๋“ฑ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋งŒ์•ฝ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด๋ฒˆ์— ์—…๋ฐ์ดํŠธ ๋Œ€์ƒ์œผ๋กœ ์„ ํƒ๋œ Pod์— ์ ‘๊ทผํ•˜์—ฌ ํ†ต์‹ ํ•˜๋Š” ๊ฒฝ์šฐ, ์—ฐ๊ฒฐ์ด ๋น„์ •์ƒ์ ์œผ๋กœ ๋Š์–ด์ง€๊ฑฐ๋‚˜ ์•„์ง ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์€ ์ƒˆ๋กœ์šด Pod์— ์—ฐ๊ฒฐ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด readinessProbe๋ฅผ ํ†ตํ•ด ์ƒˆ๋กœ ๋ฐฐํฌ๋œ Pod์ด ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•  ์ค€๋น„๊ฐ€ ๋๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•˜๊ณ , preStop hook์„ ํ†ตํ•ด ํ˜„์žฌ ์ข…๋ฃŒ๋˜๋Š” Pod์˜ ์—ฐ๊ฒฐ์„ ๋Š๋Š” ์ž‘์—…์„ ๋ณด์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ๋กค๋ง ์—…๋ฐ์ดํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋˜ ํ•œ๊ฐ€์ง€ ๊ณ ๋ คํ•  ์ ์€ 2๊ฐ€์ง€ ๋ฒ„์ „์ด ๋™์‹œ์— ์ˆ˜ํ–‰๋˜๊ธฐ ๋–„๋ฌธ์— DB ์Šคํ‚ค๋งˆ๋Š” 2๊ฐ€์ง€ ๋ฒ„์ „์„ ๋ชจ๋‘ ์ง€์›ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. 

  • Blue/Green
    ์ƒˆ๋กœ์šด ๋ฒ„์ „์„ ๋ชจ๋‘ ๋ฐฐํฌํ•œ ์ดํ›„, ์›ํ•˜๋Š” ์‹œ์ ์— ๊ธฐ์กด ํŠธ๋ž˜ํ”ฝ์„ ์ค‘๋‹จํ•˜๊ณ  ์ƒˆ๋กœ์šด ๋ฒ„์ „์œผ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ์ „์†กํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ด๋Š” ํŠธ๋ž˜ํ”ฝ์ด ๋ณ€๊ฒฝ๋˜๋Š” ์‹œ์ ์„ ํ†ต์ œํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ์šด ๋ฒ„์ „์— ํŠธ๋ž˜ํ”ฝ์„ ๋ณด๋‚ด๊ธฐ ์ „๊นŒ์ง€ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜๋ฅผ ์ถ”์ ํ•˜๊ธฐ ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ธฐ์กด ๋ฒ„์ „์œผ๋กœ ๋กค๋ฐฑ๋„ ์šฉ์ดํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ๊ธฐ์กด ๋ฒ„์ „/ ์ƒˆ๋กœ์šด ๋ฒ„์ „์— ๋Œ€ํ•œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ชจ๋‘ ๋– ์žˆ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์šฉ๋Ÿ‰ ์ธก๋ฉด์—์„œ ๋ถ€๋‹ด์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Canary
    ์นด๋‚˜๋ฆฌ ๋ฐฐํฌ๋Š” ๋ธ”๋ฃจ ๊ทธ๋ฆฐ ๋ฐฐํฌ์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ํŠธ๋ž˜ํ”ฝ์„ ์กฐ์ ˆํ•œ๋‹ค๋Š” ์ ์— ๋Œ€ํ•ด์„œ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • ์œ ์ €์ธต์ด๋‚˜ ํŠน์ • ์„œ๋ฒ„์—๋งŒ ์ƒˆ๋กœ์šด ๋ฒ„์ „์„ ๋ฐฐํฌํ•จ์œผ๋กœ์จ ์ •์ƒ ๋™์ž‘์„ ํ…Œ์ŠคํŠธํ•˜๊ณ , ํ…Œ์ŠคํŠธ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์ ์ฐจ ํŠธ๋ž˜ํ”ฝ ๋น„์œจ์„ ๋†’์ด๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฐฐํฌ๊ฐ€ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ธ๊ทธ๋ ˆ์Šค๋ฅผ ํ†ตํ•ด ํŠธ๋ž˜ํ”ฝ์„ ๋ณด๋‹ค ์„ธ๋ฐ€ํ•˜๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์กด์žฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

Chaos Engineering

์นด์˜ค์Šค ์—”์ง€๋‹ˆ์–ด๋ง์€ ์‹ค์ œ ์šด์˜ ์‹œ์Šคํ…œ์— ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•ด์„œ ์ทจ์•ฝ์ ์„ ๋ฐœ๊ฒฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ๊ฐ€์„ค์„ ์„ธ์šฐ๊ณ  ์•ˆ์ •๋œ ์ƒํƒœ ํŒŒ์•…
  • ์‹œ์Šคํ…œ์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ์ด๋ฒคํŠธ ์ˆ˜์ง‘
  • ํ†ต์ œ ๊ทธ๋ฃน ๊ตฌ์ถ• ํ›„ ์•ˆ์ •๋œ ์ƒํƒœ์™€ ๋น„๊ต
  • ์‹คํ—˜์„ ์ˆ˜ํ–‰ํ•ด ๊ฐ€์„ค ๊ฒ€์ฆ

 


CI/CD ๋ชจ๋ฒ” ์‚ฌ๋ก€

  • CI๋ฅผ ํ†ตํ•œ ์ž๋™ํ™”์™€ ๋นŒ๋“œ ์†๋„ ์ตœ์ ํ™”๋ฅผ ๋‹ฌ์„ฑํ•ด์•ผ ํ•œ๋‹ค. ๋นŒ๋“œ ์†๋„ ์ตœ์ ํ™”๋Š” ๋น ๋ฅธ ํ”ผ๋“œ๋ฐฑ๊ณผ ์ด๋ฅผ ํ†ตํ•œ ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ์„ ์ด๋ฃฐ ์ˆ˜ ์žˆ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ์ตœ์ ํ™” ์ˆ˜ํ–‰
  • CD ๊ณผ์ •์—์„œ ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ๊ณผ DB ์Šคํ‚ค๋งˆ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌ๋˜๋Š”์ง€ ๋ฐ˜๋“œ์‹œ ํ…Œ์ŠคํŠธ ํ•  ๊ฒƒ

๋Œ“๊ธ€