Kubernetes์—์„œ ์‹คํ–‰๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ๋„๊ตฌ

Kubernetes์—์„œ ์‹คํ–‰๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ๋„๊ตฌ

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

์ด ๋ฆฌ๋ทฐ๋Š” Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์˜ pod'ax์—์„œ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์‚ถ์„ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ์ผ๋ถ€ ๋„๊ตฌ์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•œ ๋„์šฐ๋ฏธ

Kubectl ๋””๋ฒ„๊ทธ

  • ์ตœ์ข…์„  : ์ปจํ…Œ์ด๋„ˆ๋ฅผ Pod์— ์ถ”๊ฐ€ํ•˜๊ณ  ๊ทธ ์•ˆ์—์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”..
  • GitHub์˜.
  • ๊ฐ„๋žตํ•œ GH ํ†ต๊ณ„: ๋ณ„ 715๊ฐœ, ์ปค๋ฐ‹ 54๊ฐœ, ๊ธฐ์—ฌ์ž 9๋ช….
  • ์–ธ์–ด: ๊ฐ€์„ธ์š”.
  • ๋ผ์ด์„ผ์Šค: ์•„ํŒŒ์น˜ ๋ผ์ด์„ผ์Šค 2.0.

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

๋‹ค์Œ์„ ์‹คํ–‰ํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค ์ปจํ…Œ์ด๋„ˆ๋กœ ์ „ํ™˜ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. chroot /proc/PID/root - ์ด๋Š” ๋งค๋‹ˆํŽ˜์ŠคํŠธ์— ์„ค์ •๋œ ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋ฃจํŠธ ์…ธ์„ ๊ฐ€์ ธ์™€์•ผ ํ•  ๋•Œ ๋งค์šฐ ํŽธ๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. securityContext.runAs.

์ด ๋„๊ตฌ๋Š” ๊ฐ„๋‹จํ•˜๊ณ  ํšจ๊ณผ์ ์ด๋ฏ€๋กœ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋” ๋งŽ์ด ์ผ์Šต๋‹ˆ๋‹ค. ๋ณ„๋„์˜ ๊ธฐ์‚ฌ.

ํ…”๋ ˆํ”„๋ ˆ์ฆŒ์Šค

  • ์ตœ์ข…์„  : ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์ปดํ“จํ„ฐ๋กœ ์ „์†กํ•˜์‹ญ์‹œ์˜ค. ๋กœ์ปฌ์—์„œ ๊ฐœ๋ฐœ ๋ฐ ๋””๋ฒ„๊ทธ.
  • ์›น ์‚ฌ์ดํŠธ; GitHub์˜.
  • ๊ฐ„๋žตํ•œ GH ํ†ต๊ณ„: ๋ณ„ 2131๊ฐœ, ์ปค๋ฐ‹ 2712๊ฐœ, ๊ธฐ์—ฌ์ž 33๋ช….
  • ์–ธ์–ด: ํŒŒ์ด์ฌ.
  • ๋ผ์ด์„ผ์Šค: ์•„ํŒŒ์น˜ ๋ผ์ด์„ผ์Šค 2.0.

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

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

์šฐ๋ฆฌ๋Š” ์ด๋ฏธ Telepresence ์‚ฌ์šฉ ๊ฒฝํ—˜์„ ๊ณต์œ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—.

Ksync

  • ์ตœ์ข…์„  : ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ปจํ…Œ์ด๋„ˆ์™€ ์ฝ”๋“œ์˜ ๊ฑฐ์˜ ์ฆ‰๊ฐ์ ์ธ ๋™๊ธฐํ™”.
  • GitHub์˜.
  • ๊ฐ„๋žตํ•œ GH ํ†ต๊ณ„: ๋ณ„ 555๊ฐœ, ์ปค๋ฐ‹ 362๊ฐœ, ๊ธฐ์—ฌ์ž 11๋ช….
  • ์–ธ์–ด: ๊ฐ€์„ธ์š”.
  • ๋ผ์ด์„ผ์Šค: ์•„ํŒŒ์น˜ ๋ผ์ด์„ผ์Šค 2.0.

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

๋ช…๋ น์œผ๋กœ ํ•œ ๋ฒˆ ์ดˆ๊ธฐํ™”๋˜๋ฉด ksync init ์„ ํƒํ•œ ์ปจํ…Œ์ด๋„ˆ์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” DaemonSet๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ์— ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ์ž์‹ ์˜ ๋กœ์ปฌ ์ปดํ“จํ„ฐ์—์„œ ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ksync watch๊ตฌ์„ฑ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” syncthing, ํŒŒ์ผ์„ ํด๋Ÿฌ์Šคํ„ฐ์™€ ์ง์ ‘ ๋™๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.

๋‚จ์€ ๊ฒƒ์€ ksync์—๊ฒŒ ๋ฌด์—‡์„ ๋ฌด์—‡๊ณผ ๋™๊ธฐํ™”ํ• ์ง€ ์ง€์‹œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ๋ช…๋ น์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ksync create --name=myproject --namespace=test --selector=app=backend --container=php --reload=false /home/user/myproject/ /var/www/myproject/

...๋ผ๋Š” ์ด๋ฆ„์˜ ๊ฐ์‹œ์ž๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. myproject๋ผ๋ฒจ์ด ์žˆ๋Š” ํฌ๋“œ๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. app=backend ๋กœ์ปฌ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋™๊ธฐํ™”ํ•ด ๋ณด์„ธ์š”. /home/user/myproject/ ์นดํƒˆ๋กœ๊ทธ ํฌํ•จ /var/www/myproject/ ๋ผ๋Š” ์ปจํ…Œ์ด๋„ˆ์—์„œ php.

์šฐ๋ฆฌ ๊ฒฝํ—˜์—์„œ ๋‚˜์˜จ ksync ๋ฌธ์ œ์™€ ์ฐธ๊ณ  ์‚ฌํ•ญ:

  • Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ์—์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. overlay2 Docker์šฉ ์Šคํ† ๋ฆฌ์ง€ ๋“œ๋ผ์ด๋ฒ„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” ๋‹ค๋ฅธ ์œ ํ‹ธ๋ฆฌํ‹ฐ์™€ ํ•จ๊ป˜ โ€‹โ€‹์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Windows๋ฅผ ํด๋ผ์ด์–ธํŠธ OS๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ฐ์‹œ์ž๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฒ„๊ทธ๋Š” ๋งŽ์€ ์ˆ˜์˜ ์ค‘์ฒฉ๋œ ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์žˆ๋Š” ๋Œ€๊ทœ๋ชจ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ์ž‘์—…ํ•  ๋•Œ ๋ฐœ๊ฒฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค ๊ด€๋ จ ๋ฌธ์ œ ๋™๊ธฐํ™” ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ ์ค‘์ธ๋ฐ ์•„์ง(XNUMX์›” ์ดˆ ์ดํ›„) ์ง„์ „์ด ์—†์Šต๋‹ˆ๋‹ค.
  • ํŒŒ์ผ ์‚ฌ์šฉ .stignore ๋™๊ธฐํ™”ํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒฝ๋กœ๋‚˜ ํŒŒ์ผ ํŒจํ„ด์„ ์ง€์ •ํ•˜๋ ค๋ฉด(์˜ˆ: ๋””๋ ‰ํ„ฐ๋ฆฌ app/cache ะธ .git).
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ksync๋Š” ํŒŒ์ผ์ด ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. Node.js์˜ ๊ฒฝ์šฐ ์ด๋Š” ํŽธ๋ฆฌํ•˜์ง€๋งŒ PHP์˜ ๊ฒฝ์šฐ ์ „ํ˜€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. opcache๋ฅผ ๋„๊ณ  ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค --reload=false.
  • ๊ตฌ์„ฑ์€ ํ•ญ์ƒ ๋‹ค์Œ์—์„œ ์ˆ˜์ •๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. $HOME/.ksync/ksync.yaml.

์Šค์ฟผ์‹œ

  • ์ตœ์ข…์„  : ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ง์ ‘ ํ”„๋กœ์„ธ์Šค ๋””๋ฒ„๊ทธ.
  • GitHub์˜.
  • ๊ฐ„๋žตํ•œ GH ํ†ต๊ณ„: ๋ณ„ 1154๊ฐœ, ์ปค๋ฐ‹ 279๊ฐœ, ๊ธฐ์—ฌ์ž 23๋ช….
  • ์–ธ์–ด: ๊ฐ€์„ธ์š”.
  • ๋ผ์ด์„ผ์Šค: ์•„ํŒŒ์น˜ ๋ผ์ด์„ผ์Šค 2.0.

์ด ๋„๊ตฌ๋Š” Pod์—์„œ ์ง์ ‘ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋””๋ฒ„๊น…ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” ๊ฐ„๋‹จํ•˜๋ฉฐ ๋Œ€ํ™”ํ˜•์œผ๋กœ ์›ํ•˜๋Š” ๋””๋ฒ„๊ฑฐ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์•„๋ž˜ ์ฐธ์กฐ) ๋ฐ ๋„ค์ž„์ŠคํŽ˜์ด์Šค + ํฌ๋“œ(์ด ๊ณผ์ •์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐœ์ž…ํ•ด์•ผ ํ•จ) ํ˜„์žฌ ์ง€์›๋˜๋Š” ๊ฒƒ:

  • delve - Go ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์šฉ;
  • GDB - ๋Œ€์ƒ ์›๊ฒฉ + ํฌํŠธ ์ „๋‹ฌ์„ ํ†ตํ•ด;
  • Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋””๋ฒ„๊น…์„ ์œ„ํ•œ JDWP ํฌํŠธ ์ „๋‹ฌ.

IDE ์ธก์—์„œ๋Š” VScode์—์„œ๋งŒ ์ง€์›์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํ™•์žฅ) ๊ทธ๋Ÿฌ๋‚˜ ๊ธˆ๋…„(2019๋…„) ๊ณ„ํš์—๋Š” Eclipse์™€ Intellij๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค๋ฅผ ๋””๋ฒ„๊น…ํ•˜๊ธฐ ์œ„ํ•ด Squash๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ์—์„œ ๊ถŒํ•œ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋ฏ€๋กœ ๋จผ์ € ๊ธฐ๋Šฅ์„ ์ˆ™์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•ˆ์ „ ๋ชจ๋“œ ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด.

์™„๋ฒฝํ•œ ์†”๋ฃจ์…˜

๊ฐœ๋ฐœ์ž์˜ ๋งŽ์€ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ฆ‰์‹œ ์ถฉ์กฑํ•˜๋„๋ก ์„ค๊ณ„๋œ ๋ณด๋‹ค "๋Œ€๊ทœ๋ชจ" ํ”„๋กœ์ ํŠธ์ธ ์ค‘ํฌ๋กœ ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค.

NB: ๋ฌผ๋ก  ์ด ๋ชฉ๋ก์—๋Š” ์˜คํ”ˆ ์†Œ์Šค ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์œ„ํ•œ ๊ณต๊ฐ„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์›Œํ”„ (์ด์ „์—๋Š” dapp์œผ๋กœ ์•Œ๋ ค์ง). ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ๋ฒˆ ์ž‘์„ฑํ•˜๊ณ  ์ด์•ผ๊ธฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌ๋ทฐ์— ํฌํ•จํ•˜์ง€ ์•Š๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ๋” ์ž˜ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ๋ณด๊ณ ์„œ๋ฅผ ์ฝ๊ณ  ๋“ฃ๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.werf๋Š” Kubernetes์˜ CI/CD์šฉ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.".

๋ฐ๋ธŒ์ŠคํŽ˜์ด์Šค

  • ์ตœ์ข…์„  : Kubernetes์—์„œ ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๊ณ  ์‹ถ์ง€๋งŒ ์ •๊ธ€์— ๊นŠ์ด ๋“ค์–ด๊ฐ€๊ณ  ์‹ถ์ง€ ์•Š์€ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ.
  • GitHub์˜.
  • ๊ฐ„๋žตํ•œ GH ํ†ต๊ณ„: ๋ณ„ 630๊ฐœ, ์ปค๋ฐ‹ 1912๊ฐœ, ๊ธฐ์—ฌ์ž 13๋ช….
  • ์–ธ์–ด: ๊ฐ€์„ธ์š”.
  • ๋ผ์ด์„ผ์Šค: ์•„ํŒŒ์น˜ ๋ผ์ด์„ผ์Šค 2.0.

ํŒ€ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด Kubernetes์™€ ํ•จ๊ป˜ ๊ด€๋ฆฌํ˜• ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋™๋ช…์˜ ํšŒ์‚ฌ์˜ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. ์ด ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” ์ƒ์—…์šฉ ํด๋Ÿฌ์Šคํ„ฐ์šฉ์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ์ง€๋งŒ ๋‹ค๋ฅธ ํด๋Ÿฌ์Šคํ„ฐ์™€๋„ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋ช…๋ น์„ ์‹คํ–‰ํ•  ๋•Œ devspace init ํ”„๋กœ์ ํŠธ ์นดํƒˆ๋กœ๊ทธ์—์„œ ๋‹ค์Œ ์‚ฌํ•ญ์ด ๋Œ€ํ™”ํ˜•์œผ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

  • ์ž‘๋™ ์ค‘์ธ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์„ ํƒํ•˜๊ณ ,
  • ๊ธฐ์กด ์‚ฌ์šฉ Dockerfile (๋˜๋Š” ์ƒˆ ๊ฒƒ์„ ์ƒ์„ฑํ•˜์—ฌ) ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ณ ,
  • ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋“ฑ์„ ์ €์žฅํ•  ์ €์žฅ์†Œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ชจ๋“  ์ค€๋น„ ๋‹จ๊ณ„๊ฐ€ ๋๋‚˜๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. devspace dev. ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋นŒ๋“œํ•˜๊ณ , ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์—…๋กœ๋“œํ•˜๊ณ , ํด๋Ÿฌ์Šคํ„ฐ์— ๋ฐฐํฌ๋ฅผ ๋กค์•„์›ƒํ•˜๊ณ , ๋กœ์ปฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์™€ ์ปจํ…Œ์ด๋„ˆ์˜ ํฌํŠธ ์ „๋‹ฌ ๋ฐ ๋™๊ธฐํ™”๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์„ ํƒ์ ์œผ๋กœ ํ„ฐ๋ฏธ๋„์„ ์ปจํ…Œ์ด๋„ˆ๋กœ ์ด๋™ํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ปจํ…Œ์ด๋„ˆ๋Š” sleep ๋ช…๋ น์œผ๋กœ ์‹œ์ž‘ํ•˜๊ณ  ์‹ค์ œ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด์„œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ˆ˜๋™์œผ๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฑฐ๋ถ€ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ํŒ€์€ devspace deploy ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๊ด€๋ จ ์ธํ”„๋ผ๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ์— ๋กค์•„์›ƒํ•œ ํ›„ ๋ชจ๋“  ๊ฒƒ์ด ์ „ํˆฌ ๋ชจ๋“œ์—์„œ ์ž‘๋™ํ•˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ์€ ํŒŒ์ผ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. devspace.yaml. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ • ์™ธ์—๋„ ํ‘œ์ค€ Kubernetes ๋งค๋‹ˆํŽ˜์ŠคํŠธ์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ํฌ๊ฒŒ ๋‹จ์ˆœํ™”๋œ ์ธํ”„๋ผ์— ๋Œ€ํ•œ ์„ค๋ช…๋„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Kubernetes์—์„œ ์‹คํ–‰๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ๋„๊ตฌ
DevSpace ์ž‘์—…์˜ ์•„ํ‚คํ…์ฒ˜ ๋ฐ ์ฃผ์š” ๋‹จ๊ณ„

๋˜ํ•œ ์‚ฌ์ „ ์ •์˜๋œ ๊ตฌ์„ฑ ์š”์†Œ(์˜ˆ: MySQL DBMS) ๋˜๋Š” Helm ์ฐจํŠธ๋ฅผ ํ”„๋กœ์ ํŠธ์— ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ ์„ ์  ์„œ๋ฅ˜ ๋น„์น˜ - ๋ณต์žกํ•˜์ง€ ์•Š์•„์š”.

๋น„๊ณ„

  • ์›น ์‚ฌ์ดํŠธ; GitHub์˜.
  • ๊ฐ„๋žตํ•œ GH ํ†ต๊ณ„: ๋ณ„ 7423๊ฐœ, ์ปค๋ฐ‹ 4173๊ฐœ, ๊ธฐ์—ฌ์ž 136๋ช….
  • ์–ธ์–ด: ๊ฐ€์„ธ์š”.
  • ๋ผ์ด์„ผ์Šค: ์•„ํŒŒ์น˜ ๋ผ์ด์„ผ์Šค 2.0.

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

ํ•˜์ง€๋งŒ ์ด๊ฒƒ์ด ๋‘๋ ต์ง€ ์•Š๋‹ค๋ฉด Skaffold๋ฅผ ํ†ตํ•ด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์†Œ์Šค ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค.
  • ์กฐ๋ฆฝ์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ํฌ๋“œ ์ปจํ…Œ์ด๋„ˆ์™€ ๋™๊ธฐํ™”ํ•˜์„ธ์š”.
  • ์–ธ์–ด๊ฐ€ ํ•ด์„๋˜๋Š” ๊ฒฝ์šฐ ์ฝ”๋“œ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ฑฐ๋‚˜ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์ปดํŒŒ์ผํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ์— ํŒจํ‚ค์ง•ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ ์ด๋ฏธ์ง€๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋™์œผ๋กœ ํ™•์ธ๋ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ๊ตฌ์กฐ ํ…Œ์ŠคํŠธ.
  • Docker ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์ด๋ฏธ์ง€์— ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•˜๊ณ  ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
  • kubectl, Helm ๋˜๋Š” kustomize๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.
  • ํฌํŠธ ํฌ์›Œ๋”ฉ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • Java, Node.js, Python์œผ๋กœ ์ž‘์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋””๋ฒ„๊ทธํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ๋ณ€ํ˜•์˜ ์›Œํฌํ”Œ๋กœ๊ฐ€ ํŒŒ์ผ์— ์„ ์–ธ์ ์œผ๋กœ ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. skaffold.yaml. ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ ์–ด์…ˆ๋ธ”๋ฆฌ ๋ฐ ๋ฐฐํฌ ๋‹จ๊ณ„๋ฅผ ๋ถ€๋ถ„์ ์œผ๋กœ ๋˜๋Š” ์™„์ „ํžˆ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ํ”„๋กœํ•„์„ ์ •์˜ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฐœ๋ฐœ์˜ ๊ฒฝ์šฐ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ํŽธ๋ฆฌํ•œ ๊ธฐ๋ณธ ์ด๋ฏธ์ง€๋ฅผ ์ง€์ •ํ•˜๊ณ  ์Šคํ…Œ์ด์ง• ๋ฐ ํ”„๋กœ๋•์…˜์„ ์œ„ํ•ด ์ตœ์†Œํ•œ์˜ ์ด๋ฏธ์ง€๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค(+ ์‚ฌ์šฉ securityContext ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฐฐํฌ๋  ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Docker ์ปจํ…Œ์ด๋„ˆ๋Š” ๋กœ์ปฌ ๋˜๋Š” ์›๊ฒฉ์œผ๋กœ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ๊ธ€ ํด๋ผ์šฐ๋“œ ๋นŒ๋“œ ๋˜๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜๋Š” ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์นด๋‹ˆ์ฝ”. Bazel ๋ฐ Jib Maven/Gradle๋„ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ํƒœ๊ทธ ์ง€์ •์„ ์œ„ํ•ด Skaffold๋Š” git ์ปค๋ฐ‹ ํ•ด์‹œ, ๋‚ ์งœ/์‹œ๊ฐ„, ์†Œ์Šค์˜ sha256 ํ•ฉ๊ณ„ ๋“ฑ ๋‹ค์–‘ํ•œ ์ „๋žต์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ด์™€ ๋ณ„๋„๋กœ ์ปจํ…Œ์ด๋„ˆ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ์„ฑ์— ์ฃผ๋ชฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ์–ธ๊ธ‰ํ•œ ์ปจํ…Œ์ด๋„ˆ ๊ตฌ์กฐ ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒ€์ฆ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • ์ข…๋ฃŒ ์ƒํƒœ๋ฅผ ์ถ”์ ํ•˜๊ณ  ๋ช…๋ น์˜ ํ…์ŠคํŠธ ์ถœ๋ ฅ์„ ํ™•์ธํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ ์ปจํ…์ŠคํŠธ์—์„œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ์— ํŒŒ์ผ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์ง€์ •๋œ ์†์„ฑ๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์ •๊ทœ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ ๋‚ด์šฉ์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋ฏธ์ง€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํ™•์ธ(ENV, ENTRYPOINT, VOLUMES ๋“ฑ).
  • ๋ผ์ด์„ผ์Šค ํ˜ธํ™˜์„ฑ์„ ํ™•์ธํ•˜๋Š” ์ค‘์ž…๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ์™€ ํŒŒ์ผ ๋™๊ธฐํ™”๋Š” ๊ฐ€์žฅ ์ตœ์ ์˜ ๋ฐฉ์‹์œผ๋กœ ์ˆ˜ํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Skaffold๋Š” ๋‹จ์ˆœํžˆ ์†Œ์Šค๊ฐ€ ํฌํ•จ๋œ ์•„์นด์ด๋ธŒ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ณต์‚ฌํ•œ ํ›„ ์ปจํ…Œ์ด๋„ˆ์— ์••์ถ•์„ ํ’‰๋‹ˆ๋‹ค(tar๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•จ). ๋”ฐ๋ผ์„œ ์ฃผ์š” ์ž‘์—…์ด ์ฝ”๋“œ ๋™๊ธฐํ™”๋ผ๋ฉด ์ „๋ฌธ ์†”๋ฃจ์…˜(ksync)์„ ์ฐพ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

Kubernetes์—์„œ ์‹คํ–‰๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ๋„๊ตฌ
Skaffold ์šด์˜์˜ ์ฃผ์š” ๋‹จ๊ณ„

์ผ๋ฐ˜์ ์œผ๋กœ ์ด ๋„๊ตฌ๋Š” Kubernetes ๋งค๋‹ˆํŽ˜์ŠคํŠธ์—์„œ ์ถ”์ƒํ™”ํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ƒํ˜ธ ์ž‘์šฉ์ด ์—†์œผ๋ฏ€๋กœ ๋งˆ์Šคํ„ฐํ•˜๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ๋˜ํ•œ ์žฅ์ ์ž…๋‹ˆ๋‹ค. ํ–‰๋™์˜ ์ž์œ ๊ฐ€ ๋” ์ปค์ง‘๋‹ˆ๋‹ค.

์ •์›

  • ์›น ์‚ฌ์ดํŠธ; GitHub์˜.
  • ๊ฐ„๋žตํ•œ GH ํ†ต๊ณ„: ๋ณ„ 1063๊ฐœ, ์ปค๋ฐ‹ 1927๊ฐœ, ๊ธฐ์—ฌ์ž 17๋ช….
  • ์–ธ์–ด: TypeScript (ํ”„๋กœ์ ํŠธ๋ฅผ ์—ฌ๋Ÿฌ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๋ถ„ํ• ํ•  ๊ณ„ํš์ด๋ฉฐ ๊ทธ ์ค‘ ์ผ๋ถ€๋Š” Go์— ํฌํ•จ๋  ์˜ˆ์ •์ด๋ฉฐ TypeScript/JavaScript ๋ฐ Go์—์„œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ SDK๋„ ๋งŒ๋“ค ์˜ˆ์ •์ž…๋‹ˆ๋‹ค).
  • ๋ผ์ด์„ผ์Šค: ์•„ํŒŒ์น˜ ๋ผ์ด์„ผ์Šค 2.0.

Skaffold์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Garden์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋ฅผ K8s ํด๋Ÿฌ์Šคํ„ฐ์— ์ „๋‹ฌํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž๋™ํ™”ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ๋จผ์ € YAML ํŒŒ์ผ์—์„œ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๋ฅผ ์„ค๋ช…ํ•œ ํ›„ ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. garden dev. ๊ทธ๋…€๋Š” ๋ชจ๋“  ๋งˆ์ˆ ์„ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค:

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

์ด ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์š” ์ดˆ์ ์€ ๊ฐœ๋ฐœ ํŒ€๊ณผ ์›๊ฒฉ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๊ตฌ์ถ• ๋ฐ ํ…Œ์ŠคํŠธ ๋‹จ๊ณ„ ์ค‘ ์ผ๋ถ€๊ฐ€ ์ด๋ฏธ ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด Garden์—์„œ ์บ์‹œ๋œ ๊ฒฐ๊ณผ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ „์ฒด ํ”„๋กœ์„ธ์Šค ์†๋„๊ฐ€ ํฌ๊ฒŒ ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ๋ชจ๋“ˆ์€ ์ปจํ…Œ์ด๋„ˆ, Maven ์ปจํ…Œ์ด๋„ˆ, Helm ์ฐจํŠธ, ๋งค๋‹ˆํŽ˜์ŠคํŠธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. kubectl apply ๋˜๋Š” OpenFaaS ๊ธฐ๋Šฅ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์›๊ฒฉ Git ์ €์žฅ์†Œ์—์„œ ๋ชจ๋“  ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“ˆ์€ ์„œ๋น„์Šค, ์ž‘์—… ๋ฐ ํ…Œ์ŠคํŠธ๋ฅผ ์ •์˜ํ•  ์ˆ˜๋„ ์ •์˜ํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋น„์Šค์™€ ์ž‘์—…์€ ์ข…์†์„ฑ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํŠน์ • ์„œ๋น„์Šค์˜ ๋ฐฐํฌ ์ˆœ์„œ๋ฅผ ๊ฒฐ์ •ํ•˜๊ณ  ์ž‘์—… ๋ฐ ํ…Œ์ŠคํŠธ์˜ ์‹œ์ž‘์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

Kubernetes์—์„œ ์‹คํ–‰๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ๋„๊ตฌ
์ •์›์šฉ ํŒจ๋„

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

๊ฒฐ๋ก 

๋ฌผ๋ก  Kubernetes์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ณ  ๋””๋ฒ„๊น…ํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ ๋ชฉ๋ก์€ ์ด์— ๊ตญํ•œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ณ„๋„์˜ ๊ธฐ์‚ฌ๋Š” ์•„๋‹ˆ๋”๋ผ๋„ ์ตœ์†Œํ•œ ์–ธ๊ธ‰ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š” ํ›จ์”ฌ ๋” ์œ ์šฉํ•˜๊ณ  ์‹ค์šฉ์ ์ธ ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌด์—‡์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€, ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€, ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ–ˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”!

PS

๋ธ”๋กœ๊ทธ์—์„œ๋„ ์ฝ์–ด๋ณด์„ธ์š”.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€