์ด์์ ๋ํ ํ๋์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ๋ง์ ์๊ธํ ๋น์ฆ๋์ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ์ปจํ
์ด๋์ ์ค์ผ์คํธ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณต์กํ ํ๋ก์ ํธ๋ฅผ ์ฝ๊ฒ ํ์ฅํ๊ณ ์ ๋ฒ์ ์ถ์๋ฅผ ๋จ์ํํ๋ฉฐ ์์ ์ฑ์ ๋์ผ ์ ์์ง๋ง ๋์์ ๊ฐ๋ฐ์์๊ฒ ์ถ๊ฐ์ ์ธ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํฉ๋๋ค. ํ๋ก๊ทธ๋๋จธ๋ ์ฐ์ ์์ ์ ์ฝ๋(์ํคํ
์ฒ, ํ์ง, ์ฑ๋ฅ, ์ฐ์ํจ)์ ๊ด์ฌ์ ๊ฐ์ง๋๋ค. 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
๊ตฌ์ฑ์ ๋ชจ๋ํฐ๋งํ๊ณ ์คํํ๋
๋จ์ ๊ฒ์ 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์์๋ง ์ง์์ด ๊ฐ๋ฅํฉ๋๋ค.
ํ๋ก์ธ์ค๋ฅผ ๋๋ฒ๊น
ํ๊ธฐ ์ํด Squash๋ ํด๋ฌ์คํฐ ๋
ธ๋์์ ๊ถํ ์๋ ์ปจํ
์ด๋๋ฅผ ์คํํ๋ฏ๋ก ๋จผ์ ๊ธฐ๋ฅ์ ์์งํด์ผ ํฉ๋๋ค.
์๋ฒฝํ ์๋ฃจ์
๊ฐ๋ฐ์์ ๋ง์ ์๊ตฌ ์ฌํญ์ ์ฆ์ ์ถฉ์กฑํ๋๋ก ์ค๊ณ๋ ๋ณด๋ค "๋๊ท๋ชจ" ํ๋ก์ ํธ์ธ ์คํฌ๋ก ๋์ด๊ฐ๊ฒ ์ต๋๋ค.
NB: ๋ฌผ๋ก ์ด ๋ชฉ๋ก์๋ ์คํ ์์ค ์ ํธ๋ฆฌํฐ๋ฅผ ์ํ ๊ณต๊ฐ์ด ์์ต๋๋ค.
๋ฐ๋ธ์คํ์ด์ค
- ์ต์ข ์ : Kubernetes์์ ์์ ์ ์์ํ๊ณ ์ถ์ง๋ง ์ ๊ธ์ ๊น์ด ๋ค์ด๊ฐ๊ณ ์ถ์ง ์์ ์ฌ๋๋ค์ ์ํ.
-
GitHub์ . - ๊ฐ๋ตํ GH ํต๊ณ: ๋ณ 630๊ฐ, ์ปค๋ฐ 1912๊ฐ, ๊ธฐ์ฌ์ 13๋ช .
- ์ธ์ด: ๊ฐ์ธ์.
- ๋ผ์ด์ผ์ค: ์ํ์น ๋ผ์ด์ผ์ค 2.0.
ํ ๊ฐ๋ฐ์ ์ํด Kubernetes์ ํจ๊ป ๊ด๋ฆฌํ ํด๋ฌ์คํฐ๋ฅผ ์ ๊ณตํ๋ ๋๋ช ์ ํ์ฌ์ ์๋ฃจ์ ์ ๋๋ค. ์ด ์ ํธ๋ฆฌํฐ๋ ์์ ์ฉ ํด๋ฌ์คํฐ์ฉ์ผ๋ก ๋ง๋ค์ด์ก์ง๋ง ๋ค๋ฅธ ํด๋ฌ์คํฐ์๋ ์ ์๋ํฉ๋๋ค.
๋ช
๋ น์ ์คํํ ๋ devspace init
ํ๋ก์ ํธ ์นดํ๋ก๊ทธ์์ ๋ค์ ์ฌํญ์ด ๋ํํ์ผ๋ก ์ ๊ณต๋ฉ๋๋ค.
- ์๋ ์ค์ธ Kubernetes ํด๋ฌ์คํฐ๋ฅผ ์ ํํ๊ณ ,
- ๊ธฐ์กด ์ฌ์ฉ
Dockerfile
(๋๋ ์ ๊ฒ์ ์์ฑํ์ฌ) ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ปจํ ์ด๋๋ฅผ ์์ฑํ๊ณ , - ์ปจํ ์ด๋ ์ด๋ฏธ์ง ๋ฑ์ ์ ์ฅํ ์ ์ฅ์๋ฅผ ์ ํํฉ๋๋ค.
์ด๋ฌํ ๋ชจ๋ ์ค๋น ๋จ๊ณ๊ฐ ๋๋๋ฉด ๋ค์ ๋ช
๋ น์ ์คํํ์ฌ ๊ฐ๋ฐ์ ์์ํ ์ ์์ต๋๋ค. devspace dev
. ์ปจํ
์ด๋๋ฅผ ๋น๋ํ๊ณ , ๋ฆฌํฌ์งํ ๋ฆฌ์ ์
๋ก๋ํ๊ณ , ํด๋ฌ์คํฐ์ ๋ฐฐํฌ๋ฅผ ๋กค์์ํ๊ณ , ๋ก์ปฌ ๋๋ ํฐ๋ฆฌ์ ์ปจํ
์ด๋์ ํฌํธ ์ ๋ฌ ๋ฐ ๋๊ธฐํ๋ฅผ ์์ํฉ๋๋ค.
์ ํ์ ์ผ๋ก ํฐ๋ฏธ๋์ ์ปจํ ์ด๋๋ก ์ด๋ํ๋ผ๋ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค. ์ค์ ๋ก ์ปจํ ์ด๋๋ sleep ๋ช ๋ น์ผ๋ก ์์ํ๊ณ ์ค์ ํ ์คํธ๋ฅผ ์ํด์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋์ผ๋ก ์์ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ฑฐ๋ถํด์๋ ์ ๋ฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก ํ์ devspace deploy
์ ํ๋ฆฌ์ผ์ด์
๊ณผ ๊ด๋ จ ์ธํ๋ผ๋ฅผ ํด๋ฌ์คํฐ์ ๋กค์์ํ ํ ๋ชจ๋ ๊ฒ์ด ์ ํฌ ๋ชจ๋์์ ์๋ํ๊ธฐ ์์ํฉ๋๋ค.
๋ชจ๋ ํ๋ก์ ํธ ๊ตฌ์ฑ์ ํ์ผ์ ์ ์ฅ๋ฉ๋๋ค. devspace.yaml
. ๊ฐ๋ฐ ํ๊ฒฝ ์ค์ ์ธ์๋ ํ์ค 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 ์ปจํ
์ด๋๋ ๋ก์ปฌ ๋๋ ์๊ฒฉ์ผ๋ก ๊ตฌ์ถํ ์ ์์ต๋๋ค.
์ด์ ๋ณ๋๋ก ์ปจํ ์ด๋ ํ ์คํธ ๊ฐ๋ฅ์ฑ์ ์ฃผ๋ชฉํ ๊ฐ์น๊ฐ ์์ต๋๋ค. ์ด๋ฏธ ์ธ๊ธํ ์ปจํ ์ด๋ ๊ตฌ์กฐ ํ ์คํธ ํ๋ ์์ํฌ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ฆ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
- ์ข ๋ฃ ์ํ๋ฅผ ์ถ์ ํ๊ณ ๋ช ๋ น์ ํ ์คํธ ์ถ๋ ฅ์ ํ์ธํ์ฌ ์ปจํ ์ด๋ ์ปจํ ์คํธ์์ ๋ช ๋ น์ ์คํํฉ๋๋ค.
- ์ปจํ ์ด๋์ ํ์ผ์ด ์๋์ง ํ์ธํ๊ณ ์ง์ ๋ ์์ฑ๊ณผ ์ผ์นํฉ๋๋ค.
- ์ ๊ท์์ ์ฌ์ฉํ์ฌ ํ์ผ ๋ด์ฉ์ ์ ์ดํฉ๋๋ค.
- ์ด๋ฏธ์ง ๋ฉํ๋ฐ์ดํฐ ํ์ธ(
ENV
,ENTRYPOINT
,VOLUMES
๋ฑ). - ๋ผ์ด์ผ์ค ํธํ์ฑ์ ํ์ธํ๋ ์ค์ ๋๋ค.
์ปจํ ์ด๋์ ํ์ผ ๋๊ธฐํ๋ ๊ฐ์ฅ ์ต์ ์ ๋ฐฉ์์ผ๋ก ์ํ๋์ง ์์ต๋๋ค. Skaffold๋ ๋จ์ํ ์์ค๊ฐ ํฌํจ๋ ์์นด์ด๋ธ๋ฅผ ์์ฑํ๊ณ ๋ณต์ฌํ ํ ์ปจํ ์ด๋์ ์์ถ์ ํ๋๋ค(tar๋ฅผ ์ค์นํด์ผ ํจ). ๋ฐ๋ผ์ ์ฃผ์ ์์ ์ด ์ฝ๋ ๋๊ธฐํ๋ผ๋ฉด ์ ๋ฌธ ์๋ฃจ์ (ksync)์ ์ฐพ๋ ๊ฒ์ด ์ข์ต๋๋ค.
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์ ์ฌ์ฉ์์๊ฒ ์๋ฆ๋ค์ด ๋์๋ณด๋๋ฅผ ์ ๊ณตํฉ๋๋ค(ํ์ฌ
์ ์์ฉ ํจ๋
๋ํ ์ด ๋๊ตฌ์๋ ์คํฌ๋ฆฝํธ ๋ณ๊ฒฝ ์ฌํญ์ ํด๋ฌ์คํฐ์ ์ปจํ
์ด๋์ ๋๊ธฐํํ๋ ํซ ๋ฆฌ๋ก๋ ๋ชจ๋๋ ์์ด ์ ํ๋ฆฌ์ผ์ด์
๋๋ฒ๊น
ํ๋ก์ธ์ค์ ์๋๋ฅผ ํฌ๊ฒ ๋์
๋๋ค. ์ ์์๋ ์ข์ ๊ฒ์ด ์์ต๋๋ค
๊ฒฐ๋ก
๋ฌผ๋ก Kubernetes์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๊ณ ๋๋ฒ๊น ํ๊ธฐ ์ํ ๋๊ตฌ ๋ชฉ๋ก์ ์ด์ ๊ตญํ๋์ง ์์ต๋๋ค. ๋ณ๋์ ๊ธฐ์ฌ๋ ์๋๋๋ผ๋ ์ต์ํ ์ธ๊ธํ ๊ฐ์น๊ฐ ์๋ ํจ์ฌ ๋ ์ ์ฉํ๊ณ ์ค์ฉ์ ์ธ ์ ํธ๋ฆฌํฐ๊ฐ ๋ง์ด ์์ต๋๋ค. ๋ฌด์์ ์ฌ์ฉํ๊ณ ์๋์ง, ์ด๋ค ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋์ง, ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง ์๋ ค์ฃผ์ธ์!
PS
๋ธ๋ก๊ทธ์์๋ ์ฝ์ด๋ณด์ธ์.
- ยซ
werf - Kubernetes์ CI/CD์ฉ ๋๊ตฌ(๊ฐ์ ๋ฐ ๋น๋์ค ๋ณด๊ณ ์) "; - ยซ
Garden v0.10.0: ๋ ธํธ๋ถ์๋ Kubernetes๊ฐ ํ์ํ์ง ์์ต๋๋ค. "; - ยซ
Kubernetes ํ ๋ฐ ์๋ น: ๋ก์ปฌ ๊ฐ๋ฐ ๋ฐ Telepresence ์ ๋ณด "; - ยซ
Kubernetes ํฌ๋์์ ๋๋ฒ๊น ์ ์ํ kubectl-debug ํ๋ฌ๊ทธ์ธ ".
์ถ์ฒ : habr.com