43 lines
1.4 KiB
Bash
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 "" |