mirror of
https://github.com/ktds-dg0501/kt-event-marketing.git
synced 2025-12-06 10:46:23 +00:00
117 lines
3.4 KiB
Bash
117 lines
3.4 KiB
Bash
#!/bin/bash
|
|
|
|
# Kubernetes 배포 스크립트
|
|
# 프로토타입을 Kubernetes 클러스터에 배포합니다.
|
|
|
|
set -e
|
|
|
|
# 변수 설정
|
|
NAMESPACE="${KUBE_NAMESPACE:-kt-event-marketing}"
|
|
MANIFEST_DIR="$(dirname "$0")/k8s"
|
|
|
|
echo "================================="
|
|
echo "프로토타입 Kubernetes 배포"
|
|
echo "================================="
|
|
echo "네임스페이스: ${NAMESPACE}"
|
|
echo "매니페스트 위치: ${MANIFEST_DIR}"
|
|
echo ""
|
|
|
|
# kubectl 확인
|
|
if ! command -v kubectl &> /dev/null; then
|
|
echo "❌ kubectl이 설치되어 있지 않습니다."
|
|
exit 1
|
|
fi
|
|
|
|
# 클러스터 연결 확인
|
|
if ! kubectl cluster-info &> /dev/null; then
|
|
echo "❌ Kubernetes 클러스터에 연결할 수 없습니다."
|
|
echo " kubectl 설정을 확인해주세요."
|
|
exit 1
|
|
fi
|
|
|
|
echo "✅ Kubernetes 클러스터 연결 확인"
|
|
echo ""
|
|
|
|
# 배포 옵션 선택
|
|
echo "배포 옵션을 선택하세요:"
|
|
echo "1) 전체 배포 (deployment + service + ingress)"
|
|
echo "2) 업데이트 (deployment만)"
|
|
echo "3) 삭제"
|
|
read -p "선택 (1-3): " -n 1 -r
|
|
echo ""
|
|
echo ""
|
|
|
|
case $REPLY in
|
|
1)
|
|
echo "🚀 전체 리소스 배포 중..."
|
|
kubectl apply -f ${MANIFEST_DIR}/deployment.yaml -n ${NAMESPACE}
|
|
kubectl apply -f ${MANIFEST_DIR}/service.yaml -n ${NAMESPACE}
|
|
kubectl apply -f ${MANIFEST_DIR}/ingress.yaml -n ${NAMESPACE}
|
|
echo "✅ 배포 완료"
|
|
;;
|
|
2)
|
|
echo "🔄 Deployment 업데이트 중..."
|
|
kubectl apply -f ${MANIFEST_DIR}/deployment.yaml -n ${NAMESPACE}
|
|
kubectl rollout status deployment/kt-event-prototype -n ${NAMESPACE}
|
|
echo "✅ 업데이트 완료"
|
|
;;
|
|
3)
|
|
echo "🗑️ 리소스 삭제 중..."
|
|
kubectl delete -f ${MANIFEST_DIR}/ingress.yaml -n ${NAMESPACE} --ignore-not-found
|
|
kubectl delete -f ${MANIFEST_DIR}/service.yaml -n ${NAMESPACE} --ignore-not-found
|
|
kubectl delete -f ${MANIFEST_DIR}/deployment.yaml -n ${NAMESPACE} --ignore-not-found
|
|
echo "✅ 삭제 완료"
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "❌ 잘못된 선택입니다."
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
echo ""
|
|
echo "================================="
|
|
echo "배포 상태 확인"
|
|
echo "================================="
|
|
|
|
# Pod 상태 확인
|
|
echo ""
|
|
echo "📦 Pod 상태:"
|
|
kubectl get pods -n ${NAMESPACE} -l app=kt-event-prototype
|
|
|
|
# Service 상태 확인
|
|
echo ""
|
|
echo "🌐 Service 상태:"
|
|
kubectl get svc -n ${NAMESPACE} -l app=kt-event-prototype
|
|
|
|
# Ingress 상태 확인
|
|
echo ""
|
|
echo "🚪 Ingress 상태:"
|
|
kubectl get ingress -n ${NAMESPACE} -l app=kt-event-prototype
|
|
|
|
echo ""
|
|
echo "================================="
|
|
echo "배포 완료"
|
|
echo "================================="
|
|
echo ""
|
|
echo "유용한 명령어:"
|
|
echo " # Pod 로그 확인"
|
|
echo " kubectl logs -n ${NAMESPACE} -l app=kt-event-prototype -f"
|
|
echo ""
|
|
echo " # Pod 상세 정보"
|
|
echo " kubectl describe pods -n ${NAMESPACE} -l app=kt-event-prototype"
|
|
echo ""
|
|
echo " # 서비스 상태 확인"
|
|
echo " kubectl get all -n ${NAMESPACE} -l app=kt-event-prototype"
|
|
echo ""
|
|
|
|
# Ingress 호스트 정보 표시
|
|
INGRESS_HOST=$(kubectl get ingress kt-event-prototype -n ${NAMESPACE} -o jsonpath='{.spec.rules[0].host}' 2>/dev/null)
|
|
if [ -n "$INGRESS_HOST" ]; then
|
|
echo "🌍 접속 URL: http://${INGRESS_HOST}"
|
|
echo ""
|
|
echo "⚠️ /etc/hosts 파일에 다음 내용 추가 필요 (로컬 테스트):"
|
|
echo " <INGRESS_IP> ${INGRESS_HOST}"
|
|
echo ""
|
|
fi
|