#!/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_HOST}" echo "" fi