Kubernetes ์ ์šฉ, ๊ต์ฒด ๋ฐ ํŒจ์น˜์˜ ์ ์ ˆํ•œ ๋น„๊ต

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

Kubernetes ์ ์šฉ, ๊ต์ฒด ๋ฐ ํŒจ์น˜์˜ ์ ์ ˆํ•œ ๋น„๊ต

๋ฉด ๊ตฌ๊ธ€์—์„œ ๊ฒ€์ƒ‰ํ•ด ๋ณด์„ธ์š” "kubernetes ์ ์šฉ ๋Œ€ ๊ต์ฒด"๋ผ๋Š” ๋ฌธ๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. StackOverflow์— ๋‹ต์žฅํ•˜๋‹ค, ์ด๋Š” ์ •ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰ํ•  ๋•Œ "kubernetes ์ ์šฉ ๋Œ€ ํŒจ์น˜" ์ฒซ ๋ฒˆ์งธ ๋งํฌ๋Š” ๋‹ค์Œ์— ๋Œ€ํ•œ ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค. kubectl patch, ๋น„๊ต๋Š” ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. apply ะธ patch. ์ด ๊ธฐ์‚ฌ์—์„œ๋Š” ๋‹ค์–‘ํ•œ ์˜ต์…˜๊ณผ ๊ฐ ์˜ต์…˜์˜ ์˜ฌ๋ฐ”๋ฅธ ์‚ฌ์šฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Kubernetes ๋ฆฌ์†Œ์Šค(์„œ๋น„์Šค, ๋ฐฐํฌ, ์ˆ˜์‹  ๋“ฑ)์˜ ์ˆ˜๋ช… ์ฃผ๊ธฐ ๋™์•ˆ ๋•Œ๋•Œ๋กœ ์ด ๋ฆฌ์†Œ์Šค์˜ ์ผ๋ถ€ ์†์„ฑ์„ ๋ณ€๊ฒฝ, ์ถ”๊ฐ€ ๋˜๋Š” ์ œ๊ฑฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฉ”๋ชจ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๋ณต์ œ๋ณธ ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ ์ค„์ž…๋‹ˆ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค CLI

์ด๋ฏธ CLI๋ฅผ ํ†ตํ•ด Kubernetes ํด๋Ÿฌ์Šคํ„ฐ๋กœ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ๋‹ค์Œ ์‚ฌํ•ญ์— ์ด๋ฏธ ์ต์ˆ™ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. apply ะธ edit. ํŒ€ apply ํŒŒ์ผ์—์„œ ๋ฆฌ์†Œ์Šค ์‚ฌ์–‘์„ ์ฝ๊ณ  Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— "upsert"๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ฆฌ์†Œ์Šค๊ฐ€ ์—†์œผ๋ฉด ์ƒ์„ฑํ•˜๊ณ , ์žˆ์œผ๋ฉด ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ํŒ€ edit API๋ฅผ ํ†ตํ•ด ๋ฆฌ์†Œ์Šค๋ฅผ ์ฝ์€ ๋‹ค์Œ ๋ฆฌ์†Œ์Šค ์‚ฌ์–‘์„ ๋กœ์ปฌ ํŒŒ์ผ์— ๊ธฐ๋กํ•œ ๋‹ค์Œ ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ์—์„œ ์—ฝ๋‹ˆ๋‹ค. ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜๊ณ  ์ €์žฅํ•œ ํ›„ kubectl API๋ฅผ ํ†ตํ•ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋‹ค์‹œ ๋ณด๋‚ด๋ฉด ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฆฌ์†Œ์Šค์— ์‹ ์ค‘ํ•˜๊ฒŒ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋‘๊ฐ€ ๋ช…๋ น์„ ์•„๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค patch ะธ replace. ํŒ€ patch ๋ช…๋ น์ค„์—์„œ ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„๋งŒ ์ œ๊ณตํ•˜์—ฌ ๋ฆฌ์†Œ์Šค ์‚ฌ์–‘์˜ ์ผ๋ถ€๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒ€ replace ์™€ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ edit, ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ์ž‘์—…์€ ์ˆ˜๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค ์‚ฌ์–‘์˜ ํ˜„์žฌ ๋ฒ„์ „์„ ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. kubectl get -o yaml, ํŽธ์ง‘ํ•œ ๋‹ค์Œ ์‚ฌ์šฉํ•˜์„ธ์š”. replace ๋ณ€๊ฒฝ๋œ ์‚ฌ์–‘์— ๋”ฐ๋ผ ๋ฆฌ์†Œ์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ํŒ€ replace ๋ฆฌ์†Œ์Šค๋ฅผ ์ฝ๊ณ  ๊ต์ฒดํ•˜๋Š” ์‚ฌ์ด์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API

์•„๋งˆ๋„ ๋‹น์‹ ์€ ๋ฐฉ๋ฒ•์— ์ต์ˆ™ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. CoreV1().Pods().Update(), replaceNamespacedService ๋˜๋Š” patch_namespaced_deployment, ๋‹ค์Œ์„ ํ†ตํ•ด ํด๋Ÿฌ์Šคํ„ฐ๋กœ ์ž‘์—…ํ•˜๋Š” ๊ฒฝ์šฐ Kubernetes API์šฉ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ผ๋ถ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ HTTP ์š”์ฒญ์„ ํ†ตํ•ด ์ด๋Ÿฌํ•œ ๋ฉ”์†Œ๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. PUT ะธ PATCH. ์ด ๊ฒฝ์šฐ, update ะธ replace ์‚ฌ์šฉํ•˜๋‹ค PUT๊ณผ patch, ์•„๋ฌด๋ฆฌ ์‚ฌ์†Œํ•œ ๊ฒƒ์ด๋ผ๋„ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. PATCH.

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

๊ธฐ๋ณธ์ ์œผ๋กœ ํŒจ์น˜

๊ฐ€์žฅ ์ž˜ ์‚ฌ์šฉ๋จ patch, ๋ฆฌ์†Œ์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋Š” ๊ฒฝ์šฐ. ์ด๋Š” ๋‘ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ Kubernetes API๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ด๋ฉฐ kubectl (ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ž˜ํผ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋†€๋ž์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค. ์•ฝ. ์—ญ์ž).

์ „๋žต์ ์œผ๋กœ ์ž‘์—…

๋ชจ๋“  ํŒ€ kubectl apply, edit ะธ patch ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋‹ค PATCH ๊ธฐ์กด ๋ฆฌ์†Œ์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•œ HTTP ์š”์ฒญ์—์„œ. ๋ช…๋ น ๊ตฌํ˜„์„ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด๋ฉด ๋ชจ๋“  ๋ช…๋ น์ด ๋‹ค์Œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ „๋žต์  ๋ณ‘ํ•ฉ ํŒจ์น˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ๋ช…๋ น์„ ์‹คํ–‰ํ•ด์•ผ ํ•˜์ง€๋งŒ patch ๋‹ค๋ฅธ ์ ‘๊ทผ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ์ฐธ์กฐ). ์ „๋žต์  ๋ณ‘ํ•ฉ ํŒจ์น˜ ์ ‘๊ทผ ๋ฐฉ์‹์€ ์ œ๊ณต๋œ ์‚ฌ์–‘์„ ๊ธฐ์กด ์‚ฌ์–‘๊ณผ ๋ณ‘ํ•ฉํ•˜์—ฌ "์ œ๋Œ€๋กœ" ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ๋ณด๋‹ค ๊ตฌ์ฒด์ ์œผ๋กœ ๋งํ•˜๋ฉด ๊ฐ์ฒด์™€ ๋ฐฐ์—ด์„ ๋ชจ๋‘ ๊ฒฐํ•ฉํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋Š”๋ฐ, ์ด๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ถ”๊ฐ€๋˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. patch ํฌ๋“œ ์ปจํ…Œ์ด๋„ˆ ์‚ฌ์–‘์— ์ƒˆ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๋ฎ์–ด์“ฐ๋Š” ๋Œ€์‹  ๊ธฐ์กด ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์ œ๊ฑฐํ•˜๋ ค๋ฉด ์ œ๊ณต๋œ ์‚ฌ์–‘์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์„ ๊ฐ•์ œ๋กœ null๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋А ํŒ€์ด kubectl ์—…๋ฐ์ดํŠธ์šฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹๋‚˜์š”?

๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ kubectl apply, ์—…๋ฐ์ดํŠธํ•  ๋•Œ ํ•ญ์ƒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค kubectl apply์— kubectl ๊ตฌ์„ฑ์„ ๊ด€๋ฆฌํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„์— ์š”์ฒญ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์ ˆํ•˜๊ฒŒ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์žฅ์ ์€ ํ•ญ์ƒ ์‚ฌ์šฉ apply ์ด๋Š” ์ด์ „์— ์ ์šฉ๋œ ์‚ฌ์–‘์„ ์ถ”์ ํ•˜์—ฌ ์‚ฌ์–‘ ์†์„ฑ๊ณผ ๋ฐฐ์—ด ์š”์†Œ๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ์ œ๊ฑฐ๋˜๋Š” ์‹œ๊ธฐ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. apply ์†์„ฑ๊ณผ ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋ฐ˜๋ฉด ์ผ๋ฐ˜์ ์ธ ์ „๋žต์  ๋ณ‘ํ•ฉ์€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŒ€ edit ะธ patch ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฉ”๋ชจ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์ง€ ๋งˆ์„ธ์š”. kubectl apply ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ถ”์ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ Kubernetes API๋ฅผ ํ†ตํ•ด ์ถ”์  ๋ฐ ์ˆ˜ํ–‰๋˜์ง€๋งŒ ๋ช…๋ น์„ ํ†ตํ•ด ์ˆ˜ํ–‰๋œ ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ edit ะธ patch, ํ›„์† ๋ช…๋ น์—๋Š” ํ‘œ์‹œ๋˜์ง€ ์•Š์Œ apply์ฆ‰, apply ์— ๋Œ€ํ•œ ์ž…๋ ฅ ์‚ฌ์–‘์— ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋”๋ผ๋„ ์ œ๊ฑฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. apply (๋ฌธ์„œ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค. edit ะธ patch ์‚ฌ์šฉ๋œ ๋ฉ”๋ชจ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. apply, ๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ๋กœ๋Š” - ์•„๋‹ˆ์˜ค).

๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ apply, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. edit๊ณผ patch, ๋ณ€๊ฒฝ ๋‚ด์šฉ์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๋ช…๋ น์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. BOM ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ๋ณ€๊ฒฝํ•  ๋•Œ ๋‘ ๊ฐ€์ง€ ์ ‘๊ทผ ๋ฐฉ์‹์€ ๊ฑฐ์˜ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์–‘ ์†์„ฑ์ด๋‚˜ ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ edit ์ผํšŒ์„ฑ ์‹คํ–‰์ฒ˜๋Ÿผ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. apply, ํŽธ์ง‘ ์ „ํ›„์˜ ์‚ฌ์–‘ ์ถ”์ ์„ ํฌํ•จํ•˜์—ฌ ๋ฆฌ์†Œ์Šค์—์„œ ์†์„ฑ๊ณผ ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์–‘์—์„œ ์†์„ฑ ๊ฐ’์„ ๋ช…์‹œ์ ์œผ๋กœ null๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. patch๋ฆฌ์†Œ์Šค์—์„œ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์ „๋žต์  ๋ณ‘ํ•ฉ ํŒจ์น˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์€ ๋ณ‘ํ•ฉ ์ง€์‹œ๋ฌธ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค. ๋ณด๋‹ค ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋Œ€์•ˆ์€ ์•„๋ž˜์˜ ๋‹ค๋ฅธ ์—…๊ทธ๋ ˆ์ด๋“œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์œ„์˜ ๋ช…๋ น๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋Š” ์—…๋ฐ์ดํŠธ ๋ฉ”์„œ๋“œ๋ฅผ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๊ตฌํ˜„ํ•˜๋ ค๋ฉด kubectl, ์š”์ฒญ์— ์„ค์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. content-type ะฒ application/strategic-merge-patch+json. ์‚ฌ์–‘์—์„œ ์†์„ฑ์„ ์ œ๊ฑฐํ•˜๋ ค๋ฉด ๋น„์Šทํ•œ ๋ฐฉ์‹์œผ๋กœ ํ•ด๋‹น ๊ฐ’์„ ๋ช…์‹œ์ ์œผ๋กœ null๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. kubectl patch. ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์—…๋ฐ์ดํŠธ ์‚ฌ์–‘์— ๋ณ‘ํ•ฉ ์ง€์‹œ๋ฌธ์„ ํฌํ•จํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธ์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹

Kubernetes๋Š” ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์—…๋ฐ์ดํŠธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. JSON ๋ณ‘ํ•ฉ ํŒจ์น˜ ะธ JSON ํŒจ์น˜. JSON ๋ณ‘ํ•ฉ ํŒจ์น˜ ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋ถ€๋ถ„์ ์ธ Kubernetes ์‚ฌ์–‘์„ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์ „๋žต์  ๋ณ‘ํ•ฉ ํŒจ์น˜ ์ ‘๊ทผ ๋ฐฉ์‹๊ณผ ์œ ์‚ฌํ•œ ๊ฐœ์ฒด ๋ณ‘ํ•ฉ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋‘˜์˜ ์ฐจ์ด์ ์€ ํฌ๋“œ ์‚ฌ์–‘์˜ ์ปจํ…Œ์ด๋„ˆ ๋ฐฐ์—ด์„ ํฌํ•จํ•˜์—ฌ ๋ฐฐ์—ด ๊ต์ฒด๋งŒ ์ง€์›ํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์ด๋Š” JSON ๋ณ‘ํ•ฉ ํŒจ์น˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ปจํ…Œ์ด๋„ˆ์˜ ์†์„ฑ์ด ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒฝ์šฐ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•œ ์™„์ „ํ•œ ์‚ฌ์–‘์„ ์ œ๊ณตํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ BOM์˜ ๋ฐฐ์—ด์—์„œ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ น์ค„์—์„œ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ JSON ๋ณ‘ํ•ฉ ํŒจ์น˜๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. kubectl patch --type=merge. Kubernetes API๋กœ ์ž‘์—…ํ•  ๋•Œ ์š”์ฒญ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. PATCH ๋ฐ ์„ค์น˜ content-type ะฒ application/merge-patch+json.

JSON ํŒจ์น˜ ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋ฆฌ์†Œ์Šค์˜ ๋ถ€๋ถ„ ์‚ฌ์–‘์„ ์ œ๊ณตํ•˜๋Š” ๋Œ€์‹  ๋ฆฌ์†Œ์Šค์— ์ ์šฉํ•˜๋ ค๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐฐ์—ด๋กœ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๋Š” ๋ฆฌ์†Œ์Šค์— ์ ์šฉ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์„ค๋ช…์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ‘œํ˜„ํ•˜๋Š” ๋” ์œ ์—ฐํ•˜๊ณ  ๊ฐ•๋ ฅํ•œ ๋ฐฉ๋ฒ•์ด์ง€๋งŒ, ๋ถ€๋ถ„ ๋ฆฌ์†Œ์Šค ์‚ฌ์–‘์„ ๋ณด๋‚ด๋Š” ๋Œ€์‹  Kubernetes๊ฐ€ ์•„๋‹Œ ๋ณ„๋„์˜ ํ˜•์‹์œผ๋กœ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋‚˜์—ดํ•˜๋Š” ๋น„์šฉ์ด ๋“ญ๋‹ˆ๋‹ค. ์•ˆ์— kubectl ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ JSON ํŒจ์น˜๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. kubectl patch --type=json. Kubernetes API๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ์š”์ฒญ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. PATCH ๋ฐ ์„ค์น˜ content-type ะฒ application/json-patch+json.

์ž์‹ ๊ฐ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค - ๊ต์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”

์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์ฝ๋Š” ์‹œ๊ฐ„๊ณผ ์—…๋ฐ์ดํŠธ๋˜๋Š” ์‹œ๊ฐ„ ์‚ฌ์ด์— ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ ์šฉ๋˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์›์ž. ์ด ๊ฒฝ์šฐ ๋ฆฌ์†Œ์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. replace. ์˜ˆ๋ฅผ ๋“ค์–ด ์—ฌ๋Ÿฌ ์†Œ์Šค์— ์˜ํ•ด ์—…๋ฐ์ดํŠธ๋˜๋Š” ์นด์šดํ„ฐ๊ฐ€ ์žˆ๋Š” ConfigMap์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋‘ ์†Œ์Šค๊ฐ€ ๋™์‹œ์— ์นด์šดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ์—…๋ฐ์ดํŠธ๊ฐ€ ์†์‹ค๋˜์ง€ ์•Š๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‹œ์—ฐํ•˜๋ ค๋ฉด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์ผ๋ จ์˜ ์ด๋ฒคํŠธ๋ฅผ ์ƒ์ƒํ•ด ๋ณด์„ธ์š”. patch:

  • A์™€ B๋Š” API์—์„œ ๋ฆฌ์†Œ์Šค์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  • ๊ฐ๊ฐ์€ ์นด์šดํ„ฐ๋ฅผ XNUMX์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  "์—…๋ฐ์ดํŠธ์ž" ๋ฉ”๋ชจ์— ๊ฐ๊ฐ "A" ๋˜๋Š” "B"๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์‚ฌ์–‘์„ ๋กœ์ปฌ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ๋ฆฌ์†Œ์Šค๋ฅผ ์กฐ๊ธˆ ๋” ๋น ๋ฅด๊ฒŒ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
  • B๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ A๊ฐ€ ์†์‹ค๋ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ์ž‘์—… patch ์ด๊ธฐ๋ฉด ์นด์šดํ„ฐ๋Š” XNUMX๊ฐ€ ์•„๋‹Œ XNUMX์”ฉ ์ฆ๊ฐ€ํ•˜๊ณ  "updated-by" ๋ฉ”๋ชจ์˜ ๊ฐ’์€ "B"๋กœ ๋๋‚˜๋ฉฐ "A"๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์œ„์˜ ๋‚ด์šฉ์„ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์—…๋ฐ์ดํŠธ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ƒํ™ฉ๊ณผ ๋น„๊ตํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. replace:

  • A์™€ B๋Š” API์—์„œ ๋ฆฌ์†Œ์Šค์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  • ๊ฐ๊ฐ์€ ์นด์šดํ„ฐ๋ฅผ XNUMX์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  "์—…๋ฐ์ดํŠธ์ž" ๋ฉ”๋ชจ์— ๊ฐ๊ฐ "A" ๋˜๋Š” "B"๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์‚ฌ์–‘์„ ๋กœ์ปฌ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ๋ฆฌ์†Œ์Šค๋ฅผ ์กฐ๊ธˆ ๋” ๋น ๋ฅด๊ฒŒ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
  • B๋Š” ๋ฆฌ์†Œ์Šค ์—…๋ฐ์ดํŠธ๋ฅผ ์‹œ๋„ํ•˜์ง€๋งŒ ๋ฆฌ์†Œ์Šค ๋ฒ„์ „์ด ์‚ฌ์–‘์— ํฌํ•จ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— API์—์„œ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค. replace ๋ฆฌ์†Œ์Šค ๋ฒ„์ „์ด A์˜ ๊ต์ฒด ์ž‘์—…์— ์˜ํ•ด ์ฆ๊ฐ€๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— Kubernetes์— ์žˆ๋Š” ๋ฆฌ์†Œ์Šค์˜ ํ˜„์žฌ ๋ฒ„์ „๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์œ„์˜ ๊ฒฝ์šฐ B๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๋‹ค์‹œ ๊ฐ€์ ธ์™€์„œ ์ƒˆ ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ๋‹ค์‹œ ์‹œ๋„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. replace. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์นด์šดํ„ฐ๊ฐ€ XNUMX๋งŒํผ ์ฆ๊ฐ€ํ•˜๊ณ  "์—…๋ฐ์ดํŠธ ๊ธฐ์ค€" ๋ฉ”๋ชจ ๋์— "AB"๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์œ„์˜ ์˜ˆ๋Š” ์‹คํ–‰ํ•  ๋•Œ replace ์ „์ฒด ๋ฆฌ์†Œ์Šค๊ฐ€ ์™„์ „ํžˆ ๋Œ€์ฒด๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋˜๋Š” ์‚ฌ์–‘ replace, ๋ถ€๋ถ„์ ์ด๊ฑฐ๋‚˜ ๋ถ€๋ถ„์ ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. apply, ๊ทธ๋Ÿฌ๋‚˜ ์ถ”๊ฐ€๋ฅผ ํฌํ•จํ•˜์—ฌ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. resourceVersion ์‚ฌ์–‘ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ํ™œ์„ฑํ™”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ resourceVersion ์ œ๊ณตํ•œ ๋ฒ„์ „์ด ์ตœ์‹  ๋ฒ„์ „์ด ์•„๋‹ˆ๋ฉด ๊ต์ฒด๊ฐ€ ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ€์žฅ ์ข‹์€ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ replace โ€“ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฝ๊ณ  ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์ฆ‰์‹œ ๊ต์ฒดํ•˜์‹ญ์‹œ์˜ค. ์‚ฌ์šฉ kubectl, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ kubectl get deployment my-deployment -o json 
    | jq '.spec.template.spec.containers[0].env[1].value = "new value"' 
    | kubectl replace -f -

์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๋‹ค์Œ ๋‘ ๋ช…๋ น์ด ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค๋Š” ์ ์€ ์ฃผ๋ชฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. deployment.yaml ์†์„ฑ์„ ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค .metadata.resourceVersion

$ kubectl create -f deployment.yaml
$ kubectl replace -f deployment.yaml

์ด๋Š” ์œ„์—์„œ ๋งํ•œ ๋‚ด์šฉ๊ณผ ๋ชจ์ˆœ๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. "์ฒจ๊ฐ€ resourceVersion ์‚ฌ์–‘ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค."๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด ์ž˜๋ชป๋œ ๊ฒƒ์ธ๊ฐ€์š”? ์•„๋‹ˆ์š”, ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. kubectl ๊ท€ํ•˜๊ฐ€ ์ง€์ •ํ•˜์ง€ ์•Š์€ ์•Œ๋ฆผ resourceVersion, ๋ฆฌ์†Œ์Šค์—์„œ ์ฝ์–ด์„œ ์ง€์ •ํ•œ ์‚ฌ์–‘์— ์ถ”๊ฐ€ํ•œ ๋‹ค์Œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. replace. ์›์ž์„ฑ์— ์˜์กดํ•˜๋ฉด ์ž ์žฌ์ ์œผ๋กœ ์œ„ํ—˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋งˆ๋ฒ•์€ ์ „์ ์œผ๋กœ ์ธก๋ฉด์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. kubectl, API์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ด์— ์˜์กดํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ํ˜„์žฌ ๋ฆฌ์†Œ์Šค ์‚ฌ์–‘์„ ์ฝ๊ณ  ์—…๋ฐ์ดํŠธํ•œ ๋‹ค์Œ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. PUT ์š”๊ตฌ.

ํŒจ์น˜๋ฅผ ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๊ต์ฒด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋•Œ๋กœ๋Š” API์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ์ผ๋ถ€ ๋ณ€๊ฒฝ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋‹ค์‹œ ์ƒ์„ฑํ•˜์—ฌ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ•์ œ๋กœ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. kubectl replace --force. ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด ๋ฆฌ์†Œ์Šค๊ฐ€ ์ฆ‰์‹œ ์ œ๊ฑฐ๋œ ๋‹ค์Œ ์ œ๊ณต๋œ ์‚ฌ์–‘์—์„œ ๋‹ค์‹œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. API์—๋Š” "๊ฐ•์ œ ๊ต์ฒด" ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์—†์œผ๋ฉฐ API๋ฅผ ํ†ตํ•ด ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ๋‘ ๊ฐ€์ง€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € ๋ฆฌ์†Œ์Šค๋ฅผ ์„ค์ •ํ•˜์—ฌ ์‚ญ์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. gracePeriodSeconds ์˜(0)์œผ๋กœ propagationPolicy "๋ฐฑ๊ทธ๋ผ์šด๋“œ"์—์„œ ์›ํ•˜๋Š” ์‚ฌ์–‘์œผ๋กœ ์ด ๋ฆฌ์†Œ์Šค๋ฅผ ๋‹ค์‹œ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ๊ณ : ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ์ž ์žฌ์ ์œผ๋กœ ์œ„ํ—˜ํ•˜๋ฉฐ ์ •์˜๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„œ๋ฒ„ ์ธก์—์„œ ์ ์šฉ

์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด Kubernetes ๊ฐœ๋ฐœ์ž๋Š” ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. apply ์œผ๋กœ kubectl Kubernetes API์—์„œ. ๋…ผ๋ฆฌ apply Kubernetes 1.18์—์„œ ๋‹ค์Œ์„ ํ†ตํ•ด ์‚ฌ์šฉ ๊ฐ€๋Šฅ kubectl apply --server-side ๋˜๋Š” API๋ฅผ ํ†ตํ•ด ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ PATCH ั content-type application/apply-patch+YAML.

์ฐธ๊ณ : JSON๋„ ์œ ํšจํ•œ YAML์ด๋ฏ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋„ ์‚ฌ์–‘์„ JSON์œผ๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. content-type ์˜์ง€ application/apply-patch+yaml.

๊ทธ ๋…ผ๋ฆฌ ์™ธ์— kubectl API๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์œผ๋ฉฐ, apply ์„œ๋ฒ„ ์ธก์—์„œ๋Š” ์‚ฌ์–‘์˜ ํ•„๋“œ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์‚ฌ๋žŒ์„ ์ถ”์ ํ•˜์—ฌ ์ถฉ๋Œ ์—†๋Š” ํŽธ์ง‘์„ ์œ„ํ•œ ์•ˆ์ „ํ•œ ๋‹ค์ค‘ ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋งŒ์•ฝ apply ์„œ๋ฒ„ ์ธก์—์„œ๋Š” ๋” ๋„๋ฆฌ ๋ณด๊ธ‰๋  ๊ฒƒ์ด๋ฉฐ kubectl, Pulumi ๋˜๋Š” Terraform, GitOps์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•œ ๋ฒ”์šฉ ๋ณด์•ˆ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋ฌผ๋ก  ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ž์ฒด ์ž‘์„ฑ ์Šคํฌ๋ฆฝํŠธ๋„ ๋‚˜ํƒ€๋‚  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ

ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ๊ฐœ์š”๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ์ ์šฉ๊ณผ ๊ต์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ์ ์šฉ, ํŽธ์ง‘, ํŒจ์น˜ ๋˜๋Š” ๊ต์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์•Œ์•„๋‘๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ์›์น™์ ์œผ๋กœ ๊ฐ ์ ‘๊ทผ ๋ฐฉ์‹์—๋Š” ๊ณ ์œ ํ•œ ์ ์šฉ ์˜์—ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Atomic ๋ณ€๊ฒฝ์˜ ๊ฒฝ์šฐ ๊ต์ฒด๊ฐ€ ๋ฐ”๋žŒ์งํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ ์šฉ์„ ํ†ตํ•ด ์ „๋žต์  ๋ณ‘ํ•ฉ ํŒจ์น˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ "kubernetes ์ ์šฉ ๋Œ€ ๊ต์ฒด"๋ฅผ ๊ฒ€์ƒ‰ํ•  ๋•Œ Google์ด๋‚˜ StackOerflow๋ฅผ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ ์„ ์ดํ•ดํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์ ์–ด๋„ ์ด ๊ธฐ์‚ฌ๊ฐ€ ํ˜„์žฌ ๋‹ต๋ณ€์„ ๋Œ€์ฒดํ•  ๋•Œ๊นŒ์ง€๋Š” ๋ง์ด์ฃ .

Kubernetes ์ ์šฉ, ๊ต์ฒด ๋ฐ ํŒจ์น˜์˜ ์ ์ ˆํ•œ ๋น„๊ต

์ถœ์ฒ˜ : habr.com

DDoS ๋ณดํ˜ธ, VPS VDS ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•œ ์•ˆ์ •์ ์ธ ํ˜ธ์ŠคํŒ… ๊ตฌ์ž… ๐Ÿ”ฅ DDoS ๊ณต๊ฒฉ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์ด ํƒ‘์žฌ๋œ ์•ˆ์ •์ ์ธ ์›น์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…, VPS ๋ฐ VDS ์„œ๋ฒ„๋ฅผ ๊ตฌ๋งคํ•˜์„ธ์š” | ProHoster