71 lines
No EOL
2.1 KiB
Bash
Executable file
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 |