본문으로 건너뛰기

Dev 수동 배포 가이드

Jenkins 파이프라인이 작동하지 않거나 긴급하게 특정 모듈만 배포해야 할 때 사용합니다.

사전 준비

# K8s dev 클러스터 접근 확인
kubectl get nodes
kubectl get pods -n dev

# Harbor 로그인
docker login scr.softcamp.co.kr

dev-deploy.sh 스크립트

# 위치
scripts/dev-deploy.sh

# 사용법
./scripts/dev-deploy.sh [api|worker|frontend] [--skip-build]
옵션설명
apiAPI 서비스 빌드 + 배포
workerWorker 서비스 빌드 + 배포
frontendFrontend 빌드 + 배포
--skip-buildGradle/Docker 빌드 생략, 기존 이미지로 K8s만 재배포

사용 예시

# API 전체 빌드 + 배포
./scripts/dev-deploy.sh api

# Worker 이미지 재빌드 없이 K8s rollout만
./scripts/dev-deploy.sh worker --skip-build

# Frontend 배포
./scripts/dev-deploy.sh frontend

모듈별 수동 절차

API 수동 배포

# 1. Gradle 빌드
cd backend
./gradlew :infolineage-api:bootJar -x test --build-cache \
-Dorg.gradle.jvmargs="--enable-preview -Xmx1g"
cd ..

# 2. Docker 빌드 & 푸시
docker build \
-f backend/infolineage-api/Dockerfile \
-t scr.softcamp.co.kr/infolineage/platform-api:latest \
backend/
docker push scr.softcamp.co.kr/infolineage/platform-api:latest

# 3. K8s 배포
kubectl apply -f infra/k8s/dev/configmap.yaml -n dev
kubectl apply -f infra/k8s/dev/secret.yaml -n dev
kubectl apply -f infra/k8s/dev/api-service.yaml -n dev
kubectl apply -f infra/k8s/dev/api-deployment.yaml -n dev
kubectl rollout restart deployment/infolineage-platform-api -n dev
kubectl rollout status deployment/infolineage-platform-api -n dev --timeout=120s

Worker 수동 배포

cd backend
./gradlew :infolineage-worker:bootJar -x test --build-cache \
-Dorg.gradle.jvmargs="--enable-preview -Xmx1g"
cd ..

docker build \
-f backend/infolineage-worker/Dockerfile \
-t scr.softcamp.co.kr/infolineage/platform-worker:latest \
backend/
docker push scr.softcamp.co.kr/infolineage/platform-worker:latest

kubectl apply -f infra/k8s/dev/configmap.yaml -n dev
kubectl apply -f infra/k8s/dev/secret.yaml -n dev
kubectl apply -f infra/k8s/dev/worker-service.yaml -n dev
kubectl apply -f infra/k8s/dev/worker-deployment.yaml -n dev
kubectl rollout restart deployment/infolineage-platform-worker -n dev
kubectl rollout status deployment/infolineage-platform-worker -n dev --timeout=120s

Frontend 수동 배포

docker build \
-f frontend/Dockerfile \
--build-arg VITE_USE_MOCKS=false \
--build-arg VITE_API_BASE_URL=/platform/api \
--build-arg VITE_AUTH_DISABLED=false \
--build-arg VITE_ENABLE_MOCK_FALLBACK=false \
--build-arg VITE_SHIELD_ID_BASE_URL=https://devlogin.softcamp.co.kr \
--build-arg VITE_CLIENT_NAME=InfoLineage \
-t scr.softcamp.co.kr/infolineage/platform-frontend:latest \
frontend/
docker push scr.softcamp.co.kr/infolineage/platform-frontend:latest

kubectl apply -f infra/k8s/dev/frontend-service.yaml -n dev
kubectl apply -f infra/k8s/dev/frontend-deployment.yaml -n dev
kubectl rollout restart deployment/infolineage-platform-frontend -n dev
kubectl rollout status deployment/infolineage-platform-frontend -n dev --timeout=60s

배포 검증

# Pod 상태 확인
kubectl get pods -n dev -l app=infolineage-platform-api
kubectl get pods -n dev -l app=infolineage-platform-worker
kubectl get pods -n dev -l app=infolineage-platform-frontend

# 로그 확인
kubectl logs -n dev -l app=infolineage-platform-api --tail=50 -f
kubectl logs -n dev -l app=infolineage-platform-worker --tail=50 -f

# API health 확인
kubectl exec -n dev deploy/infolineage-platform-api -- \
curl -s http://localhost:8080/actuator/health | jq .

# 외부 접근 확인
curl -s https://devinfolineage.softcamp.co.kr/platform/actuator/health

배포 실패 시 빠른 롤백

# 이전 ReplicaSet으로 즉시 롤백
kubectl rollout undo deployment/infolineage-platform-api -n dev
kubectl rollout undo deployment/infolineage-platform-worker -n dev
kubectl rollout undo deployment/infolineage-platform-frontend -n dev

# 롤백 상태 확인
kubectl rollout status deployment/infolineage-platform-api -n dev

주의: :latest 태그를 사용하므로 rollout undo는 직전 Deployment 스펙으로 돌아갑니다. 이미지 자체를 되돌리려면 이전 이미지를 다시 빌드/푸시해야 합니다.