69 lines
1.9 KiB
Bash
69 lines
1.9 KiB
Bash
#!/bin/bash
|
|
# Kubernetes Deployment Script for 3-Node Cluster
|
|
# Usage: ./deploy.sh
|
|
|
|
set -e
|
|
|
|
echo "🚀 Deploying to Kubernetes (3-Node Cluster)..."
|
|
|
|
# Check if kubectl is available
|
|
if ! command -v kubectl &> /dev/null; then
|
|
echo "❌ kubectl not found. Please install kubectl first."
|
|
exit 1
|
|
fi
|
|
|
|
# Check cluster connection
|
|
echo "📡 Checking Kubernetes cluster connection..."
|
|
kubectl cluster-info || {
|
|
echo "❌ Cannot connect to Kubernetes cluster. Please configure kubectl."
|
|
exit 1
|
|
}
|
|
|
|
# Check node count
|
|
NODE_COUNT=$(kubectl get nodes --no-headers | wc -l)
|
|
echo "📊 Cluster has $NODE_COUNT node(s)"
|
|
|
|
# Apply namespace
|
|
echo "📦 Creating namespace..."
|
|
kubectl apply -f manifests/namespace.yaml
|
|
|
|
# Apply secrets
|
|
echo "🔐 Creating secrets..."
|
|
kubectl apply -f manifests/secrets.yaml
|
|
|
|
# Apply FastAPI
|
|
echo "🐍 Deploying FastAPI backend..."
|
|
kubectl apply -f manifests/fastapi-deployment.yaml
|
|
kubectl apply -f manifests/fastapi-service.yaml
|
|
kubectl apply -f manifests/fastapi-hpa.yaml
|
|
|
|
# Apply Workers
|
|
echo "👷 Deploying NATS workers..."
|
|
kubectl apply -f manifests/worker-deployment.yaml
|
|
kubectl apply -f manifests/worker-hpa.yaml
|
|
|
|
# Apply Gateway (optional - only if Gateway API is installed)
|
|
read -p "Deploy Gateway API? (requires Gateway API controller) [y/N] " -n 1 -r
|
|
echo
|
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
echo "🚪 Deploying Gateway API..."
|
|
kubectl apply -f manifests/gateway.yaml
|
|
fi
|
|
|
|
echo ""
|
|
echo "✅ Deployment complete!"
|
|
echo ""
|
|
echo "📋 Check status:"
|
|
echo " kubectl get pods -n nats-backend -o wide"
|
|
echo " kubectl get nodes"
|
|
echo " kubectl get hpa -n nats-backend"
|
|
echo ""
|
|
echo "📊 View pod distribution across nodes:"
|
|
echo " kubectl get pods -n nats-backend -o wide | grep -E 'NAME|fastapi|worker'"
|
|
echo ""
|
|
echo "📝 View logs:"
|
|
echo " kubectl logs -f deployment/fastapi-backend -n nats-backend"
|
|
echo " kubectl logs -f deployment/nats-worker -n nats-backend"
|
|
echo ""
|
|
|