์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ๊ฐœ์„ ํ•˜๋Š” 11๊ฐ€์ง€ ๋„๊ตฌ

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ๊ฐœ์„ ํ•˜๋Š” 11๊ฐ€์ง€ ๋„๊ตฌ

๊ฐ€์žฅ ๊ฐ•๋ ฅํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์„œ๋ฒ„ ํ”Œ๋žซํผ์ด๋ผ๋„ ๋ชจ๋“  ์„œ๋ฒ„ ํ”Œ๋žซํผ์ด ๋ชจ๋“  ์š”๊ตฌ ์‚ฌํ•ญ์„ ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ์ถฉ์กฑํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. Kubernetes๋Š” ๊ทธ ์ž์ฒด๋กœ๋Š” ํ›Œ๋ฅญํ•˜๊ฒŒ ์ž‘๋™ํ•˜์ง€๋งŒ, ์™„์„ฑ๋˜๊ธฐ์— ์ ํ•ฉํ•œ ๋ถ€๋ถ„์ด ๋ถ€์กฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์˜ ํ•„์š”๋ฅผ ๋ฌด์‹œํ•˜๊ฑฐ๋‚˜ Kubernetes๊ฐ€ ๊ธฐ๋ณธ ์„ค์น˜์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ(์˜ˆ: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ง€์› ๋˜๋Š” CD ์ž‘์—…)๋ฅผ ํ•ญ์ƒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—๋Š” ๊ด‘๋ฒ”์œ„ํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์ง€์›๋˜๋Š” ์ด ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ์— ๋Œ€ํ•œ ์ถ”๊ฐ€, ํ™•์žฅ ๋ฐ ๊ธฐํƒ€ ๊ธฐ๋Šฅ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ์—์„œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ฐพ์€ ์ตœ๊ณ ์˜ 11๊ฐ€์ง€ ๋‚ด์šฉ์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ์ž์‹ ์—๊ฒŒ ์‚ฌ์šฐ์Šค ๋ธŒ๋ฆฌ์ง€ ๊ทธ๊ฒƒ๋“ค์€ ๋งค์šฐ ํฅ๋ฏธ๋กญ๊ณ  ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ๋“ค์„ ์‹ค์ œ๋กœ ๋‹ค๋ฃฐ ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์„ ๋‚˜์‚ฌ์™€ ๋„ˆํŠธ๋กœ ๋ถ„ํ•ดํ•˜๊ณ  ์•ˆ์— ๋ฌด์—‡์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ๊ทธ ์ค‘ ์ผ๋ถ€๋Š” Kubernetes ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ๋ณด์™„ํ•˜๋Š” ๋ฐ˜๋ฉด, ์ผ๋ถ€๋Š” ํ‘œ์ค€ Kubernetes ํŒจํ‚ค์ง€์— ๊ตฌํ˜„๋˜์ง€ ์•Š์€ ํŠน์ • ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

๊ฒŒ์ดํŠธํ‚คํผ: ์ •์ฑ… ๊ด€๋ฆฌ

๊ณ„ํš ์ •์ฑ… ์—์ด์ „ํŠธ ์—ด๊ธฐ (OPA)๋Š” ์ˆ˜์‹ ๋ถ€ํ„ฐ ์„œ๋น„์Šค ๋ฉ”์‹œ๊นŒ์ง€ Kubernetes์˜ ํด๋ผ์šฐ๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์Šคํƒ ์œ„์— ์ •์ฑ…์„ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ง€๊ธฐ ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด์— ์ž๋™์œผ๋กœ ์ •์ฑ…์„ ์‹œํ–‰ํ•˜๋Š” Kubernetes ๊ธฐ๋ฐ˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ  ์ •์ฑ…์„ ์œ„๋ฐ˜ํ•˜๋Š” ๋ชจ๋“  ์ด๋ฒคํŠธ ๋˜๋Š” ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ๊ฒ€์‚ฌ๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๊ฒƒ์€ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ ํŠธ๋ฆฌ๊ฑฐ๋˜๋Š” Webhooks ์Šน์ธ ๊ด€๋ฆฌ์ž์ธ Kubernetes์˜ ๋น„๊ต์  ์ƒˆ๋กœ์šด ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. Gatekeeper๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ง€์†์ ์ธ ๊ฐ๋… ์—†์ด๋„ OPA ์ •์ฑ…์ด Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ์ƒํƒœ์˜ ๋˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„์ด ๋ฉ๋‹ˆ๋‹ค.

์ค‘๋ ฅ: ํœด๋Œ€์šฉ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ

Kubernetes์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๋งŽ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—๋Š” ์ด ํ”„๋กœ์„ธ์Šค๋ฅผ ์•ˆ๋‚ดํ•˜๊ณ  ์ž๋™ํ™”ํ•˜๋Š” Helm ์ฐจํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์™€์„œ ๋‹ค๋ฅธ ๊ณณ์— ์ถœ์‹œํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”?

์ค‘๋Ÿ‰ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ์ƒํƒœ, ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์šฉ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๋ฐ "์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํŒจํ‚ค์ง€"๋ผ๊ณ  ํ•˜๋Š” ์‹คํ–‰ ์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์Šค๋ƒ…์ƒท์„ ์ฐ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ํŒŒ์ผ์ธ ์ด๋Ÿฌํ•œ ํŒจํ‚ค์ง€ .tar, Kubernetes๊ฐ€ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ณณ์—์„œ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ณต์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Gravity๋Š” ๋˜ํ•œ ๋Œ€์ƒ ์ธํ”„๋ผ๊ฐ€ ์†Œ์Šค์™€ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€, ๋Œ€์ƒ์˜ Kubernetes ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์œ ๋ฃŒ ๋ฒ„์ „์˜ Gravity์—๋Š” RBAC ๋ฐ ๋‹ค์–‘ํ•œ ํด๋Ÿฌ์Šคํ„ฐ ๋ฐฐํฌ์—์„œ ๋ณด์•ˆ ์„ค์ •์„ ๋™๊ธฐํ™”ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํฌํ•จํ•œ ๋ณด์•ˆ ๊ธฐ๋Šฅ๋„ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

์ตœ์‹  ์ฃผ์š” ๋ฒ„์ „์ธ Gravity 7์€ ์ด๋ฏธ์ง€์—์„œ ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ฐ€๋™ํ•˜๋Š” ๋Œ€์‹  ๊ธฐ์กด Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— Gravity ์ด๋ฏธ์ง€๋ฅผ ๋กค์•„์›ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Gravity 7์€ Gravity ์ด๋ฏธ์ง€ ์—†์ด ์„ค์น˜๋œ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ๋„ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Gravity๋Š” SELinux๋„ ์ง€์›ํ•˜๋ฉฐ Teleport SSH ๊ฒŒ์ดํŠธ์›จ์ด์™€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

Kaniko: Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ปจํ…Œ์ด๋„ˆ ๊ตฌ์ถ•

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

์นด๋‹ˆ์ฝ” Docker์™€ ๊ฐ™์€ ์ปจํ…Œ์ด๋„ˆํ™” ์„œ๋น„์Šค์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ ๋‚ด์— ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์‹  Kaniko๋Š” ๊ธฐ๋ณธ ์ด๋ฏธ์ง€์—์„œ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์ถ”์ถœํ•˜๊ณ  ์ถ”์ถœ๋œ ํŒŒ์ผ ์‹œ์Šคํ…œ ์œ„์— ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์—์„œ ๋ชจ๋“  ๋นŒ๋“œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉฐ ๊ฐ ๋ช…๋ น ํ›„์— ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์Šค๋ƒ…์ƒท์„ ์ฐ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ : Kaniko๋Š” ํ˜„์žฌ(2020๋…„ XNUMX์›”, ์•ฝ. ์—ญ์ž)๋Š” Windows ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Kubecost: Kubernetes ์‹œ์ž‘ ๋น„์šฉ ๋งค๊ฐœ๋ณ€์ˆ˜

๋Œ€๋ถ€๋ถ„์˜ Kubernetes ๊ด€๋ฆฌ ๋„๊ตฌ๋Š” ์‚ฌ์šฉ ํŽธ์˜์„ฑ, ๋ชจ๋‹ˆํ„ฐ๋ง, Pod ๋‚ด ๋™์ž‘ ์ดํ•ด ๋“ฑ์— ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Kubernetes ์‹คํ–‰๊ณผ ๊ด€๋ จ๋œ ๋น„์šฉ(๋‹ฌ๋Ÿฌ ๋ฐ ํŽ˜๋‹ˆ ๋‹จ์œ„)์„ ์‚ดํŽด๋ณด๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

ํ๋ธŒ์ฝ”์ŠคํŠธ Kubernetes ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ ์ฃผ์š” ํด๋ผ์šฐ๋“œ ์ œ๊ณต์—…์ฒด์—์„œ ์‹คํ–‰ ์ค‘์ธ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ตœ์‹  ๋น„์šฉ ์ •๋ณด๋ฅผ ๊ฐ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์›”๋ณ„ ๋น„์šฉ์„ ๋ณด์—ฌ์ฃผ๋Š” ๋Œ€์‹œ๋ณด๋“œ์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. RAM, CPU ์‹œ๊ฐ„, GPU ๋ฐ ๋””์Šคํฌ ํ•˜์œ„ ์‹œ์Šคํ…œ์˜ ๊ฐ€๊ฒฉ์€ Kubernetes ๊ตฌ์„ฑ ์š”์†Œ(์ปจํ…Œ์ด๋„ˆ, ํฌ๋“œ, ์„œ๋น„์Šค ๋“ฑ)๋ณ„๋กœ ๋ถ„๋ฅ˜๋ฉ๋‹ˆ๋‹ค.

Kubecost๋Š” Amazon S3 ๋ฒ„ํ‚ท๊ณผ ๊ฐ™์€ ํด๋Ÿฌ์Šคํ„ฐ ์™ธ๋ถ€ ๋ฆฌ์†Œ์Šค์˜ ๋น„์šฉ๋„ ์ถ”์ ํ•˜์ง€๋งŒ ์ด๋Š” AWS๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ๋น„์šฉ ๋ฐ์ดํ„ฐ๋ฅผ Prometheus๋กœ ์ „์†กํ•˜๋ฉด ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ ๋™์ž‘์„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Kubecost๋Š” 15์ผ์˜ ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๊ฐ€ ์ถฉ๋ถ„ํ•˜๋‹ค๋ฉด ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์˜ ๊ฒฝ์šฐ 199๊ฐœ ๋…ธ๋“œ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ๋•Œ ๊ฐ€๊ฒฉ์ด ์›” 50๋‹ฌ๋Ÿฌ๋ถ€ํ„ฐ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

KubeDB: Kubernetes์—์„œ ์ „ํˆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹คํ–‰

๋˜ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” Kubernetes์—์„œ ํšจ๊ณผ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. MySQL, PostgreSQL, MongoDB ๋ฐ Redis์— ๋Œ€ํ•œ Kubernetes ์—ฐ์‚ฐ์ž๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ชจ๋‘ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ผ๋ฐ˜์ ์ธ Kubernetes ๊ธฐ๋Šฅ ์„ธํŠธ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฌธ์ œ๋ฅผ ์ง์ ‘ ํ•ด๊ฒฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

KubeDB Kubernetes ๋ฌธ์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ๋ฐฑ์—… ์‹คํ–‰, ๋ณต์ œ, ๋ชจ๋‹ˆํ„ฐ๋ง, ์Šค๋ƒ…์ƒท ๋ฐ ์„ ์–ธ์  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ์ด ํ•ด๋‹น ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ ์ง€์›์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํด๋Ÿฌ์Šคํ„ฐ ์ƒ์„ฑ์€ PostgreSQL์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€๋งŒ MySQL์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์ด๋ฏธ ์ •ํ™•ํ•˜๊ฒŒ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด dnbstd, ์•ฝ. ์—ญ์ž).

Kube-monkey: Kubernetes์šฉ Chaos Monkey

๊ฐ€์žฅ ์˜ค๋ฅ˜๊ฐ€ ์—†๋Š” ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•์€ ๋ฌด์ž‘์œ„ ๊ณ ์žฅ์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ณด๋‹ค ํƒ„๋ ฅ์ ์ธ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๋„๋ก "์ธ์„ผํ‹ฐ๋ธŒ"๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€์ƒ ๋จธ์‹ ๊ณผ ํ”„๋กœ๋•์…˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ฌด์ž‘์œ„๋กœ ์ข…๋ฃŒํ•˜๋Š” ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ์—”์ง€๋‹ˆ์–ด๋ง ๋„๊ตฌ์ธ Netflix์˜ Chaos Monkey ๋’ค์— ์žˆ๋Š” ์ด๋ก ์ด ๋ฐ”๋กœ ์ด๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฟ ๋ฒ ์›์ˆญ์ด โ€” Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ๋™์ผํ•œ ๊ธฐ๋ณธ ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ ์ด๋ก  ๊ตฌํ˜„. ์ง€์ •ํ•œ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ Pod๋ฅผ ๋ฌด์ž‘์œ„๋กœ ์ข…๋ฃŒํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋ฉฐ ํŠน์ • ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ์œผ๋กœ ์‹คํ–‰๋˜๋„๋ก ๊ตฌ์„ฑํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

AWS์šฉ Kubernetes ์ˆ˜์‹  ์ปจํŠธ๋กค๋Ÿฌ

Kubernetes๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ด ์™ธ๋ถ€ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ ๋ฐ ํด๋Ÿฌ์Šคํ„ฐ ๋„คํŠธ์›Œํ‚น ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ž…๊ตฌ AWS๋Š” ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€๋งŒ ์ด๋ฅผ Kubernetes์˜ ๋™์ผํ•œ ๊ธฐ๋Šฅ์— ์ž๋™์œผ๋กœ ์—ฐ๊ฒฐํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. AWS์šฉ Kubernetes ์ˆ˜์‹  ์ปจํŠธ๋กค๋Ÿฌ ์ด ๊ฒฉ์ฐจ๋ฅผ ํ•ด์†Œํ•ฉ๋‹ˆ๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ฐ ์ˆ˜์‹  ๊ฐ์ฒด์— ๋Œ€ํ•œ AWS ๋ฆฌ์†Œ์Šค๋ฅผ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ , ์ƒˆ๋กœ์šด ์ˆ˜์‹  ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๋ฆฌ์†Œ์Šค๊ฐ€ ์‚ญ์ œ๋˜๋ฉด ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. CloudFormation์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ ์ƒํƒœ๊ฐ€ ์ผ๊ด€๋˜๊ฒŒ ์œ ์ง€๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ CloudWatch ๊ฒฝ๋ณด ์„ค์ •์„ ์ง€์›ํ•˜๊ณ  SSL ์ธ์ฆ์„œ ๋ฐ EC2 Auto Scaling ๊ทธ๋ฃน๊ณผ ๊ฐ™์ด ํด๋Ÿฌ์Šคํ„ฐ์— ์‚ฌ์šฉ๋˜๋Š” ๋‹ค๋ฅธ ์š”์†Œ๋ฅผ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Kubespray: Kubernetes ์ž๋™ ์„ค์น˜

ํ๋ธŒ์Šคํ”„๋ ˆ์ด ํ•˜๋“œ์›จ์–ด ์„œ๋ฒ„ ์„ค์น˜๋ถ€ํ„ฐ ์ฃผ์š” ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ๊นŒ์ง€ ํ”„๋กœ๋•์…˜์— ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ์„ค์น˜๋ฅผ ์ž๋™ํ™”ํ•ฉ๋‹ˆ๋‹ค. Ansible(Vagrant - ์„ ํƒ ์‚ฌํ•ญ)์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋“œ์›จ์–ด ์„œ๋ฒ„์— ์„ค์น˜ํ•  ๋•Œ ์„ ํƒํ•œ ์ธ๊ธฐ Linux ๋ฐฐํฌํŒ์—์„œ ์„ ํƒํ•œ ๋„คํŠธ์›Œํ‚น ์ถ”๊ฐ€ ๊ธฐ๋Šฅ(์˜ˆ: Flannel, Calico ๋ฐ ๊ธฐํƒ€)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๊ณ ๊ฐ€์šฉ์„ฑ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

Skaffold: Kubernetes๋ฅผ ์œ„ํ•œ ๋ฐ˜๋ณต ๊ฐœ๋ฐœ

๋น„๊ณ„ - Kubernetes์—์„œ CD ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” Google ๋„๊ตฌ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ž๋งˆ์ž skaffold๋Š” ์ด๋ฅผ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•˜๊ณ  ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ๋ฅผ ์‹œ์ž‘ํ•˜๋ฉฐ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์œผ๋ฉด ๊ฒฝ๊ณ ํ•ฉ๋‹ˆ๋‹ค. Skaffold๋Š” ์ „์ ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์‹คํ–‰๋˜๋ฏ€๋กœ ์‚ฌ์†Œํ•œ ์„ค์น˜ ๋˜๋Š” ์—…๋ฐ์ดํŠธ ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด CICD ํŒŒ์ดํ”„๋ผ์ธ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ฃผ๋กœ Google์˜ Bazel๊ณผ ๊ฐ™์€ ์ผ๋ถ€ ์™ธ๋ถ€ ๋นŒ๋“œ ๋„๊ตฌ์™€๋„ ์ธํ„ฐํŽ˜์ด์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Teresa: Kubernetes์—์„œ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ PaaS

Teresa Kubernetes ์œ„์—์„œ ๊ฐ„๋‹จํ•œ PaaS๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ํŒ€์œผ๋กœ ๊ตฌ์„ฑ๋œ ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์ด ์†Œ์œ ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹ ๋ขฐํ•˜๊ณ  Kubernetes ๋ฐ ๋ชจ๋“  ๋ณต์žก์„ฑ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ผ์„ ์กฐ๊ธˆ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

Tilt: Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ์ปจํ…Œ์ด๋„ˆ ์—…๋ฐ์ดํŠธ ์ŠคํŠธ๋ฆฌ๋ฐ

๊ธฐ์šธ์ด๋‹คWindmill Engineering์—์„œ ๊ฐœ๋ฐœํ•œ ๋Š” ๋‹ค์–‘ํ•œ Dockerfile์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฐ์‹œํ•œ ๋‹ค์Œ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๋ฅผ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ์ ์ง„์ ์œผ๋กœ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ Dockerfile์„ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ํ”„๋กœ๋•์…˜ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Tilt๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ ๋นŒ๋“œ๋˜๋ฉฐ ์†Œ์Šค ์ฝ”๋“œ๋งŒ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ Tilt์—์„œ ์ง์ ‘ ํด๋Ÿฌ์Šคํ„ฐ ์ƒํƒœ์˜ ์Šค๋ƒ…์ƒท์„ ์ฐ๊ณ  ์˜ค๋ฅ˜ ์กฐ๊ฑด์„ ์บก์ฒ˜ํ•˜์—ฌ ๋””๋ฒ„๊น…์„ ์œ„ํ•ด ํŒ€ ๊ตฌ์„ฑ์›๊ณผ ๊ณต์œ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

PS ์šฐ๋ฆฌ๋Š” ์ด ๋ชจ๋“  ๋„๊ตฌ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉํ•ด ์™”์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฐ์Šค ๋ธŒ๋ฆฌ์ง€ ์šฐ๋ฆฌ์˜ ํ˜ธ๊ธฐ์‹ฌ ๋งŽ์€ ์†์œผ๋กœ ์กฐ์‚ฌํ•ด ๋ณด์„ธ์š”. XNUMX์›” ์˜คํ”„๋ผ์ธ ์ง‘์ค‘ ๊ณผ์ •์—์„œ ์ด๋ฏธ ์‹ค์ œ ์‹ค์Šต์„ ์„ ๋ณด์ผ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฒ ์ด์Šค 8๋…„ 10์›” 2021~XNUMX์ผ. ๊ทธ๋ฆฌ๊ณ  ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฉ”๊ฐ€ 12์›” 14~XNUMX์ผ. ์†”์งํžˆ ์šฐ๋ฆฌ๋Š” ์˜คํ”„๋ผ์ธ ํ•™์Šต์˜ ๋”ฐ๋œปํ•˜๊ณ  ํ™œ๊ธฐ ๋„˜์น˜๋Š” ๋ถ„์œ„๊ธฐ๋„ ๊ทธ๋ฆฌ์›Œํ•ฉ๋‹ˆ๋‹ค. ์•„๋ฌด๋ฆฌ ๊ธฐ์ˆ ์ด ๋ฐœ์ „ํ•ด๋„ ์ธ๊ฐ„์˜ ์ƒ์ƒํ•œ ์†Œํ†ต๊ณผ ๊ฐ™์€ ์ƒ๊ฐ์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ๋“ค์ด ๋ชจ์ผ ๋•Œ์˜ ํŠน๋ณ„ํ•œ ๋ถ„์œ„๊ธฐ๋ฅผ ๋Œ€์ฒดํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€