zkt25/sk1/deploy.sh

79 lines
2.9 KiB
Bash

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