๐Ÿš€ Gatekeeper๋กœ Kubernetes ์ •์ฑ… ์ž๋™ํ™” & ๊ทœ์ • ์ค€์ˆ˜ ๊ฐ•ํ™”ํ•˜๊ธฐ w/ Kyverno

:bullseye: Gatekeeper๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

Gatekeeper๋Š” CNCF Graduated Project๋กœ, Kubernetes ํ™˜๊ฒฝ์—์„œ ์ •์ฑ… ๊ฒ€์ฆ(validation)๊ณผ ๋ณ€๊ฒฝ(mutation)์„ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๊ฐ•๋ ฅํ•œ Admission Controller & Policy Engine์ž…๋‹ˆ๋‹ค.

:glowing_star: ์ฃผ์š” ์žฅ์ 

  • ์ผ๊ด€์„ฑ ํ™•๋ณด: ์ˆ˜๋™ ๊ฒ€์ฆ ๋Œ€์‹  ์ •์ฑ… ์œ„๋ฐ˜์„ ์ž๋™์œผ๋กœ ํƒ์ง€ํ•˜๊ณ  ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐœ๋ฐœ ์†๋„ ์œ ์ง€: ๊ทœ์ • ์œ„๋ฐ˜ ์‹œ ์ฆ‰๊ฐ์ ์ธ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•˜์—ฌ ๋น ๋ฅธ ๋ฐ˜๋ณต ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ์ปดํ”Œ๋ผ์ด์–ธ์Šค ๊ฐ•ํ™”: ๋ฒ•๊ทœ ๋ฐ ๋‚ด๋ถ€ ๊ทœ์ •์„ ์ž๋™ํ™”ํ•ด ๋ฆฌ์Šคํฌ๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค.
  • ์œ ์—ฐํ•œ ํ™•์žฅ์„ฑ: Constraint ํ…œํ”Œ๋ฆฟ, Mutation, External Data ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ์ •์ฑ… ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

:locked: OPA Gatekeeper๊ฐ€ ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ๋Š” ๊ทœ์น™๋“ค

  • latest ์ด๋ฏธ์ง€ ํƒœ๊ทธ ์‚ฌ์šฉ ๊ธˆ์ง€
  • ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ๋งŒ ์ด๋ฏธ์ง€ Pull ํ—ˆ์šฉ
  • ๋ชจ๋“  ๋ฆฌ์†Œ์Šค์— ๋ผ๋ฒจ์ด ๋ฐ˜๋“œ์‹œ ํฌํ•จ๋˜๋„๋ก ๋ณด์žฅ
  • Privileged ์ปจํ…Œ์ด๋„ˆ ์‚ฌ์šฉ ๊ธˆ์ง€

๋งŒ์•ฝ Kubernetes ๋ฆฌ์†Œ์Šค๋ฅผ ์ ์šฉํ•  ๋•Œ ์„ค์ •๋œ ๊ทœ์น™์„ ์šฐํšŒํ•˜๋ ค๊ณ  ์‹œ๋„ํ•œ๋‹ค๋ฉด, ํ•ด๋‹น ์š”์ฒญ์€ ์ž๋™์œผ๋กœ ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค. ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํ™˜๊ฒฝ์—์„œ Kubernetes๋ฅผ ์šด์˜ํ•  ๋•Œ, OPA Gatekeeper๋Š” ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.

๋‹ค์†Œ ์ง€๋‚œ ๋ธ”๋กœ๊ทธ( Gatekeeper ์—์„œ ์‚ฌ์šฉํ•˜๋Š” Constraint์™€ ContraintTemplate ์ƒ์„ธ ์„ค๋ช… )๋ฅผ ์ฐธ๊ณ ๋กœ ๊ณต์œ ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

:hammer_and_wrench: ์‹œ์ž‘ ๋ฐฉ๋ฒ•

  1. Getting Started Guide๋กœ ์„ค์น˜ ๋ฐ ์ดˆ๊ธฐ ์„ค์ •์„ ์ง„ํ–‰ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. Policy Library์—์„œ ๋‹ค์–‘ํ•œ ์ƒ˜ํ”Œ ์ •์ฑ…(Constraint)์„ ๋ฐ”๋กœ ํ™œ์šฉํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. Audit ๊ธฐ๋Šฅ์œผ๋กœ ์ •์ฑ… ์œ„๋ฐ˜ ์‚ฌํ•ญ์„ ์‹œ๊ฐํ™”ํ•˜๊ณ  ๋ณด๊ณ ์„œ๋กœ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

:books: ๊ด€๋ จ ์ถ”๊ฐ€ ์˜คํ”„์†Œ์Šค ๋ฐ ์งˆ์˜/๋‹ต๋ณ€ ์ •๋ณด