zkt25/sk1/prepare-app.sh
2025-04-25 11:37:43 +00:00

43 lines
1.4 KiB
Bash

#!/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 ""