ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ NestJS + Kubernetes & ๋ง์ดํฌ๋ก์๋น์ค ๋ฐฐํฌ: ์ค์ ๊ฐ์ด๋NestJS CI/CD ์๋ํ๋ก ์ด์ ํจ์จ ๊ทน๋ํ (ArgoCD + GitHub Actions)
octo54 2025. 5. 8. 10:38๐ NestJS + Kubernetes & ๋ง์ดํฌ๋ก์๋น์ค ๋ฐฐํฌ: ์ค์ ๊ฐ์ด๋
24. NestJS CI/CD ์๋ํ๋ก ์ด์ ํจ์จ ๊ทน๋ํ (ArgoCD + GitHub Actions)
NestJS ์ ํ๋ฆฌ์ผ์ด์
์ ์์ ์ ์ผ๋ก ์ด์ํ๋ ค๋ฉด **์ง์์ ํตํฉ ๋ฐ ๋ฐฐํฌ(CI/CD)**๋ฅผ ํตํด ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋น ๋ฅด๊ณ ์์ ํ๊ฒ ๋ฐ์ํ ์ ์์ด์ผ ํฉ๋๋ค.
์ด๋ฒ ๊ธ์์๋ GitHub Actions๋ฅผ ์ด์ฉํ ๋น๋ ์๋ํ์ ArgoCD๋ฅผ ํ์ฉํ Kubernetes ํด๋ฌ์คํฐ ๋ฐฐํฌ ์๋ํ๋ฅผ ์ค์ฌ์ผ๋ก NestJS CI/CD ํ์ดํ๋ผ์ธ ๊ตฌ์ถ ์ ๋ต์ ์๊ฐํฉ๋๋ค. ๐
โ 1. CI/CD ํ์ดํ๋ผ์ธ ๊ตฌ์กฐ
[๊ฐ๋ฐ์๊ฐ ์ฝ๋ ํธ์]
↓
[GitHub Actions]
- ๋น๋ & ํ
์คํธ
- Docker ์ด๋ฏธ์ง ๋น๋ & ํธ์
↓
[ArgoCD]
- GitOps ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝ ๊ฐ์ง
- Kubernetes ํด๋ฌ์คํฐ์ ์๋ ๋ฐฐํฌ
โ 2. GitHub Actions ์ค์ (CI ํํธ)
๐ฆ GitHub Actions ์ค์ ํ์ผ
๐ .github/workflows/ci.yml
name: CI for NestJS
on:
push:
branches: [main]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm run test:ci
- name: Build project
run: npm run build
- name: Set up Docker
uses: docker/setup-buildx-action@v2
- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push Docker image
run: |
docker build -t ${{ secrets.DOCKER_USERNAME }}/nestjs-app:latest .
docker push ${{ secrets.DOCKER_USERNAME }}/nestjs-app:latest
โ 3. ArgoCD ์ค์ (CD ํํธ)
๐ฆ ArgoCD ์ค์น (Kubernetes ํด๋ฌ์คํฐ์)
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
๐ฆ ArgoCD ์ ๊ทผ
kubectl port-forward svc/argocd-server -n argocd 8080:443
- ๋ธ๋ผ์ฐ์ ์ ์: https://localhost:8080
- ๊ธฐ๋ณธ ๋ก๊ทธ์ธ: admin / ์ด๊ธฐ ๋น๋ฐ๋ฒํธ๋ kubectl get pods -n argocd ๋ช ๋ น์ผ๋ก ํ์ธ
โ 4. ArgoCD ์ ํ๋ฆฌ์ผ์ด์ ์์ฑ
๐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์
argocd app create nestjs-app \
--repo https://github.com/your-username/nestjs-app \
--path k8s \
--dest-server https://kubernetes.default.svc \
--dest-namespace default \
--sync-policy automated
๐ ์ ํ๋ฆฌ์ผ์ด์ ์๋ ๋๊ธฐํ ์ค์
argocd app set nestjs-app --sync-policy automated
โ 5. Kubernetes ๋ฐฐํฌ ํ์ผ ๊ตฌ์ฑ
๐ k8s/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nestjs-app
spec:
replicas: 2
selector:
matchLabels:
app: nestjs-app
template:
metadata:
labels:
app: nestjs-app
spec:
containers:
- name: nestjs-app
image: your-docker-id/nestjs-app:latest
ports:
- containerPort: 3000
---
apiVersion: v1
kind: Service
metadata:
name: nestjs-app
spec:
ports:
- port: 80
targetPort: 3000
selector:
app: nestjs-app
โ 6. CI/CD ํ์ดํ๋ผ์ธ ํ ์คํธ
- ์ฝ๋๋ฅผ ์์ ํ๊ณ git push๋ฅผ ์คํํฉ๋๋ค.
- GitHub Actions์์ CI ํ์ดํ๋ผ์ธ์ด ์๋ ์คํ๋์ด Docker ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ Docker Hub์ ํธ์ํฉ๋๋ค.
- ArgoCD๊ฐ ์๋ก์ด ์ด๋ฏธ์ง๋ฅผ ๊ฐ์งํ๊ณ Kubernetes์ ๋ฐฐํฌํฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋์ผ๋ก ์ต์ ์ํ๋ก ๊ฐฑ์ ๋ฉ๋๋ค.
โ ์ฑ๊ณต ์ฌ๋ถ ํ์ธ:
argocd app get nestjs-app
kubectl get pods
โ 7. CI/CD ๊ณ ๋ํ ์ ๋ต
ํญ๋ชฉ ๊ฐ์ ๋ฐฉ๋ฒ
๋ฆด๋ฆฌ์ฆ ๊ด๋ฆฌ | Git ํ๊ทธ ๊ธฐ๋ฐ ๋ฒ์ ๊ด๋ฆฌ (์: v1.0.0) |
๋ธ๋ฃจ๊ทธ๋ฆฐ ๋ฐฐํฌ | Argo Rollouts์ ์ฐ๊ณํ์ฌ ํธ๋ํฝ ๋ฌด์ค๋จ ์ ํ |
๋ชจ๋ํฐ๋ง | Grafana์ ArgoCD ์ฐ๋ํ์ฌ ๋ฐฐํฌ ์ํ ์๊ฐํ |
๋กค๋ฐฑ ์ ๋ต | Git ์ปค๋ฐ ๋จ์๋ก ๋กค๋ฐฑ (argocd app rollback) |
โ 8. CI/CD ๊ตฌ์ถ ์ ์ ์์ฌํญ
- GitHub Actions์ ArgoCD์ ๊ถํ ์ค์ ์ ๋ช ํํ ๊ด๋ฆฌ
- Kubernetes ํด๋ฌ์คํฐ์ ๋ฆฌ์์ค ๊ณผ๋ถํ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด HPA ์ค์ ๊ณ ๋ ค
- ํ ์คํธ ํ๊ฒฝ๊ณผ ํ๋ก๋์ ํ๊ฒฝ์ ๋ถ๋ฆฌํ์ฌ ์ค์ ํ์ผ ๊ด๋ฆฌ (values.dev.yaml, values.prod.yaml)
โ ๊ฒฐ๋ก : CI/CD ์๋ํ๋ก ์ด์ ๋ถ๋ด ์ต์ํ
โ
GitHub Actions๋ก CI ํ์ดํ๋ผ์ธ ๊ตฌ์ฑํ์ฌ ์๋ํ
โ
ArgoCD๋ก GitOps ๊ธฐ๋ฐ CD ๊ด๋ฆฌํ์ฌ ๋ฌด์ค๋จ ๋ฐฐํฌ
โ
Kubernetes ํด๋ฌ์คํฐ์ ์ต์ ํ๋ CI/CD ์ํคํ
์ฒ ๊ตฌ์ถ
โ
๋ฐฐํฌ ์ํ ๋ชจ๋ํฐ๋ง๊ณผ ๋กค๋ฐฑ ์ ๋ต๊น์ง ๊ณ ๋ คํ์ฌ ์์ ์ฑ ํ๋ณด
๋ค์ ๊ธ์์๋ NestJS ํ๋ก์ ํธ์์ Kafka ๊ธฐ๋ฐ ์ค์๊ฐ ๋ฐ์ดํฐ ์คํธ๋ฆฌ๋ฐ ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํฉ๋๋ค! ๐
๐ ๋ค์ ๊ธ ์๊ณ : NestJS + Kafka๋ก ์ค์๊ฐ ๋ฐ์ดํฐ ์คํธ๋ฆฌ๋ฐ ํ์ดํ๋ผ์ธ ๊ตฌ์ถ
๐ ๋ค์ ํธ: 25. NestJS + Kafka ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
NestJS CI/CD,NestJS ArgoCD,NestJS GitHub Actions,NestJS Kubernetes ๋ฐฐํฌ,NestJS CI ์๋ํ,NestJS CD ์๋ํ,NestJS GitOps,NestJS ์๋ ๋ฐฐํฌ,NestJS ArgoCD ์ค์ ,NestJS Docker CI/CD
'study > ๋ฐฑ์๋' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
- Total
- Today
- Yesterday
- ํ๋ก ํธ์๋๋ฉด์
- gatsbyjs
- seo ์ต์ ํ 10๊ฐ
- SEO ์ต์ ํ
- LangChain
- Ktor
- ๊ด๋ฆฌ์
- Docker
- ํ๋ก ํธ์๋
- kotlin
- App Router
- SEO์ต์ ํ
- NestJS
- ์น๊ฐ๋ฐ
- PostgreSQL
- Webpack
- REACT
- nodejs
- llm
- rag
- Next.js
- Python
- ๋ฐฑ์๋๊ฐ๋ฐ
- nextJS
- Prisma
- CI/CD
- AI์ฑ๋ด
- fastapi
- github
- ๊ฐ๋ฐ๋ธ๋ก๊ทธ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 | 31 |