ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ NestJS + Kubernetes & ๋ง์ดํฌ๋ก์๋น์ค ๋ฐฐํฌ: ์ค์ ๊ฐ์ด๋ - NestJS ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ Kubernetes์ ๋ฐฐํฌํ๊ธฐ
octo54 2025. 4. 1. 11:12๐ NestJS + Kubernetes & ๋ง์ดํฌ๋ก์๋น์ค ๋ฐฐํฌ: ์ค์ ๊ฐ์ด๋
3. NestJS ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ Kubernetes์ ๋ฐฐํฌํ๊ธฐ
์ด์ Docker๋ก ์ปจํ
์ด๋ํํ NestJS ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ Kubernetes ํด๋ฌ์คํฐ์ ๋ฐฐํฌํด๋ณด๊ฒ ์ต๋๋ค.
์ด ๊ธ์์๋ ๋ก์ปฌ Kubernetes ํ๊ฒฝ(Minikube ๋๋ Kind)์ ์ค์ ํ๊ณ , Deployment, Service, Ingress ๋ฆฌ์์ค๋ฅผ ๊ตฌ์ฑํ์ฌ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์คํํ๋ ์ ์ฒด ๊ณผ์ ์ ์ค๋ช
ํฉ๋๋ค. ๐
โ 1. Kubernetes ํด๋ฌ์คํฐ ์ค๋น (Minikube ๊ธฐ์ค)
๐ฆ Minikube ์ค์น
# Mac (Homebrew)
brew install minikube
# ์์
minikube start
๐ฆ Docker ์ด๋ฏธ์ง Minikube๋ก ์ ์ก
# Minikube Docker ํ๊ฒฝ ์ค์
eval $(minikube docker-env)
# Docker ์ด๋ฏธ์ง ๋น๋ (Minikube ๋ด์์ ์ฌ์ฉ)
docker build -t api-gateway -f docker/Dockerfile.api-gateway .
docker build -t user-service -f docker/Dockerfile.user-service .
โ 2. Kubernetes ๋งค๋ํ์คํธ ์์ฑ (Deployment + Service)
๐ k8s/api-gateway-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: api-gateway
spec:
replicas: 1
selector:
matchLabels:
app: api-gateway
template:
metadata:
labels:
app: api-gateway
spec:
containers:
- name: api-gateway
image: api-gateway
ports:
- containerPort: 3000
---
apiVersion: v1
kind: Service
metadata:
name: api-gateway
spec:
selector:
app: api-gateway
ports:
- protocol: TCP
port: 3000
targetPort: 3000
type: ClusterIP
๐ k8s/user-service-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: user-service
spec:
replicas: 1
selector:
matchLabels:
app: user-service
template:
metadata:
labels:
app: user-service
spec:
containers:
- name: user-service
image: user-service
ports:
- containerPort: 3001
---
apiVersion: v1
kind: Service
metadata:
name: user-service
spec:
selector:
app: user-service
ports:
- protocol: TCP
port: 3001
targetPort: 3001
type: ClusterIP
โ 3. Kubernetes ๋ฆฌ์์ค ์ ์ฉ
kubectl apply -f k8s/user-service-deployment.yaml
kubectl apply -f k8s/api-gateway-deployment.yaml
์ํ ํ์ธ:
kubectl get pods
kubectl get services
โ 4. API Gateway ์ธ๋ถ ๋ ธ์ถ (NodePort or Ingress)
๐ k8s/api-gateway-service.yaml (NodePort ๋ฐฉ์)
apiVersion: v1
kind: Service
metadata:
name: api-gateway-external
spec:
selector:
app: api-gateway
ports:
- protocol: TCP
port: 3000
targetPort: 3000
nodePort: 30080
type: NodePort
kubectl apply -f k8s/api-gateway-service.yaml
minikube service api-gateway-external
โ ๋ธ๋ผ์ฐ์ ์์ http://<Minikube_IP>:30080/users ์ ์ ์ ์๋ต ํ์ธ ๊ฐ๋ฅ
โ 5. ์๋น์ค ๊ฐ ํต์ ๊ตฌ์ฑ
NestJS ๋ด๋ถ ์ค์ ์์ user-service๋ผ๋ Kubernetes DNS ์ด๋ฆ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๐ apps/api-gateway/main.ts ๋๋ ์ค์ ํ์ผ:
{
transport: Transport.TCP,
options: {
host: 'user-service', // K8s ์๋น์ค ์ด๋ฆ
port: 3001,
}
}
โ user-service๋ผ๋ ์ด๋ฆ์ผ๋ก Kubernetes ํด๋ฌ์คํฐ ๋ด DNS๊ฐ ์๋ ๊ตฌ์ฑ๋์ด ํต์ ๊ฐ๋ฅ
โ 6. ์คํ ๊ฒฐ๊ณผ ํ์ธ
curl http://localhost:30080/users
์๋ต:
[
{ "id": 1, "name": "Alice" },
{ "id": 2, "name": "Bob" }
]
๐ ์ฑ๊ณต์ ์ผ๋ก Kubernetes ํ๊ฒฝ์์ NestJS ๋ง์ดํฌ๋ก์๋น์ค๊ฐ ์๋ํฉ๋๋ค!
โ ๊ฒฐ๋ก : NestJS ๋ง์ดํฌ๋ก์๋น์ค Kubernetes ๋ฐฐํฌ ์๋ฃ
โ
๋ก์ปฌ Kubernetes ํด๋ฌ์คํฐ(Minikube)์์ NestJS ์๋น์ค ์คํ
โ
Deployment, Service, NodePort ๋ฑ ๊ธฐ๋ณธ ๋ฆฌ์์ค ์ ์ฉ
โ
์๋น์ค ๊ฐ ํต์ ์ Kubernetes DNS๋ฅผ ํตํด ์๋ ์ฐ๊ฒฐ
โ
๋ค์ ๋จ๊ณ์์๋ Ingress, ๋๋ฉ์ธ ์ฐ๊ฒฐ, Helm์ ํตํ ๋ฐฐํฌ ์๋ํ๋ฅผ ๋ค๋ฃฐ ์์ ์
๋๋ค
๐ ๋ค์ ๊ธ ์๊ณ : NestJS Kubernetes Ingress + Helm ๋ฐฐํฌ ์๋ํ
๐ ๋ค์ ํธ: 4. Ingress & Helm์ผ๋ก NestJS ํด๋ฌ์คํฐ ๋ฐฐํฌ ์ต์ ํํ๊ธฐ
NestJS Kubernetes ๋ฐฐํฌ,NestJS K8s,NestJS ํด๋ฌ์คํฐ ๋ฐฐํฌ,NestJS Minikube,NestJS Docker Kubernetes,NestJS ๋ง์ดํฌ๋ก์๋น์ค K8s,NestJS ์๋น์ค ๋ฐฐํฌ,NestJS NodePort,NestJS TCP ํต์ ,Kubernetes NestJS ์๋น์ค
'study > ๋ฐฑ์๋' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
- Total
- Today
- Yesterday
- CI/CD
- ๊ด๋ฆฌ์
- Webpack
- nextJS
- fastapi
- LangChain
- ํ๋ก ํธ์๋
- rag
- Prisma
- ์น๊ฐ๋ฐ
- SEO ์ต์ ํ
- Docker
- SEO์ต์ ํ
- kotlin
- seo ์ต์ ํ 10๊ฐ
- PostgreSQL
- NestJS
- AI ์๋ํ
- gatsbyjs
- Ktor
- AI์ฑ๋ด
- github
- ๊ฐ๋ฐ๋ธ๋ก๊ทธ
- App Router
- llm
- REACT
- nodejs
- Next.js
- ์ค๋งํธ ์ปจํธ๋ํธ
- ๋ฐฑ์๋๊ฐ๋ฐ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |