#!/bin/bash # Kubernetes deployment script set -e NAMESPACE="samba-api" IMAGE_TAG=${1:-latest} echo "Deploying Samba API to Kubernetes..." # Apply namespace first echo "Creating namespace..." kubectl apply -f k8s/namespace.yaml # Apply RBAC echo "Applying RBAC configuration..." kubectl apply -f k8s/rbac.yaml # Apply ConfigMap and Secrets echo "Applying configuration..." kubectl apply -f k8s/configmap.yaml # Apply Samba DC StatefulSet echo "Deploying Samba DC..." kubectl apply -f k8s/samba-dc.yaml # Wait for Samba DC to be ready echo "Waiting for Samba DC to be ready..." kubectl wait --for=condition=Ready pod -l app=samba-dc -n ${NAMESPACE} --timeout=300s # Apply API deployment echo "Deploying Samba API..." kubectl apply -f k8s/deployment.yaml # Apply services echo "Applying services..." kubectl apply -f k8s/service.yaml # Apply HPA and PDB echo "Applying autoscaling configuration..." kubectl apply -f k8s/hpa.yaml # Wait for deployment to be ready echo "Waiting for deployment to be ready..." kubectl wait --for=condition=Available deployment/samba-api -n ${NAMESPACE} --timeout=300s echo "Deployment completed successfully!" # Show deployment status kubectl get all -n ${NAMESPACE} echo "" echo "To access the API:" echo "kubectl port-forward svc/samba-api-service 8000:80 -n ${NAMESPACE}" echo "Then visit: http://localhost:8000/docs"