#!/bin/bash # 1. Check required tools echo "Checking required tools..." command -v kubectl >/dev/null 2>&1 || { echo "Error: kubectl is not installed"; exit 1; } command -v docker >/dev/null 2>&1 || { echo "Error: Docker is not installed"; exit 1; } # 2. Set Azure Container Registry name ACR_NAME="blogappacr" RESOURCE_GROUP="blog-app-rg" # 3. Log in to Azure Container Registry echo "Logging in to Azure Container Registry..." az acr login --name $ACR_NAME # 4. Build and push Docker image echo "Building and pushing Docker image..." docker build -t ${ACR_NAME}.azurecr.io/blog-app:latest . docker push ${ACR_NAME}.azurecr.io/blog-app:latest # 5. Update deployment file with correct image name echo "Updating deployment file..." sed -i "s|image: .*|image: ${ACR_NAME}.azurecr.io/blog-app:latest|g" deployment.yaml # 6. Deploy to Kubernetes echo "Deploy to Kubernetes..." kubectl apply -f namespace.yaml kubectl apply -f statefulset.yaml kubectl apply -f deployment.yaml kubectl apply -f service.yaml # 7. Wait for services to get external IP echo "Waiting for external IP" EXTERNAL_IP="" while [ -z "$EXTERNAL_IP" ]; do EXTERNAL_IP=$(kubectl get service blog-app-service -n myapp-namespace -o jsonpath='{.status.loadBalancer.ingress[0].ip}' 2>/dev/null) [ -z "$EXTERNAL_IP" ] && sleep 10 done # 8. Display success message echo "" echo "The blog application is now running! You can access it at: http://$EXTERNAL_IP" echo ""