Add sh + dockerfile
This commit is contained in:
parent
407791b14a
commit
b9e376350e
20
sk1/Dockerfile
Normal file
20
sk1/Dockerfile
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
FROM python:3.9-slim
|
||||||
|
|
||||||
|
# Set the working directory to /app
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Copy requirements.txt from the app folder
|
||||||
|
COPY ./app/requirements.txt .
|
||||||
|
|
||||||
|
# Install dependencies
|
||||||
|
RUN pip install -r requirements.txt
|
||||||
|
|
||||||
|
# Copy the entire app folder into the container
|
||||||
|
COPY ./app /app
|
||||||
|
|
||||||
|
# Expose port 5000
|
||||||
|
EXPOSE 5000
|
||||||
|
|
||||||
|
# Run the app
|
||||||
|
CMD ["python", "app.py"]
|
||||||
|
|
78
sk1/deploy.sh
Normal file
78
sk1/deploy.sh
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
#!/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é ===="
|
||||||
|
|
14
sk1/prepare-app.sh
Normal file
14
sk1/prepare-app.sh
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
echo "Preparing app"
|
||||||
|
|
||||||
|
# build image Docker
|
||||||
|
docker build -t chabooo/travel-planner:latest .
|
||||||
|
|
||||||
|
echo "Sucessfuly built"
|
||||||
|
|
||||||
|
# push docker image
|
||||||
|
docker push chabooo/travel-planner:latest
|
||||||
|
|
||||||
|
echo "sucessfuly pushed"
|
||||||
|
|
||||||
|
echo "Preparation completed."
|
Loading…
Reference in New Issue
Block a user