stock-bot/apps/wcag-ada/scripts/deploy-k8s.sh
2025-06-28 11:11:34 -04:00

71 lines
No EOL
2.1 KiB
Bash
Executable file

#!/bin/bash
set -e
# Script to deploy to Kubernetes
NAMESPACE=${NAMESPACE:-"wcag-ada"}
ENVIRONMENT=${ENVIRONMENT:-"staging"}
echo "Deploying WCAG-ADA to Kubernetes..."
echo "Namespace: $NAMESPACE"
echo "Environment: $ENVIRONMENT"
# Get the script directory
SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
K8S_DIR="$SCRIPT_DIR/../k8s"
# Create namespace if it doesn't exist
kubectl create namespace $NAMESPACE --dry-run=client -o yaml | kubectl apply -f -
# Apply configurations
echo "Applying configurations..."
kubectl apply -f "$K8S_DIR/configmap.yaml" -n $NAMESPACE
# Apply secrets (only if file exists)
if [ -f "$K8S_DIR/secrets-$ENVIRONMENT.yaml" ]; then
echo "Applying environment-specific secrets..."
kubectl apply -f "$K8S_DIR/secrets-$ENVIRONMENT.yaml" -n $NAMESPACE
else
echo "Warning: No environment-specific secrets found. Using default secrets."
kubectl apply -f "$K8S_DIR/secrets.yaml" -n $NAMESPACE
fi
# Deploy services
echo "Deploying PostgreSQL..."
kubectl apply -f "$K8S_DIR/postgres.yaml" -n $NAMESPACE
echo "Deploying Redis..."
kubectl apply -f "$K8S_DIR/redis.yaml" -n $NAMESPACE
# Wait for databases to be ready
echo "Waiting for databases to be ready..."
kubectl wait --for=condition=ready pod -l app=postgres -n $NAMESPACE --timeout=300s
kubectl wait --for=condition=ready pod -l app=redis -n $NAMESPACE --timeout=300s
# Deploy applications
echo "Deploying API..."
kubectl apply -f "$K8S_DIR/api.yaml" -n $NAMESPACE
echo "Deploying Worker..."
kubectl apply -f "$K8S_DIR/worker.yaml" -n $NAMESPACE
echo "Deploying Dashboard..."
kubectl apply -f "$K8S_DIR/dashboard.yaml" -n $NAMESPACE
# Apply ingress
echo "Applying Ingress rules..."
kubectl apply -f "$K8S_DIR/ingress.yaml" -n $NAMESPACE
# Wait for deployments
echo "Waiting for deployments to be ready..."
kubectl rollout status deployment/wcag-ada-api -n $NAMESPACE
kubectl rollout status deployment/wcag-ada-worker -n $NAMESPACE
kubectl rollout status deployment/wcag-ada-dashboard -n $NAMESPACE
echo "Deployment complete!"
echo ""
echo "Services deployed:"
kubectl get services -n $NAMESPACE
echo ""
echo "Pods status:"
kubectl get pods -n $NAMESPACE