Kuby-core: ์ตœ์‹  ๋ฒ„์ „์˜ kubedb ์ง€์›

์— ๋งŒ๋“  2021๋…„ 04์›” 28์ผ  ยท  2์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: getkuby/kuby-core

๋ถˆํ–‰ํžˆ๋„ AppsCode์˜ ํ›Œ๋ฅญํ•œ ์‚ฌ๋žŒ๋“ค(kubedb ์ œ์ž‘์ž)์€ ์ด์ œ ๊ฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฌด๋ฃŒ ๋ผ์ด์„ ์Šค๋ฅผ ์ทจ๋“ํ•˜๋„๋ก ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. kuby๋Š” ๋ผ์ด์„ ์Šค๋ฅผ ์ž๋™์œผ๋กœ ์–ป๊ธฐ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€ ๊นŒ๋‹ค๋กœ์šด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํŠนํžˆ ๋„๋•์ ์œผ๋กœ ๋Š๊ปด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๋˜๋Š” ์–ด์ฉŒ๋ฉด ํ•ฉ๋ฒ•์ ์ผ๊นŒ์š”?). ์ œ๊ฐ€ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ํ•ด๊ฒฐ์ฑ…์€ ํด๋Ÿฌ์Šคํ„ฐ ์„ค์ • ์ค‘์— ์‚ฌ์šฉ์ž๋ฅผ AppsCode ์›น์‚ฌ์ดํŠธ๋กœ ์•ˆ๋‚ดํ•œ ๋‹ค์Œ ํ”„๋กฌํ”„ํŠธ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ผ์ด์„ผ์Šค ํŒŒ์ผ์˜ ๋‚ด์šฉ์— ๋Œ€ํ•ด. ๋ถ„๋ช…ํžˆ ๊ทธ๊ฒƒ์€ ์ด์ƒ์ ์ด์ง€๋Š” ์•Š์ง€๋งŒ, ์šฐ๋ฆฌ๊ฐ€ kuby์™€ ํ•จ๊ป˜ kubedb๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ์˜ต์…˜์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

enhancement help wanted

๋ชจ๋“  2 ๋Œ“๊ธ€

์ž, ์—ฌ๊ธฐ์— ์ถ”๊ฐ€ ์ปจํ…์ŠคํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋ ค์šด ๋ถ€๋ถ„์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ๋ผ์ด์„ ์Šค๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค(๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋ผ์ด์„ ์Šค ์„œ๋ฒ„ ํ† ํฐ, ์ด๋ฉ”์ผ ์ฃผ์†Œ ๋“ฑ์„ ๋ฌป๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•ด์•ผ ํ•จ). ์–ด๋ ค์šด ๋ถ€๋ถ„์€ kubedb ์šด์˜์ž์™€ ๊ฐœ๋ณ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ _์—…๊ทธ๋ ˆ์ด๋“œ_ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ถ„๋ช…ํžˆ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค๋ฅผ ์ค‘๋‹จํ•˜๊ณ  ์‹ถ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— v0.12๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ ์ž์ฒด๊ฐ€ ์–ด๋ ต์ง€๋งŒ ๊ฒฐ๊ตญ ์ž‘๋™ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ v0.18(์ด ๊ธ€์„ ์“ฐ๋Š” ์‹œ์ ์—์„œ ์ตœ์‹  ๋ฒ„์ „)์„ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์€ Helm์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฝค ์‰ฝ์Šต๋‹ˆ๋‹ค... ํ•˜์ง€๋งŒ _์ด๋ฏธ ์‹คํ–‰ ์ค‘์ธ(๋‹ค์šดํƒ€์ž„ ์—†์ด) ๊ธฐ์กด Postgres ๋˜๋Š” MySQL ์ธ์Šคํ„ด์Šค๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. Postgres์—์„œ (๊ฑฐ์˜) ์ž‘์—…ํ•œ ๋‹จ๊ณ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ๊ธฐ์กด db๊ฐ€ WAL ์ˆ˜์ค€(๋ฏธ๋ฆฌ ์“ฐ๊ธฐ ๋กœ๊ทธ) ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ ๋…ผ๋ฆฌ์  ๋ณต์ œ๋ฅผ ์œ„ํ•ด ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. WAL ๋ ˆ๋ฒจ์„ ์„ค์ •ํ•˜๋ ค๋ฉด pg ์žฌ์‹œ์ž‘์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ ๋ณต์ œ๋ณธ ์ˆ˜๋ฅผ > 1๋กœ ์„ค์ •ํ•˜๋Š” ๋™์‹œ์— kubedb์— ์ถ”๊ฐ€ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜๋„๋ก ์ง€์‹œํ•˜์—ฌ ์žฌ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ์—ฌ๋Ÿฌ ๋ณต์ œ๋ณธ์„ ์›ํ•˜๋ฏ€๋กœ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด๋„ ๋‹ค์šดํƒ€์ž„์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  2. ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค๋ฅผ ์ค‘๋‹จํ•˜์ง€ ์•Š๋„๋ก ํŠน๋ณ„ํžˆ ์ฃผ์˜ํ•˜๋ฉด์„œ ์ด์ „ ๋ฒ„์ „์˜ kubedb ์—ฐ์‚ฐ์ž๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์ƒˆ ๋ฒ„์ „์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์•„์ง Postgres ์ธ์Šคํ„ด์Šค๊ฐ€ ์‹คํ–‰ ์ค‘์ธ ๊ฒฝ์šฐ k8s๊ฐ€ Postgres CRD๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์„ ์ƒ๋‹นํžˆ ๊บผ๋ คํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ์•ฝ๊ฐ„ ๊นŒ๋‹ค๋กœ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ง์ด๋œ๋‹ค. ๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ k8์ด ์›ํ•˜๋Š” ๊ฒƒ์„ ํ•˜๋„๋ก ์†์ผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  3. WAL = ๋…ผ๋ฆฌ์ ์ธ ์ƒˆ postgres ์ธ์Šคํ„ด์Šค๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ์ด์ „ DB์˜ ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๊ฐ€ ์ƒˆ DB๋กœ ๋ณต์‚ฌ๋˜๋„๋ก ์ด์ „ DB์™€ ์ƒˆ DB ์‚ฌ์ด์— ํ•„์š”ํ•œ ๊ฒŒ์‹œ/๊ตฌ๋…์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. Rails์—์„œ db์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ postgres ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ postgres ์‚ฌ์šฉ์ž์—๊ฒŒ ์ƒˆ db์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ œ๊ณตํ•˜๋„๋ก ์ฃผ์˜ํ•˜์‹ญ์‹œ์˜ค. (Kuby๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ root ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค) . ์ด๊ฒƒ์€ kubedb์˜ ์ดˆ๊ธฐํ™” ์Šคํฌ๋ฆฝํŠธ์— ์žˆ๋Š” ๋ฒ„๊ทธ๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ƒˆ db๋Š” ๋ถ„๋ช…ํžˆ ์ด์ „ ์ด๋ฆ„๊ณผ ๋‹ค๋ฅธ ์ด๋ฆ„์„ ๊ฐ€์ ธ์•ผ ํ•˜๋ฏ€๋กœ ๋ฌธ์ œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. db์˜ ์ด๋ฆ„์€ rails๊ฐ€ ์—ฐ๊ฒฐํ•˜๋Š” DNS ์ด๋ฆ„์„ ๊ฒฐ์ •ํ•˜๋Š”๋ฐ, ์šฐ๋ฆฌ๊ฐ€ ์‹ค์ œ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ํ ...
  4. rails ์•ฑ์„ ๋ฐฐํฌํ•˜๊ณ  ์–ด๋–ป๊ฒŒ๋“  ์ƒˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋น„์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.
  5. ์ด์ „ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ญ์ œ
  6. ์ด์ต

๋‚˜๋Š” ํ˜„์žฌ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋น„์Šค์—์„œ rails ์•ฑ์„ ์‰ฝ๊ฒŒ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„ ๋‚ด๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋น„์Šค URL์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•˜๋“œ ์ฝ”๋”ฉ๋˜์–ด ์žˆ์œผ๋ฉฐ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋”์šฑ์ด ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋น„์Šค๋Š” ๊ธฐ์กด ์„œ๋น„์Šค์™€ ๋™์ผํ•œ ์ด๋ฆ„์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ "์˜ฌ๋ฐ”๋ฅธ" ์„œ๋น„์Šค๋ฅผ ์–ด๋”˜๊ฐ€์— ์ €์žฅํ•˜๊ณ (๋ฐฐํฌ์— ๋Œ€ํ•œ ์ฃผ์„์ผ ์ˆ˜๋„ ์žˆ์Œ) ๋ชจ๋“  ... docker build cuz์—์„œ ์ฐธ์กฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋•Œ ์šฐ๋ฆฌ๊ฐ€ database.yml์„ ๋‹ค์‹œ ์ž‘์„ฑํ•ฉ๋‹ˆ๊นŒ? ์œผ์œฝ.

๋˜ ๋‹ค๋ฅธ ์†”๋ฃจ์…˜์€ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ์™€ ๊ฐ™์ด ์„œ๋น„์Šค ์œ„์— ์žˆ๋Š” ํ•œ ์„œ๋น„์Šค ๋˜๋Š” ๋‹ค๋ฅธ ์„œ๋น„์Šค์—์„œ ๋™์ ์œผ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์ผ์ข…์˜ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

kuby๋Š” ๋ผ์ด์„ ์Šค๋ฅผ ์ž๋™์œผ๋กœ ์–ป๊ธฐ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€ ๊นŒ๋‹ค๋กœ์šด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ด๋Š” ํŠน๋ณ„ํžˆ ๋„๋•์ ์œผ๋กœ ๋Š๊ปด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๋˜๋Š” ์–ด์ฉŒ๋ฉด ๋ฒ•์ ?).

Tamal์€ ์ข‹์€ ์นœ๊ตฌ์ด๋ฉฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์ž์„ธํžˆ ๊ณต๊ฐœํ•˜์—ฌ ์›”๋ง์— ์ž„์‹œ ๋ผ์ด์„ ์Šค๊ฐ€ ๋งŒ๋ฃŒ๋  ๋•Œ ์‚ฌ์šฉ์ž๊ฐ€ ๋†€๋ผ์ง€ ์•Š๋Š” ํ•œ ๊ทธ๊ฐ€ ์ „ํ˜€ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. (? ๋ผ์ด์„ผ์Šค๊ฐ€ ๋งŒ๋ฃŒ๋˜๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”? ์ง€๊ธˆ์€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๋ฐฑ์—…์ด ์ค‘์ง€๋˜์—ˆ๋‹ค๋Š” ์˜๋ฏธ๋ผ๋ฉด ๋‚˜์  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ผ์ด ์‹คํŒจํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ๋˜ํ•œ ๋‚˜์  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค... ์ƒˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์˜๋ฏธ๋ผ๋ฉด ์ด์ œ ๋ผ์ด์„ ์Šค๊ฐ€ ๊ฐฑ์‹ ๋  ๋•Œ๊นŒ์ง€ ๋‚˜์˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.)

์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์˜ต์…˜์ด ์ด๋ฏธ ์žˆ์œผ๋ฏ€๋กœ ์‚ฌ์šฉ์ž๋Š” KubeDB๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค.

์—…๊ทธ๋ ˆ์ด๋“œ์— ํ•„์š”ํ•œ ์‚ฌํ•ญ์„ ์•ˆ๋‚ดํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ €๋Š” ํ”„๋กœ๋•์…˜ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์œ„ํ•ด Team Hephy์— ๊ด€๋Œ€ํ•˜๊ฒŒ ๋ถ€์—ฌ๋œ KubeDB์— ๋Œ€ํ•œ ๋ผ์ด์„ ์Šค๊ฐ€ ์žˆ์œผ๋ฉฐ KubeDB์—์„œ ์‹œ์ž‘๋˜๊ฑฐ๋‚˜ ํ˜ธ์ŠคํŒ…๋œ ์ ์ด ์—†๋Š” ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ํ•„์š”ํ•œ ์ด์ „ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฑ์—… ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ๋ผ์ด์„ผ์Šค๋ฅผ ์–ป์—ˆ๊ณ  PostgresQL๊ณผ MariaDB๋ฅผ ๋ชจ๋‘ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. tl;dr ์ด ์˜์—ญ์—์„œ๋„ ์ œ ์ž‘์—…์„ ์ž˜๋ž์Šต๋‹ˆ๋‹ค.

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

Kuby๋Š” ๋˜ํ•œ ์žฅ๊ธฐ์ ์œผ๋กœ KubeDB์˜ ํ›Œ๋ฅญํ•œ ํŒ๋งค ๋ฒกํ„ฐ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์ด ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ๋Š๋‚„์ง€ ๋ชจ๋ฅด๊ฒ ์–ด์š”!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰