phonebill/deployment/k8s/deploy-all.sh
ondal f12fed5de9 Jenkins 기반 CI/CD 파이프라인 구성
- Kustomize 기반 환경별(dev/staging/prod) 매니페스트 관리
- Jenkins 파이프라인 스크립트 작성 (Podman, Gradle, kubectl 컨테이너)
- SonarQube 코드 품질 분석 및 Quality Gate 연동
- 수동 배포 및 리소스 검증 스크립트 추가
- k8s 매니페스트 구조 재정리 (configmaps, secrets, deployments, services 분리)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 10:23:32 +09:00

104 lines
2.8 KiB
Bash
Executable File

#!/bin/bash
# Minikube 백엔드 서비스 원클릭 배포 스크립트
# 작성자: 최운영(데옵스)
# 작성일: 2025-11-29
set -e
NAMESPACE=phonebill
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
echo "=============================================="
echo " PhoneBill Backend - Minikube 배포 시작"
echo "=============================================="
# 1. Kubernetes Context 확인
echo ""
echo "[1/7] Kubernetes Context 확인..."
CURRENT_CONTEXT=$(kubectl config current-context)
echo "현재 Context: $CURRENT_CONTEXT"
if [[ "$CURRENT_CONTEXT" != "minikube-remote" ]]; then
echo "⚠️ 경고: 현재 Context가 minikube-remote가 아닙니다."
read -p "계속 진행하시겠습니까? (y/N): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo "배포를 취소합니다."
exit 1
fi
fi
# 2. Namespace 생성
echo ""
echo "[2/7] Namespace 생성..."
kubectl create namespace $NAMESPACE --dry-run=client -o yaml | kubectl apply -f -
kubectl config set-context --current --namespace=$NAMESPACE
# 3. Secrets 적용
echo ""
echo "[3/7] Secrets 적용..."
kubectl apply -f "$SCRIPT_DIR/secrets/"
# 4. ConfigMaps 적용
echo ""
echo "[4/7] ConfigMaps 적용..."
kubectl apply -f "$SCRIPT_DIR/configmaps/"
# 5. Deployments 적용
echo ""
echo "[5/7] Deployments 적용..."
kubectl apply -f "$SCRIPT_DIR/deployments/"
# 6. Services 적용
echo ""
echo "[6/7] Services 적용..."
kubectl apply -f "$SCRIPT_DIR/services/"
# 7. Ingress 적용
echo ""
echo "[7/7] Ingress 적용..."
kubectl apply -f "$SCRIPT_DIR/ingress/"
# 배포 상태 대기
echo ""
echo "=============================================="
echo " 배포 상태 확인 중..."
echo "=============================================="
for service in api-gateway user-service bill-service product-service kos-mock; do
echo ""
echo "$service 배포 대기 중..."
kubectl rollout status deployment/$service -n $NAMESPACE --timeout=180s || {
echo "$service 배포 실패"
kubectl describe deployment/$service -n $NAMESPACE
exit 1
}
echo "$service 배포 완료"
done
# 최종 상태 출력
echo ""
echo "=============================================="
echo " 배포 완료!"
echo "=============================================="
echo ""
echo "📦 Pods 상태:"
kubectl get pods -n $NAMESPACE
echo ""
echo "🔗 Services:"
kubectl get svc -n $NAMESPACE
echo ""
echo "🌐 Ingress:"
kubectl get ingress -n $NAMESPACE
echo ""
echo "=============================================="
echo " 접속 방법"
echo "=============================================="
echo ""
echo "API Gateway Ingress Host:"
echo " phonebill-api.72.155.72.236.nip.io"
echo ""
echo "Health Check:"
echo " curl http://phonebill-api.72.155.72.236.nip.io/actuator/health"
echo ""