Information in this document may be out of date

This document has an older update date than the original, so the information it contains may be out of date. If you're able to read English, see the English version for the most up-to-date information: Custom Resources

์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค

์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค ๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API์˜ ์ต์Šคํ…์…˜์ด๋‹ค. ์ด ํŽ˜์ด์ง€์—์„œ๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์— ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ถ”๊ฐ€ํ•  ์‹œ๊ธฐ์™€ ๋…๋ฆฝํ˜• ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‹œ๊ธฐ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•œ๋‹ค. ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•๊ณผ ์ด๋“ค ์ค‘์—์„œ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•œ๋‹ค.

์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค

๋ฆฌ์†Œ์Šค ๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API์—์„œ ํŠน์ • ์ข…๋ฅ˜์˜ API ์˜ค๋ธŒ์ ํŠธ ๋ชจ์Œ์„ ์ €์žฅํ•˜๋Š” ์—”๋“œํฌ์ธํŠธ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋นŒํŠธ์ธ ํŒŒ๋“œ ๋ฆฌ์†Œ์Šค์—๋Š” ํŒŒ๋“œ ์˜ค๋ธŒ์ ํŠธ ๋ชจ์Œ์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.

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

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

์ปค์Šคํ…€ ์ปจํŠธ๋กค๋Ÿฌ

์ž์ฒด์ ์œผ๋กœ ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ปค์Šคํ…€ ์ปจํŠธ๋กค๋Ÿฌ ์™€ ๊ฒฐํ•ฉํ•˜๋ฉด, ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ง„์ •ํ•œ ์„ ์–ธ์ (declarative) API ๋ฅผ ์ œ๊ณตํ•˜๊ฒŒ ๋œ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์„ ์–ธ์  API๋Š” ์ฑ…์ž„์˜ ๋ถ„๋ฆฌ๋ฅผ ๊ฐ•์ œํ•œ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ๋ฆฌ์†Œ์Šค์˜ ์˜๋„ํ•œ ์ƒํƒœ๋ฅผ ์„ ์–ธํ•œ๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์˜ค๋ธŒ์ ํŠธ์˜ ํ˜„์žฌ ์ƒํƒœ๊ฐ€ ์„ ์–ธํ•œ ์˜๋„ํ•œ ์ƒํƒœ์— ๋™๊ธฐํ™” ๋˜๋„๋ก ํ•œ๋‹ค. ์ด๋Š” ์„œ๋ฒ„์— ๋ฌด์—‡์„ ํ•ด์•ผํ• ์ง€ ์ง€์‹œํ•˜๋Š” ๋ช…๋ น์ ์ธ API์™€๋Š” ๋Œ€์กฐ๋œ๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ ๋ผ์ดํ”„์‚ฌ์ดํด๊ณผ ๊ด€๊ณ„์—†์ด ์‹คํ–‰ ์ค‘์ธ ํด๋Ÿฌ์Šคํ„ฐ์— ์ปค์Šคํ…€ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ปค์Šคํ…€ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ฆฌ์†Œ์Šค์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค์™€ ๊ฒฐํ•ฉํ•  ๋•Œ ํŠนํžˆ ํšจ๊ณผ์ ์ด๋‹ค. ์˜คํผ๋ ˆ์ดํ„ฐ ํŒจํ„ด์€ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌ์†Œ์Šค์™€ ์ปค์Šคํ…€ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๊ฒฐํ•ฉํ•œ๋‹ค. ์ปค์Šคํ…€ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ๋„๋ฉ”์ธ ์ง€์‹์„ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API์˜ ์ต์Šคํ…์…˜์œผ๋กœ ์ธ์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์— ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋‚˜?

์ƒˆ๋กœ์šด API๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ API์™€ ์ƒ์„ฑํ•œ API๋ฅผ ์• ๊ทธ๋ฆฌ๊ฒŒ์ดํŠธํ•  ๊ฒƒ์ธ์ง€ ์•„๋‹ˆ๋ฉด ์ƒ์„ฑํ•œ API๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ์œ ์ง€ํ•  ๊ฒƒ์ธ์ง€ ๊ณ ๋ คํ•˜์ž.

API ์• ๊ทธ๋ฆฌ๊ฒŒ์ดํŠธ๋ฅผ ๊ณ ๋ คํ•  ๊ฒฝ์šฐ๋…๋ฆฝ API๋ฅผ ๊ณ ๋ คํ•  ๊ฒฝ์šฐ
API๊ฐ€ ์„ ์–ธ์ ์ด๋‹ค.API๊ฐ€ ์„ ์–ธ์  ๋ชจ๋ธ์— ๋งž์ง€ ์•Š๋‹ค.
kubectl์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ํƒ€์ž…์„ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•œ๋‹ค.kubectl ์ง€์›์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค.
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค UI(์˜ˆ: ๋Œ€์‹œ๋ณด๋“œ)์—์„œ ๋นŒํŠธ์ธ ํƒ€์ž…๊ณผ ํ•จ๊ป˜ ์ƒˆ๋กœ์šด ํƒ€์ž…์„ ๋ณด๊ธธ ์›ํ•œ๋‹ค.์ฟ ๋ฒ„๋„คํ‹ฐ์Šค UI ์ง€์›์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค.
์ƒˆ๋กœ์šด API๋ฅผ ๊ฐœ๋ฐœ ์ค‘์ด๋‹ค.์ƒ์„ฑํ•œ API๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์ด๋ฏธ ์žˆ๊ณ  ์ž˜ ์ž‘๋™ํ•˜๊ณ  ์žˆ๋‹ค.
API ๊ทธ๋ฃน ๋ฐ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์™€ ๊ฐ™์€ REST ๋ฆฌ์†Œ์Šค ๊ฒฝ๋กœ์— ์ ์šฉํ•˜๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ํ˜•์‹ ์ œํ•œ์„ ๊ธฐ๊บผ์ด ์ˆ˜์šฉํ•œ๋‹ค. (API ๊ฐœ์š”๋ฅผ ์ฐธ๊ณ ํ•œ๋‹ค.)์ด๋ฏธ ์ •์˜๋œ REST API์™€ ํ˜ธํ™˜๋˜๋„๋ก ํŠน์ • REST ๊ฒฝ๋กœ๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
์ž์ฒด ๋ฆฌ์†Œ์Šค๋Š” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํด๋Ÿฌ์Šคํ„ฐ ๋˜๋Š” ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋กœ ๋ฒ”์œ„๊ฐ€ ์ง€์ •๋œ๋‹ค.ํด๋Ÿฌ์Šคํ„ฐ ๋˜๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ฒ”์œ„์˜ ๋ฆฌ์†Œ์Šค๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค. ํŠน์ • ๋ฆฌ์†Œ์Šค ๊ฒฝ๋กœ๋ฅผ ์ œ์–ดํ•ด์•ผ ํ•œ๋‹ค.
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API ์ง€์› ๊ธฐ๋Šฅ์„ ์žฌ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•œ๋‹ค.์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค.

์„ ์–ธ์  API

์„ ์–ธ์  API์—์„œ๋Š” ๋‹ค์Œ์˜ ํŠน์„ฑ์ด ์žˆ๋‹ค.

  • API๋Š” ์ƒ๋Œ€์ ์œผ๋กœ ์ ์€ ์ˆ˜์˜ ์ƒ๋Œ€์ ์œผ๋กœ ์ž‘์€ ์˜ค๋ธŒ์ ํŠธ(๋ฆฌ์†Œ์Šค)๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.
  • ์˜ค๋ธŒ์ ํŠธ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋˜๋Š” ์ธํ”„๋ผ์˜ ๊ตฌ์„ฑ์„ ์ •์˜ํ•œ๋‹ค.
  • ์˜ค๋ธŒ์ ํŠธ๋Š” ๋น„๊ต์  ๋“œ๋ฌผ๊ฒŒ ์—…๋ฐ์ดํŠธ ๋œ๋‹ค.
  • ์‚ฌ๋žŒ์ด ์ข…์ข… ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ฝ๊ณ  ์“ธ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.
  • ์˜ค๋ธŒ์ ํŠธ์˜ ์ฃผ์š” ์ž‘์—…์€ CRUD-y(์ƒ์„ฑ, ์ฝ๊ธฐ, ์—…๋ฐ์ดํŠธ ๋ฐ ์‚ญ์ œ)์ด๋‹ค.
  • ์˜ค๋ธŒ์ ํŠธ ๊ฐ„ ํŠธ๋žœ์žญ์…˜์€ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค. API๋Š” ์ •ํ™•ํ•œ(exact) ์ƒํƒœ๊ฐ€ ์•„๋‹ˆ๋ผ ์˜๋„ํ•œ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

๋ช…๋ นํ˜• API๋Š” ์„ ์–ธ์ ์ด์ง€ ์•Š๋‹ค. ์ž์‹ ์˜ API๊ฐ€ ์„ ์–ธ์ ์ด์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ง•ํ›„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ํด๋ผ์ด์–ธํŠธ๋Š” "์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค"๋ผ๊ณ  ๋งํ•˜๊ณ  ์™„๋ฃŒ๋˜๋ฉด ๋™๊ธฐ(synchronous) ์‘๋‹ต์„ ๋ฐ›๋Š”๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ๋Š” "์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค"๋ผ๊ณ  ๋งํ•œ ๋‹ค์Œ ์ž‘์—… ID๋ฅผ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ค๊ณ  ๋ณ„๋„์˜ ์˜คํผ๋ ˆ์ด์…˜(operation) ์˜ค๋ธŒ์ ํŠธ๋ฅผ ํ™•์ธํ•˜์—ฌ ์š”์ฒญ์˜ ์™„๋ฃŒ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค.
  • RPC(์›๊ฒฉ ํ”„๋กœ์‹œ์ € ํ˜ธ์ถœ)์— ๋Œ€ํ•ด ์–˜๊ธฐํ•œ๋‹ค.
  • ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์ €์žฅํ•œ๋‹ค. ์˜ˆ: > ์˜ค๋ธŒ์ ํŠธ๋ณ„ ๋ช‡ kB ๋˜๋Š” > 1000๊ฐœ์˜ ์˜ค๋ธŒ์ ํŠธ.
  • ๋†’์€ ๋Œ€์—ญํญ ์ ‘๊ทผ(์ดˆ๋‹น 10๊ฐœ์˜ ์ง€์†์ ์ธ ์š”์ฒญ)์ด ํ•„์š”ํ•˜๋‹ค.
  • ์ตœ์ข… ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ(์˜ˆ: ์ด๋ฏธ์ง€, PII ๋“ฑ) ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ฒ˜๋ฆฌํ•œ ๊ธฐํƒ€ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.
  • ์˜ค๋ธŒ์ ํŠธ์— ๋Œ€ํ•œ ์ž์—ฐ์Šค๋Ÿฌ์šด ์กฐ์ž‘์€ CRUD-y๊ฐ€ ์•„๋‹ˆ๋‹ค.
  • API๋Š” ์˜ค๋ธŒ์ ํŠธ๋กœ ์‰ฝ๊ฒŒ ๋ชจ๋ธ๋ง๋˜์ง€ ์•Š๋Š”๋‹ค.
  • ์ž‘์—… ID ๋˜๋Š” ์ž‘์—… ์˜ค๋ธŒ์ ํŠธ๋กœ ๋ณด๋ฅ˜ ์ค‘์ธ ์ž‘์—…์„ ๋‚˜ํƒ€๋‚ด๋„๋ก ์„ ํƒํ–ˆ๋‹ค.

์ปจํ”ผ๊ทธ๋งต์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋‚˜, ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋‚˜?

๋‹ค์Œ ์ค‘ ํ•˜๋‚˜์— ํ•ด๋‹นํ•˜๋ฉด ์ปจํ”ผ๊ทธ๋งต์„ ์‚ฌ์šฉํ•˜์ž.

  • mysql.cnf ๋˜๋Š” pom.xml๊ณผ ๊ฐ™์ด ์ž˜ ๋ฌธ์„œํ™”๋œ ๊ธฐ์กด ๊ตฌ์„ฑ ํŒŒ์ผ ํ˜•์‹์ด ์žˆ๋‹ค.
  • ์ „์ฒด ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ปจํ”ผ๊ทธ๋งต์˜ ํ•˜๋‚˜์˜ ํ‚ค์— ๋„ฃ๊ณ  ์‹ถ๋‹ค.
  • ๊ตฌ์„ฑ ํŒŒ์ผ์˜ ์ฃผ์š” ์šฉ๋„๋Š” ํด๋Ÿฌ์Šคํ„ฐ์˜ ํŒŒ๋“œ์—์„œ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์ด ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž์ฒด ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • ํŒŒ์ผ ์‚ฌ์šฉ์ž๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API๊ฐ€ ์•„๋‹Œ ํŒŒ๋“œ์˜ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋˜๋Š” ํŒŒ๋“œ์˜ ํŒŒ์ผ์„ ํ†ตํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•œ๋‹ค.
  • ํŒŒ์ผ์ด ์—…๋ฐ์ดํŠธ๋  ๋•Œ ๋””ํ”Œ๋กœ์ด๋จผํŠธ ๋“ฑ์„ ํ†ตํ•ด ๋กค๋ง ์—…๋ฐ์ดํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

๋‹ค์Œ ์ค‘ ๋Œ€๋ถ€๋ถ„์ด ์ ์šฉ๋˜๋Š” ๊ฒฝ์šฐ ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค(CRD ๋˜๋Š” ์• ๊ทธ๋ฆฌ๊ฒŒ์ดํŠธ API(aggregated API))๋ฅผ ์‚ฌ์šฉํ•˜์ž.

  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ CLI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ์—…๋ฐ์ดํŠธํ•˜๋ ค๊ณ  ํ•œ๋‹ค.
  • kubectl ์˜ ์ตœ์ƒ์œ„ ์ง€์›์„ ์›ํ•œ๋‹ค. ์˜ˆ: kubectl get my-object object-name.
  • ์ƒˆ ์˜ค๋ธŒ์ ํŠธ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ฐ์‹œํ•œ ๋‹ค์Œ ๋‹ค๋ฅธ ์˜ค๋ธŒ์ ํŠธ๋ฅผ CRUDํ•˜๊ฑฐ๋‚˜ ๊ทธ ๋ฐ˜๋Œ€๋กœ ํ•˜๋Š” ์ƒˆ๋กœ์šด ์ž๋™ํ™”๋ฅผ ๊ตฌ์ถ•ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.
  • ์˜ค๋ธŒ์ ํŠธ์˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ž๋™ํ™”๋ฅผ ์ž‘์„ฑํ•˜๋ ค๊ณ  ํ•œ๋‹ค.
  • .spec, .status ๋ฐ .metadata์™€ ๊ฐ™์€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•œ๋‹ค.
  • ์ œ์–ด๋œ ๋ฆฌ์†Œ์Šค์˜ ์ฝœ๋ ‰์…˜ ๋˜๋Š” ๋‹ค๋ฅธ ๋ฆฌ์†Œ์Šค์˜ ์š”์•ฝ์— ๋Œ€ํ•œ ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ๋˜๊ธฐ๋ฅผ ์›ํ•œ๋‹ค.

์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค ์ถ”๊ฐ€

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ํด๋Ÿฌ์Šคํ„ฐ์— ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค.

  • CRD๋Š” ๊ฐ„๋‹จํ•˜๋ฉฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—†์ด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  • API ์• ๊ทธ๋ฆฌ๊ฒŒ์ด์…˜์—๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ํ•„์š”ํ•˜์ง€๋งŒ, ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐฉ๋ฒ• ๋ฐ API ๋ฒ„์ „ ๊ฐ„ ๋ณ€ํ™˜๊ณผ ๊ฐ™์€ API ๋™์ž‘์„ ๋ณด๋‹ค ๊ฐ•๋ ฅํ•˜๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ๋ฅผ ์ถฉ์กฑ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ด ๋‘ ๊ฐ€์ง€ ์˜ต์…˜์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ ์‚ฌ์šฉ์˜ ์šฉ์ด์„ฑ์ด๋‚˜ ์œ ์—ฐ์„ฑ์ด ์ €ํ•˜๋˜์ง€ ์•Š๋Š”๋‹ค.

์• ๊ทธ๋ฆฌ๊ฒŒ์ดํŠธ API๋Š” ๊ธฐ๋ณธ API ์„œ๋ฒ„ ๋’ค์— ์žˆ๋Š” ํ•˜์œ„ API ์„œ๋ฒ„์ด๋ฉฐ ํ”„๋ก์‹œ ์—ญํ• ์„ ํ•œ๋‹ค. ์ด ๋ฐฐ์น˜๋ฅผ API ์• ๊ทธ๋ฆฌ๊ฒŒ์ด์…˜(AA)์ด๋ผ๊ณ  ํ•œ๋‹ค. ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API๊ฐ€ ํ™•์žฅ๋œ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚œ๋‹ค.

CRD๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค๋ฅธ API ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ณ ๋„ ์ƒˆ๋กœ์šด ํƒ€์ž…์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. CRD๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด API ์• ๊ทธ๋ฆฌ๊ฒŒ์ด์…˜์„ ์ดํ•ดํ•  ํ•„์š”๋Š” ์—†๋‹ค.

์„ค์น˜ ๋ฐฉ๋ฒ•์— ๊ด€๊ณ„์—†์ด ์ƒˆ ๋ฆฌ์†Œ์Šค๋Š” ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค๋ผ๊ณ  ํ•˜๋ฉฐ ๋นŒํŠธ์ธ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฆฌ์†Œ์Šค(ํŒŒ๋“œ ๋“ฑ)์™€ ๊ตฌ๋ณ„๋œ๋‹ค.

์ปค์Šคํ…€๋ฆฌ์†Œ์Šค๋ฐํ”ผ๋‹ˆ์…˜

์ปค์Šคํ…€๋ฆฌ์†Œ์Šค๋ฐํ”ผ๋‹ˆ์…˜ API ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. CRD ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ •์˜ํ•˜๋ฉด ์ง€์ •ํ•œ ์ด๋ฆ„๊ณผ ์Šคํ‚ค๋งˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API๋Š” ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค์˜ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์ฒ˜๋ฆฌํ•œ๋‹ค. CRD ์˜ค๋ธŒ์ ํŠธ์˜ ์ด๋ฆ„์€ ์œ ํšจํ•œ DNS ์„œ๋ธŒ๋„๋ฉ”์ธ ์ด๋ฆ„์ด์–ด์•ผ ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ž์‹ ์˜ API ์„œ๋ฒ„๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์—†์ง€๋งŒ ๊ตฌํ˜„์˜ ์ผ๋ฐ˜์ ์ธ ํŠน์„ฑ์œผ๋กœ ์ธํ•ด API ์„œ๋ฒ„ ์• ๊ทธ๋ฆฌ๊ฒŒ์ด์…˜๋ณด๋‹ค ์œ ์—ฐ์„ฑ์ด ๋–จ์–ด์ง„๋‹ค.

์ƒˆ ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค๋ฅผ ๋“ฑ๋กํ•˜๊ณ  ์ƒˆ ๋ฆฌ์†Œ์Šค ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•ด ์ž‘์—…ํ•˜๊ณ  ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์˜ˆ์ œ๋Š” ์ปค์Šคํ…€ ์ปจํŠธ๋กค๋Ÿฌ ์˜ˆ์ œ๋ฅผ ์ฐธ๊ณ ํ•œ๋‹ค.

API ์„œ๋ฒ„ ์• ๊ทธ๋ฆฌ๊ฒŒ์ด์…˜

์ผ๋ฐ˜์ ์œผ๋กœ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API์˜ ๊ฐ ๋ฆฌ์†Œ์Šค์—๋Š” REST ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์˜ค๋ธŒ์ ํŠธ์˜ ํผ์‹œ์Šคํ„ดํŠธ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์ฃผ์š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API ์„œ๋ฒ„๋Š” ํŒŒ๋“œ ๋ฐ ์„œ๋น„์Šค ์™€ ๊ฐ™์€ ๋นŒํŠธ์ธ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ , ์ผ๋ฐ˜์ ์œผ๋กœ CRD๋ฅผ ํ†ตํ•ด ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์• ๊ทธ๋ฆฌ๊ฒŒ์ด์…˜ ๋ ˆ์ด์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž์ฒด API ์„œ๋ฒ„๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๋ฐฐํฌํ•˜์—ฌ ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ํŠน์ˆ˜ํ•œ ๊ตฌํ˜„์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฃผ(main) API ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž์˜ ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์š”์ฒญ์„ ์‚ฌ์šฉ์ž์˜ ์ž์ฒด API ์„œ๋ฒ„์— ์œ„์ž„ํ•˜์—ฌ ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ถ”๊ฐ€ํ•  ๋ฐฉ๋ฒ• ์„ ํƒ

CRD๋Š” ์‚ฌ์šฉํ•˜๊ธฐ๊ฐ€ ๋” ์‰ฝ๋‹ค. ์• ๊ทธ๋ฆฌ๊ฒŒ์ดํŠธ API๊ฐ€ ๋” ์œ ์—ฐํ•˜๋‹ค. ์ž์‹ ์˜ ์š”๊ตฌ์— ๊ฐ€์žฅ ์ž˜ ๋งž๋Š” ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•˜์ž.

์ผ๋ฐ˜์ ์œผ๋กœ CRD๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์— ์ ํ•ฉํ•˜๋‹ค.

  • ํ•„๋“œ๊ฐ€ ๋ช‡ ๊ฐœ ๋˜์ง€ ์•Š๋Š”๋‹ค
  • ํšŒ์‚ฌ ๋‚ด์—์„œ ๋˜๋Š” ์†Œ๊ทœ๋ชจ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ์˜ ์ผ๋ถ€์ธ(์ƒ์šฉ ์ œํ’ˆ์ด ์•„๋‹Œ) ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.

์‚ฌ์šฉ ํŽธ์˜์„ฑ ๋น„๊ต

CRD๋Š” ์• ๊ทธ๋ฆฌ๊ฒŒ์ดํŠธ API๋ณด๋‹ค ์ƒ์„ฑํ•˜๊ธฐ๊ฐ€ ์‰ฝ๋‹ค.

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

๊ณ ๊ธ‰ ๊ธฐ๋Šฅ ๋ฐ ์œ ์—ฐ์„ฑ

์• ๊ทธ๋ฆฌ๊ฒŒ์ดํŠธ API๋Š” ๋ณด๋‹ค ๊ณ ๊ธ‰ API ๊ธฐ๋Šฅ๊ณผ ์Šคํ† ๋ฆฌ์ง€ ๋ ˆ์ด์–ด์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์˜ ์‚ฌ์šฉ์ž ์ •์˜๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

๊ธฐ๋Šฅ์„ค๋ช…CRD์• ๊ทธ๋ฆฌ๊ฒŒ์ดํŠธ API
์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์‚ฌ์šฉ์ž๊ฐ€ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ์™€ ๋…๋ฆฝ์ ์œผ๋กœ API๋ฅผ ๋ฐœ์ „์‹œํ‚ฌ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์€ ๋™์‹œ์— ๋งŽ์€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋ชจ๋‘ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์— ์•„์ฃผ ์œ ์šฉํ•˜๋‹ค.์˜ˆ. OpenAPI v3.0 ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ CRD์—์„œ ๋Œ€๋ถ€๋ถ„์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์›นํ›… ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ง€์›ํ•œ๋‹ค.์˜ˆ, ์ž„์˜์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ง€์›ํ•œ๋‹ค.
๊ธฐ๋ณธ ์„ค์ •์œ„๋ฅผ ์ฐธ๊ณ ํ•˜์ž.์˜ˆ, OpenAPI v3.0 ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์˜ default ํ‚ค์›Œ๋“œ(1.17์—์„œ GA) ๋˜๋Š” ์›นํ›… ๋ณ€ํ˜•(mutating)(์ด์ „ ์˜ค๋ธŒ์ ํŠธ์˜ etcd์—์„œ ์ฝ์„ ๋•Œ๋Š” ์‹คํ–‰๋˜์ง€ ์•Š์Œ)์„ ํ†ตํ•ด ์ง€์›ํ•œ๋‹ค.์˜ˆ
๋‹ค์ค‘ ๋ฒ„์ „ ๊ด€๋ฆฌ๋‘ ๊ฐ€์ง€ API ๋ฒ„์ „์„ ํ†ตํ•ด ๋™์ผํ•œ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•„๋“œ ์ด๋ฆ„ ๋ฐ”๊พธ๊ธฐ์™€ ๊ฐ™์€ API ๋ณ€๊ฒฝ์„ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ๋ฒ„์ „์„ ์ œ์–ดํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋œ ์ค‘์š”ํ•˜๋‹ค.์˜ˆ์˜ˆ
์‚ฌ์šฉ์ž ์ •์˜ ์Šคํ† ๋ฆฌ์ง€๋‹ค๋ฅธ ์„ฑ๋Šฅ ๋ชจ๋“œ(์˜ˆ๋ฅผ ๋“ค์–ด, ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ ๋Œ€์‹  ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)๋‚˜ ๋ณด์•ˆ์— ๋Œ€ํ•œ ๊ฒฉ๋ฆฌ(์˜ˆ๋ฅผ ๋“ค์–ด, ์•”ํ˜ธํ™”๋œ ์‹œํฌ๋ฆฟ์ด๋‚˜ ๋‹ค๋ฅธ ์•”ํ˜ธํ™”) ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์•„๋‹ˆ์˜ค์˜ˆ
์‚ฌ์šฉ์ž ์ •์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ƒ์„ฑ, ์ฝ๊ธฐ, ์—…๋ฐ์ดํŠธ ๋˜๋Š” ์‚ญ์ œ๋ฅผ ํ•  ๋•Œ ์ž„์˜์˜ ์ ๊ฒ€ ๋˜๋Š” ์กฐ์น˜๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.์˜ˆ, ์›นํ›…์„ ์‚ฌ์šฉํ•œ๋‹ค.์˜ˆ
์„œ๋ธŒ๋ฆฌ์†Œ์Šค ํฌ๊ธฐ ์กฐ์ •HorizontalPodAutoscaler ๋ฐ PodDisruptionBudget๊ณผ ๊ฐ™์€ ์‹œ์Šคํ…œ์ด ์ƒˆ๋กœ์šด ๋ฆฌ์†Œ์Šค์™€ ์ƒํ˜ธ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.์˜ˆ์˜ˆ
์„œ๋ธŒ๋ฆฌ์†Œ์Šค ์ƒํƒœ์‚ฌ์šฉ์ž๊ฐ€ ์ŠคํŽ™ ์„น์…˜์„ ์ž‘์„ฑํ•˜๊ณ  ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ƒํƒœ ์„น์…˜์„ ์ž‘์„ฑํ•˜๋Š” ์„ธ๋ถ„ํ™”๋œ ์ ‘๊ทผ ์ œ์–ด๋ฅผ ํ—ˆ์šฉํ•œ๋‹ค. ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค ๋ฐ์ดํ„ฐ ๋ณ€ํ˜• ์‹œ ์˜ค๋ธŒ์ ํŠธ ์ƒ์„ฑ์„ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค(๋ฆฌ์†Œ์Šค์—์„œ ๋ณ„๋„์˜ ์ŠคํŽ™๊ณผ ์ƒํƒœ ์„น์…˜ ํ•„์š”).์˜ˆ์˜ˆ
๊ธฐํƒ€ ์„œ๋ธŒ๋ฆฌ์†Œ์Šค"logs" ๋˜๋Š” "exec"๊ณผ ๊ฐ™์€ CRUD ์ด์™ธ์˜ ์ž‘์—…์„ ์ถ”๊ฐ€ํ•œ๋‹ค.์•„๋‹ˆ์˜ค์˜ˆ
strategic-merge-patch์ƒˆ๋กœ์šด ์—”๋“œํฌ์ธํŠธ๋Š” Content-Type: application/strategic-merge-patch+json ํ˜•์‹์˜ PATCH๋ฅผ ์ง€์›ํ•œ๋‹ค. ๋กœ์ปฌ ๋ฐ ์„œ๋ฒ„ ์–‘์ชฝ์—์„œ ์ˆ˜์ •ํ•  ์ˆ˜๋„ ์žˆ๋Š” ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐ ์œ ์šฉํ•˜๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ "kubectl ํŒจ์น˜๋ฅผ ์‚ฌ์šฉํ•œ API ์˜ค๋ธŒ์ ํŠธ ์—…๋ฐ์ดํŠธ"๋ฅผ ์ฐธ๊ณ ํ•œ๋‹ค.์•„๋‹ˆ์˜ค์˜ˆ
ํ”„๋กœํ† ์ฝœ ๋ฒ„ํผ์ƒˆ๋กœ์šด ๋ฆฌ์†Œ์Šค๋Š” ํ”„๋กœํ† ์ฝœ ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ง€์›ํ•œ๋‹ค.์•„๋‹ˆ์˜ค์˜ˆ
OpenAPI ์Šคํ‚ค๋งˆ์„œ๋ฒ„์—์„œ ๋™์ ์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…์— ๋Œ€ํ•œ OpenAPI(์Šค์›จ๊ฑฐ(swagger)) ์Šคํ‚ค๋งˆ๊ฐ€ ์žˆ๋Š”๊ฐ€? ํ—ˆ์šฉ๋œ ํ•„๋“œ๋งŒ ์„ค์ •ํ•˜์—ฌ ๋งž์ถค๋ฒ•์ด ํ‹€๋ฆฐ ํ•„๋“œ ์ด๋ฆ„์œผ๋กœ๋ถ€ํ„ฐ ์‚ฌ์šฉ์ž๋ฅผ ๋ณดํ˜ธํ•˜๋Š”๊ฐ€? ํƒ€์ž…์ด ์ ์šฉ๋˜๋Š”๊ฐ€(์ฆ‰, string ํ•„๋“œ์— int๋ฅผ ๋„ฃ์ง€ ์•Š๋Š”๊ฐ€?)์˜ˆ, OpenAPI v3.0 ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์Šคํ‚ค๋งˆ(1.16์—์„œ GA)์˜ˆ

์ผ๋ฐ˜์ ์ธ ๊ธฐ๋Šฅ

CRD ๋˜๋Š” AA๋ฅผ ํ†ตํ•ด ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ”Œ๋žซํผ ์™ธ๋ถ€์—์„œ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„๊ตํ•˜์—ฌ API์— ๋Œ€ํ•œ ๋งŽ์€ ๊ธฐ๋Šฅ์ด ์ œ๊ณต๋œ๋‹ค.

๊ธฐ๋Šฅ์„ค๋ช…
CRUD์ƒˆ๋กœ์šด ์—”๋“œํฌ์ธํŠธ๋Š” HTTP ๋ฐ kubectl์„ ํ†ตํ•ด CRUD ๊ธฐ๋ณธ ์ž‘์—…์„ ์ง€์›ํ•œ๋‹ค.
๊ฐ์‹œ์ƒˆ๋กœ์šด ์—”๋“œํฌ์ธํŠธ๋Š” HTTP๋ฅผ ํ†ตํ•ด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ฐ์‹œ ์ž‘์—…์„ ์ง€์›ํ•œ๋‹ค.
๋””์Šค์ปค๋ฒ„๋ฆฌkubectl ๋ฐ ๋Œ€์‹œ๋ณด๋“œ์™€ ๊ฐ™์€ ํด๋ผ์ด์–ธํŠธ๋Š” ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด ๋ชฉ๋ก, ํ‘œ์‹œ ๋ฐ ํ•„๋“œ ์ˆ˜์ • ์ž‘์—…์„ ์ž๋™์œผ๋กœ ์ œ๊ณตํ•œ๋‹ค.
json-patch์ƒˆ๋กœ์šด ์—”๋“œํฌ์ธํŠธ๋Š” Content-Type: application/json-patch+json ํ˜•์‹์˜ PATCH๋ฅผ ์ง€์›ํ•œ๋‹ค.
merge-patch์ƒˆ๋กœ์šด ์—”๋“œํฌ์ธํŠธ๋Š” Content-Type: application/merge-patch+json ํ˜•์‹์˜ PATCH๋ฅผ ์ง€์›ํ•œ๋‹ค.
HTTPS์ƒˆ๋กœ์šด ์—”๋“œํฌ์ธํŠธ๋Š” HTTPS๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
๋นŒํŠธ์ธ ์ธ์ฆ์ต์Šคํ…์…˜์— ๋Œ€ํ•œ ์ ‘๊ทผ์€ ์ธ์ฆ์„ ์œ„ํ•ด ๊ธฐ๋ณธ API ์„œ๋ฒ„(์• ๊ทธ๋ฆฌ๊ฒŒ์ด์…˜ ๋ ˆ์ด์–ด)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
๋นŒํŠธ์ธ ๊ถŒํ•œ ๋ถ€์—ฌ์ต์Šคํ…์…˜์— ์ ‘๊ทผํ•˜๋ฉด ๊ธฐ๋ณธ API ์„œ๋ฒ„(์˜ˆ: RBAC)์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ถŒํ•œ์„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
Finalizer์™ธ๋ถ€ ์ •๋ฆฌ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๊นŒ์ง€ ์ต์Šคํ…์…˜ ๋ฆฌ์†Œ์Šค์˜ ์‚ญ์ œ๋ฅผ ์ฐจ๋‹จํ•œ๋‹ค.
์–ด๋“œ๋ฏธ์…˜ ์›นํ›…์ƒ์„ฑ/์—…๋ฐ์ดํŠธ/์‚ญ์ œ ์ž‘์—… ์ค‘์— ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•˜๊ณ  ์ต์Šคํ…์…˜ ๋ฆฌ์†Œ์Šค์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ํ•œ๋‹ค.
UI/CLI ๋””์Šคํ”Œ๋ ˆ์ดKubectl, ๋Œ€์‹œ๋ณด๋“œ๋Š” ์ต์Šคํ…์…˜ ๋ฆฌ์†Œ์Šค๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค.
์„ค์ •ํ•˜์ง€ ์•Š์Œ(unset)๊ณผ ๋น„์–ด์žˆ์Œ(empty)ํด๋ผ์ด์–ธํŠธ๋Š” ๊ฐ’์ด ์—†๋Š” ํ•„๋“œ ์ค‘์—์„œ ์„ค์ •๋˜์ง€ ์•Š์€ ํ•„๋“œ๋ฅผ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค.
ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ƒ์„ฑ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์ผ๋ฐ˜ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํƒ€์ž…๋ณ„ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
๋ ˆ์ด๋ธ” ๋ฐ ์–ด๋…ธํ…Œ์ด์…˜๊ณตํ†ต ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ํ•ต์‹ฌ ๋ฐ ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ๋Š” ๋„๊ตฌ์ด๋‹ค.

์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค ์„ค์น˜ ์ค€๋น„

ํด๋Ÿฌ์Šคํ„ฐ์— ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์ „์— ์•Œ์•„์•ผ ํ•  ๋ช‡ ๊ฐ€์ง€ ์‚ฌํ•ญ์ด ์žˆ๋‹ค.

์จ๋“œํŒŒํ‹ฐ ์ฝ”๋“œ ๋ฐ ์ƒˆ๋กœ์šด ์žฅ์•  ํฌ์ธํŠธ

CRD๋ฅผ ์ƒ์„ฑํ•ด๋„ ์ƒˆ๋กœ์šด ์žฅ์•  ํฌ์ธํŠธ(์˜ˆ๋ฅผ ๋“ค์–ด, API ์„œ๋ฒ„์—์„œ ์žฅ์• ๋ฅผ ์œ ๋ฐœํ•˜๋Š” ์จ๋“œํŒŒํ‹ฐ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋จ)๊ฐ€ ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋˜์ง€๋Š” ์•Š์ง€๋งŒ, ํŒจํ‚ค์ง€(์˜ˆ: ์ฐจํŠธ(Charts)) ๋˜๋Š” ๊ธฐํƒ€ ์„ค์น˜ ๋ฒˆ๋“ค์—๋Š” CRD ๋ฐ ์ƒˆ๋กœ์šด ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๋Š” ์จ๋“œํŒŒํ‹ฐ ์ฝ”๋“œ์˜ ๋””ํ”Œ๋กœ์ด๋จผํŠธ๊ฐ€ ํฌํ•จ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์žˆ๋‹ค.

์• ๊ทธ๋ฆฌ๊ฒŒ์ดํŠธ API ์„œ๋ฒ„๋ฅผ ์„ค์น˜ํ•˜๋ ค๋ฉด ํ•ญ์ƒ ์ƒˆ ๋””ํ”Œ๋กœ์ด๋จผํŠธ๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

์Šคํ† ๋ฆฌ์ง€

์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค๋Š” ์ปจํ”ผ๊ทธ๋งต๊ณผ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์Šคํ† ๋ฆฌ์ง€ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋„ˆ๋ฌด ๋งŽ์€ ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด API ์„œ๋ฒ„์˜ ์Šคํ† ๋ฆฌ์ง€ ๊ณต๊ฐ„์ด ๊ณผ๋ถ€ํ•˜๋  ์ˆ˜ ์žˆ๋‹ค.

์• ๊ทธ๋ฆฌ๊ฒŒ์ดํŠธ API ์„œ๋ฒ„๋Š” ๊ธฐ๋ณธ API ์„œ๋ฒ„์™€ ๋™์ผํ•œ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด ๊ฒฝ์šฐ ๋™์ผํ•œ ๊ฒฝ๊ณ ๊ฐ€ ์ ์šฉ๋œ๋‹ค.

์ธ์ฆ, ๊ถŒํ•œ ๋ถ€์—ฌ ๋ฐ ๊ฐ์‚ฌ

CRD๋Š” ํ•ญ์ƒ API ์„œ๋ฒ„์˜ ๋นŒํŠธ์ธ ๋ฆฌ์†Œ์Šค์™€ ๋™์ผํ•œ ์ธ์ฆ, ๊ถŒํ•œ ๋ถ€์—ฌ ๋ฐ ๊ฐ์‚ฌ ๋กœ๊น…์„ ์‚ฌ์šฉํ•œ๋‹ค.

๊ถŒํ•œ ๋ถ€์—ฌ์— RBAC๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋Œ€๋ถ€๋ถ„์˜ RBAC ์—ญํ• ์€ ์ƒˆ๋กœ์šด ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜์ง€ ์•Š๋Š”๋‹ค(ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ์ž ์—ญํ•  ๋˜๋Š” ์™€์ผ๋“œ ์นด๋“œ ๊ทœ์น™์œผ๋กœ ์ƒ์„ฑ๋œ ์—ญํ•  ์ œ์™ธ). ์ƒˆ๋กœ์šด ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๋ช…์‹œ์ ์œผ๋กœ ๋ถ€์—ฌํ•ด์•ผ ํ•œ๋‹ค. CRD ๋ฐ ์• ๊ทธ๋ฆฌ๊ฒŒ์ดํŠธ API๋Š” ์ข…์ข… ์ถ”๊ฐ€ํ•˜๋Š” ํƒ€์ž…์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ์—ญํ•  ์ •์˜์™€ ํ•จ๊ป˜ ์ œ๊ณต๋œ๋‹ค.

์• ๊ทธ๋ฆฌ๊ฒŒ์ดํŠธ API ์„œ๋ฒ„๋Š” ๊ธฐ๋ณธ API ์„œ๋ฒ„์™€ ๋™์ผํ•œ ์ธ์ฆ, ๊ถŒํ•œ ๋ถ€์—ฌ ๋ฐ ๊ฐ์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.

์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผ

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. Go ์™€ python ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ง€์›ํ•œ๋‹ค.

์ปค์Šคํ…€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

  • kubectl
  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋™์  ํด๋ผ์ด์–ธํŠธ
  • ์ž‘์„ฑํ•œ REST ํด๋ผ์ด์–ธํŠธ
  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋ผ์ด์–ธํŠธ ์ƒ์„ฑ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋œ ํด๋ผ์ด์–ธํŠธ(ํ•˜๋‚˜๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ์ด์ง€๋งŒ, ์ผ๋ถ€ ํ”„๋กœ์ ํŠธ๋Š” CRD ๋˜๋Š” AA์™€ ํ•จ๊ป˜ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค).

๋‹ค์Œ ๋‚ด์šฉ

์ตœ์ข… ์ˆ˜์ • May 25, 2023 at 12:10 AM PST: [ko] Update outdated files in dev-1.26.-ko.1 [M24-26] (72549f240a)