ํ™•์žฅ API ์„œ๋ฒ„ ์„ค์ •

์• ๊ทธ๋ฆฌ๊ฒŒ์ด์…˜ ๋ ˆ์ด์–ด(aggregation layer)์™€ ์ž‘๋™ํ•˜๋„๋ก ํ™•์žฅ API ์„œ๋ฒ„๋ฅผ ์„ค์ •ํ•˜๋ฉด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API ์„œ๋ฒ„๋ฅผ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ํ•ต์‹ฌ API์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹Œ ์ถ”๊ฐ€ API๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ ์ „์—

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

๋ฒ„์ „ ํ™•์ธ์„ ์œ„ํ•ด์„œ, ๋‹ค์Œ ์ปค๋งจ๋“œ๋ฅผ ์‹คํ–‰ kubectl version.

์• ๊ทธ๋ฆฌ๊ฒŒ์ด์…˜ ๋ ˆ์ด์–ด์™€ ์ž‘๋™ํ•˜๋„๋ก ํ™•์žฅ API ์„œ๋ฒ„ ์„ค์ •ํ•˜๊ธฐ

๋‹ค์Œ ๋‹จ๊ณ„๋Š” ํ™•์žฅ API ์„œ๋ฒ„๋ฅผ ๋†’์€ ์ˆ˜์ค€ ์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•œ๋‹ค. ์ด ๋‹จ๊ณ„๋Š” YAML ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ์ƒ๊ด€์—†์ด ์ ์šฉ๋œ๋‹ค. ๋‘˜ ์‚ฌ์ด์˜ ์ฐจ์ด์ ์„ ๊ตฌ์ฒด์ ์œผ๋กœ ์‹๋ณ„ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•œ๋‹ค. YAML ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ธ ์˜ˆ๋ฅผ ๋ณด๋ ค๋ฉด, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฆฌํฌ์ง€ํ„ฐ๋ฆฌ์—์„œ sample-apiserver๋ฅผ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜๋Š”, apiserver-builder์™€ ๊ฐ™์€ ๊ธฐ์กด์˜ ํƒ€์‚ฌ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์Šค์ผˆ๋ ˆํ†ค(skeleton)์„ ์ƒ์„ฑํ•˜๊ณ  ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋ชจ๋‘ ์ž๋™ํ™”ํ•ด์•ผ ํ•œ๋‹ค.

  1. API์„œ๋น„์Šค(APIService) API๊ฐ€ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค(--runtime-config ํ™•์ธ). ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ผ๋ถ€๋Ÿฌ ํ•ด์ œํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด, ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  2. API์„œ๋น„์Šค ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ์ž๊ฐ€ ์ž‘์„ฑํ•˜๋„๋ก RBAC ๊ทœ์น™์„ ์ž‘์„ฑํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. (API ํ™•์žฅ์€ ์ „์ฒด ํด๋Ÿฌ์Šคํ„ฐ์— ์˜ํ–ฅ์„ ์ฃผ๊ธฐ ๋•Œ๋ฌธ์—, ์šด์˜ ์ค‘์ธ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ API ํ™•์žฅ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ/๊ฐœ๋ฐœ/๋””๋ฒ„๊น…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.)
  3. ํ™•์žฅ API ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  4. HTTPS๋ฅผ ์œ„ํ•ด ํ™•์žฅ API ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ฒ„ ์ธ์ฆ์„œ์— ์„œ๋ช…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  CA ์ธ์ฆ์„œ๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜จ๋‹ค.
  5. HTTPS๋ฅผ ์œ„ํ•ด API ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉํ•  ์„œ๋ฒ„ ์ธ์ฆ์„œ/ํ‚ค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ด ์ธ์ฆ์„œ๋Š” ์œ„์˜ CA ์ธ์ฆ์„œ์— ์˜ํ•ด ์„œ๋ช…ํ•ด์•ผ ํ•œ๋‹ค. ๋˜ํ•œ Kube DNS ์ด๋ฆ„์˜ CN์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ด๊ฒƒ์€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์„œ๋น„์Šค์—์„œ ํŒŒ์ƒ๋˜์—ˆ์œผ๋ฉฐ <service name>.<service name namespace>.svc ํ˜•์‹์ด๋‹ค.
  6. ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์„œ๋ฒ„ ์ธ์ฆ์„œ/ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์‹œํฌ๋ฆฟ์„ ์ƒ์„ฑํ•œ๋‹ค.
  7. ํ™•์žฅ API ์„œ๋ฒ„์— ๋Œ€ํ•œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋””ํ”Œ๋กœ์ด๋จผํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‹œํฌ๋ฆฟ์„ ๋ณผ๋ฅจ์œผ๋กœ ๋กœ๋“œํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ํ™•์žฅ API ์„œ๋ฒ„์˜ ์ž‘๋™ํ•˜๋Š”(working) ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ํฌํ•จํ•ด์•ผ ํ•œ๋‹ค. ๋””ํ”Œ๋กœ์ด๋จผํŠธ๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—๋„ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  8. ํ™•์žฅ API ์„œ๋ฒ„๊ฐ€ ํ•ด๋‹น ๋ณผ๋ฅจ์—์„œ ํ•ด๋‹น ์ธ์ฆ์„œ๋ฅผ ๋กœ๋“œํ•˜๊ณ  HTTPS ํ•ธ๋“œ์…ฐ์ดํฌ์— ์‚ฌ์šฉ๋˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  9. ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์„œ๋น„์Šค ์–ด์นด์šดํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  10. ๋ฆฌ์†Œ์Šค์— ํ—ˆ์šฉํ•˜๋ ค๋Š” ์ž‘์—…์— ๋Œ€ํ•œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ ๋กค(role)์„ ์ƒ์„ฑํ•œ๋‹ค.
  11. ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ์„œ๋น„์Šค ์–ด์นด์šดํŠธ์—์„œ ๋ฐฉ๊ธˆ ๋งŒ๋“  ํด๋Ÿฌ์Šคํ„ฐ ๋กค๋กœ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ ๋กค ๋ฐ”์ธ๋”ฉ์„ ์ƒ์„ฑํ•œ๋‹ค.
  12. ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ์„œ๋น„์Šค ์–ด์นด์šดํŠธ์—์„œ system:auth-delegator ํด๋Ÿฌ์Šคํ„ฐ ๋กค๋กœ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ ๋กค ๋ฐ”์ธ๋”ฉ์„ ๋งŒ๋“ค์–ด ์ธ์ฆ ๊ฒฐ์ •์„ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ•ต์‹ฌ API ์„œ๋ฒ„์— ์œ„์ž„ํ•œ๋‹ค.
  13. ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ์„œ๋น„์Šค ์–ด์นด์šดํŠธ์—์„œ extension-apiserver-authentication-reader ๋กค๋กœ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋กค ๋ฐ”์ธ๋”ฉ์„ ์ƒ์„ฑํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ™•์žฅ API ์„œ๋ฒ„๊ฐ€ extension-apiserver-authentication ์ปจํ”ผ๊ทธ๋งต(configmap)์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
  14. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API ์„œ๋น„์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์œ„์˜ CA ์ธ์ฆ์„œ๋Š” base64๋กœ ์ธ์ฝ”๋”ฉ๋˜์–ด, ์ƒˆ๋กœ์šด ๋ผ์ธ์ด ์ œ๊ฑฐ๋˜๊ณ  API ์„œ๋น„์Šค์—์„œ spec.caBundle๋กœ ์‚ฌ์šฉ๋˜์–ด์•ผ ํ•œ๋‹ค. ์ด๊ฒƒ์€ namespaced๊ฐ€ ์•„๋‹ˆ์–ด์•ผ ํ•œ๋‹ค. kube-aggregator API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, base64 ์ธ์ฝ”๋”ฉ์ด ์ˆ˜ํ–‰๋˜๋ฏ€๋กœ PEM ์ธ์ฝ”๋”ฉ๋œ CA ๋ฒˆ๋“ค๋งŒ ํ†ต๊ณผํ•œ๋‹ค.
  15. kubectl์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค๋ฅผ ์–ป๋Š”๋‹ค. kubectl์„ ์‹คํ–‰ํ•˜๋ฉด, "No resources found."๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค. ์ด ๋ฉ”์‹œ์ง€๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™๋์ง€๋งŒ ํ˜„์žฌ ํ•ด๋‹น ๋ฆฌ์†Œ์Šค ์œ ํ˜•์˜ ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋˜์ง€ ์•Š์•˜์Œ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

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

์ตœ์ข… ์ˆ˜์ • September 23, 2022 at 11:12 AM PST: [ko] Update outdate files in dev-1.25-ko.1 (M74-M89) (2aafb85f6d)