๋ก์ปฌ ์ฟ ๋ฒ๋คํฐ์ค(kind) ํ๊ฒฝ ๊ตฌ์ถ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ ๊ฐ์ด๋์ ๋๋ค.
- ๋ค์ค ๋ ธ๋(Multi-node) ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ๋ก์ปฌ์ ๊ตฌ์ถํ๋ค.
k9s๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ฌ์คํฐ ์ํ๋ฅผ ์ง๊ด์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ๋ค.- ์ํ NestJS ์ ํ๋ฆฌ์ผ์ด์ ์ ์ปจํ ์ด๋ํํ๊ณ , **๋ฐ์ดํฐ๋ฅผ ์์์ ์ผ๋ก ์ ์ฅ(PV/PVC)**ํ๋ค.
Helm์ ์ฌ์ฉํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฟ ๋ฒ๋คํฐ์ค์ ๋ฐฐํฌํ๋ค.- ์ธ๋ถ(๋ก์ปฌ ๋จธ์ )์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ํ๋ค.
- ํ๊ฒฝ ๋ณ์, ConfigMap, Secret์ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ค์ ์ ๊ด๋ฆฌํ๋ค.
- RBAC๋ฅผ ํตํด ์ฟ ๋ฒ๋คํฐ์ค ๋ฆฌ์์ค ์ ๊ทผ ๊ถํ์ ์ ์ดํ๋ค.
- ์ค์ต ๊ณผ์ ์์ ์ฌ์ฉ๋ ์ฟ ๋ฒ๋คํฐ์ค์ ํต์ฌ ๊ฐ๋ ์ ๋ช ํํ ์ดํดํ๋ค.
์ด ๊ฐ์ด๋๋ ๊ฐ ๋จ๊ณ๋ณ๋ก ์์ธํ ์ค๋ช ์ ๋ด์ ๋ณ๋์ ๋ฌธ์๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
- 1๋จ๊ณ: ์ค๋น๋ฌผ & k9s ์ค์น
- 2๋จ๊ณ: ๋ค์ค ๋ ธ๋ ํด๋ฌ์คํฐ ์์ฑ
- 3๋จ๊ณ: NestJS ์ฑ ์ปจํ ์ด๋ํ
- 4๋จ๊ณ: Helm์ผ๋ก ์ฑ ๋ฐฐํฌ
- 5๋จ๊ณ: ์ธ๋ถ ์ ์ ๋ฐ ์ ๋ฆฌ
- 6๋จ๊ณ: ๋ฐ์ดํฐ ์์์ฑ (PV & PVC)
- 7๋จ๊ณ: ์ค์ ๊ด๋ฆฌ (ํ๊ฒฝ ๋ณ์, ConfigMap, Secret)
- 8๋จ๊ณ: RBAC ์ฌํ ํ์ต
- 9๋จ๊ณ: ์ฟ ๋ฒ๋คํฐ์ค ์ฝ์ด ์ปดํฌ๋ํธ ํ๋ฆ ์ดํดํ๊ธฐ
- ๊ฐ๋ ์ ๋ฆฌ: ์ฟ ๋ฒ๋คํฐ์ค ํต์ฌ ์์ ๋ค์๋ณด๊ธฐ ๐ ๋ง์ง๋ง์ ์ฝ์ด๋ณด์ธ์!
์ด๋ฏธ ๊ฐ๋ ์ ์ต์ํ๋ค๋ฉด ์๋ ๋ช ๋ น์ด๋ก ๋น ๋ฅด๊ฒ ์์ํ ์ ์์ต๋๋ค.
-
ํด๋ฌ์คํฐ ์์ฑ:
# kind-config.yaml ํ์ผ์์ extraPortMappings๋ฅผ ์ ๊ฑฐํ์ต๋๋ค. kind create cluster --name nest-app-cluster --config kind-config.yaml -
Ingress Controller ์ค์น ๋ฐ ํฌํธ ํฌ์๋ฉ:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml kubectl wait --namespace ingress-nginx --for=condition=ready pod --selector=app.kubernetes.io/component=controller --timeout=120s # Ingress Controller ํ๋ ์ด๋ฆ ํ์ธ (์: ingress-nginx-controller-xxxxxxxxxx-yyyyy) # kubectl get pods -n ingress-nginx -l app.kubernetes.io/component=controller -o name # ๋ก์ปฌ 8080 ํฌํธ๋ก ํฌ์๋ฉ (๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ) # kubectl port-forward -n ingress-nginx pod/<YOUR_INGRESS_CONTROLLER_POD_NAME> 8080:80 &
-
Docker ์ด๋ฏธ์ง ๋น๋ ๋ฐ ๋ก๋:
docker build -t my-nest-app:1.0.0 ./nest-app kind load docker-image my-nest-app:1.0.0 --name nest-app-cluster
-
Helm ๋ฐฐํฌ:
helm install my-nest-app ./helm/my-nest-app
-
์ ์ ํ์ธ:
# /etc/hosts ํ์ผ์ "127.0.0.1 my-nest-app.local" ์ถ๊ฐ ํ curl http://my-nest-app.local:8080 # ๋๋ Host ํค๋๋ฅผ ๋ช ์ํ์ฌ ์ ์ # curl -H "Host: my-nest-app.local" http://127.0.0.1:8080
-
ํด๋ฌ์คํฐ ์ญ์ :
kind delete cluster --name nest-app-cluster