#!/bin/bash # Variables RESOURCE_GROUP="travel-planner" AKS_CLUSTER="travelplanneraks" ACR_NAME="travelplannerregistry" # Nom en minuscules sans tirets NAMESPACE="travel-planner" IMAGE_NAME="travel-planner" IMAGE_TAG="latest" LOCATION="eastus" echo "==== Déploiement Azure - Création des ressources ====" az login # Étape 1: Créer le groupe de ressources s'il n'existe pas echo "Création du groupe de ressources..." az group create --name $RESOURCE_GROUP --location $LOCATION || exit 1 # Étape 2: Créer le registre de conteneurs Azure (ACR) echo "Création du registre de conteneurs Azure..." az acr create --resource-group $RESOURCE_GROUP --name $ACR_NAME --sku Basic || exit 1 # Étape 3: Créer le cluster AKS echo "Création du cluster AKS (cela peut prendre plusieurs minutes)..." az aks create \ --resource-group $RESOURCE_GROUP \ --name $AKS_CLUSTER \ --node-count 1 \ --enable-addons monitoring \ --generate-ssh-keys \ --attach-acr $ACR_NAME # Étape 4: Connexion au cluster AKS echo "Connexion au cluster AKS..." az aks get-credentials --resource-group $RESOURCE_GROUP --name $AKS_CLUSTER || exit 1 # Étape 5: Créer le namespace Kubernetes echo "Création du namespace Kubernetes..." kubectl create namespace $NAMESPACE || true # Étape 6: Construire et pousser l'image Docker vers ACR echo "Construction et publication de l'image Docker..." # Se connecter à l'ACR az acr login --name $ACR_NAME # Taguer l'image avec le nom de l'ACR docker pull chabooo/travel-planner:latest docker tag chabooo/travel-planner:latest ${ACR_NAME}.azurecr.io/${IMAGE_NAME} docker push ${ACR_NAME}.azurecr.io/${IMAGE_NAME} # Étape 7: Mise à jour du fichier deployment.yaml pour utiliser l'image de l'ACR echo "Mise à jour du fichier deployment.yaml..." sed -i "s|image:.*|image: ${ACR_NAME}.azurecr.io/${IMAGE_NAME}|" k8s/deployment.yaml # Étape 8: Appliquer les ressources Kubernetes echo "Déploiement des ressources Kubernetes..." kubectl apply -f k8s/namespace.yaml -n $NAMESPACE kubectl apply -f k8s/secret.yaml -n $NAMESPACE kubectl apply -f k8s/persistent-volume.yaml -n $NAMESPACE kubectl apply -f k8s/persistent-volume-claim.yaml -n $NAMESPACE kubectl apply -f k8s/postgres-service.yaml -n $NAMESPACE kubectl apply -f k8s/statefulset.yaml -n $NAMESPACE kubectl apply -f k8s/deployment.yaml -n $NAMESPACE kubectl apply -f k8s/service.yaml -n $NAMESPACE # Étape 9: Attendre que les pods soient prêts echo "Attente du déploiement des pods..." kubectl wait --namespace $NAMESPACE --for=condition=ready pod -l app=postgres --timeout=300s kubectl wait --namespace $NAMESPACE --for=condition=ready pod -l app=travel-planner --timeout=300s # Étape 10: Afficher l'URL d'accès echo "Application déployée. URL d'accès:" kubectl get svc travel-planner -n $NAMESPACE -o jsonpath='{.status.loadBalancer.ingress[0].ip}' echo "" echo "==== Déploiement Azure terminé ===="