79 lines
2.9 KiB
Bash
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é ===="
|
|
|