Guide Complet : Déploiement Azure et Développement IBIS-X
Ce guide vous explique comment déployer automatiquement IBIS-X sur Azure avec Terraform, puis développer en continu avec les outils locaux.
🎯 Vue d’ensemble du workflow
IBIS-X utilise un workflow en 2 niveaux distincts :
Infrastructure Cloud (Azure) | Développement Local |
---|---|
🏗️ Une fois ou lors de recréation |
👨💻 Quotidien pour développer |
Terraform automatise tout |
Make + Minikube comme d’habitude |
15 minutes d’installation |
2-3 minutes de démarrage |
Production-ready avec SSL/monitoring |
Hot reload et développement rapide |
🚀 Étape 1 : Déploiement Infrastructure Azure
Prérequis système
Avant de commencer, installez les outils requis :
- Windows (WSL recommandé)
-
# Installer WSL2 si pas encore fait wsl --install # Dans WSL, installer les outils # Azure CLI curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash # Terraform wget https://releases.hashicorp.com/terraform/1.6.0/terraform_1.6.0_linux_amd64.zip unzip terraform_1.6.0_linux_amd64.zip sudo mv terraform /usr/local/bin/ # kubectl curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" chmod +x kubectl sudo mv kubectl /usr/local/bin/ # Docker curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh # jq sudo apt-get install jq
- Linux/Ubuntu
-
# Azure CLI curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash # Terraform wget https://releases.hashicorp.com/terraform/1.6.0/terraform_1.6.0_linux_amd64.zip unzip terraform_1.6.0_linux_amd64.zip sudo mv terraform /usr/local/bin/ # kubectl curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" chmod +x kubectl sudo mv kubectl /usr/local/bin/ # Docker curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh # jq sudo apt-get install jq
- macOS
-
# Homebrew (si pas installé) /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # Tous les outils brew install azure-cli terraform kubectl docker jq
Compte Azure requis
Vous devez avoir :
-
✅ Subscription Azure active (essai gratuit suffisant)
-
✅ Permissions Contributor/Owner sur la subscription
-
✅ Quota suffisant (minimum 2 vCPUs)
Vérifier les quotas
|
Configuration Terraform
-
Copiez le template de configuration :
cd terraform/azure-infrastructure cp terraform.tfvars.example terraform.tfvars
-
Modifiez selon vos besoins :
# Éditeur de votre choix nano terraform.tfvars # ou code terraform.tfvars
-
Configurations recommandées :
- Développement/Test
-
# Configuration économique project_name = "IBIS-X" environment = "dev" location = "East US" # Stockage minimal storage_replication_type = "LRS" soft_delete_retention_days = 1 # Kubernetes minimal aks_node_count = 1 aks_node_vm_size = "Standard_B2s" acr_sku = "Basic"
- Production
-
# Configuration production project_name = "IBIS-X" environment = "prod" location = "East US" # Stockage redondant storage_replication_type = "GRS" soft_delete_retention_days = 30 # Kubernetes haute disponibilité aks_node_count = 3 aks_node_vm_size = "Standard_D2s_v3" enable_auto_scaling = true max_node_count = 10 acr_sku = "Premium"
- Économique
-
# Optimisation maximale des coûts project_name = "IBIS-X" environment = "staging" location = "East US" # Instances spot (-60% de coût) spot_instances_enabled = true aks_node_vm_size = "Standard_B2s" log_analytics_retention_days = 7
Déploiement automatisé
Une seule commande déploie TOUT :
# Rendre le script exécutable (Linux/Mac)
chmod +x scripts/deploy-to-azure.sh
# Lancer le déploiement automatique
./scripts/deploy-to-azure.sh
Ce que fait le script automatiquement :
|
Infrastructure créée
Terraform crée automatiquement :
Ressource | Description | Utilité |
---|---|---|
Groupe de ressources |
Container logique pour toutes les ressources |
Organisation et gestion |
Cluster AKS |
Azure Kubernetes Service managé |
Orchestration des conteneurs |
Azure Container Registry |
Registry Docker privé |
Stockage des images applicatives |
Compte de stockage |
Stockage blob avec 3 containers |
Datasets, modèles ML, rapports |
Réseau virtuel |
VNet avec sous-réseaux sécurisés |
Isolation réseau |
IP publique |
Adresse IP statique pour l’accès externe |
Point d’entrée HTTPS |
Log Analytics |
Workspace de monitoring |
Logs centralisés |
Application Insights |
Monitoring des applications |
Métriques et diagnostics |
Rôles RBAC |
Permissions automatiques |
Sécurité et accès |
Vérification du déploiement
Après le déploiement, vérifiez que tout fonctionne :
# Voir l'état de l'infrastructure
cd terraform/azure-infrastructure
terraform output
# Vérifier les pods Kubernetes
kubectl get pods -n IBIS-X
# Vérifier les services
kubectl get services -n IBIS-X
# Tester l'accès à l'application
curl -I http://$(terraform output -raw public_ip_address)
👨💻 Étape 2 : Développement Local Continu
Une fois l’infrastructure Azure créée, vous développez localement avec Minikube comme d’habitude.
Prérequis développement
# Minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# Skaffold
curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64
sudo install skaffold /usr/local/bin/
# Python + dépendances
python3 -m pip install python-dotenv
Commandes de développement
Commande | Description | Utilisation |
---|---|---|
|
Installation complète locale |
Première fois ou reset complet |
|
Comme |
Quand vous voulez les données réelles |
|
Déploiement rapide (Minikube déjà prêt) |
Redéploiement après modifications |
|
Logs temps réel + hot reload |
Développement actif |
|
Arrêt de l’application locale |
Pause développement |
|
Nettoyage complet local |
Reset de l’environnement local |
Workflow développement typique
# 1. Démarrer l'environnement local
make dev
# 2. Développer - les logs s'affichent en temps réel
# Modifier le code... → Hot reload automatique
# 3. Tester l'application
# Frontend: http://localhost:8080
# API: http://localhost:9000
# API Docs: http://localhost:9000/docs
# 4. Arrêter quand terminé
make stop
Hot reload et développement
Quand vous lancez make logs
, Skaffold surveille vos fichiers et redéploie automatiquement :
# Lancer le mode développement avec hot reload
make logs
# Dans un autre terminal, modifier le code
# Skaffold détecte les changements et rebuild automatiquement
Avantages du développement local :
|
🔄 Workflow Complet : Cloud + Local
Scénario 1 : Premier déploiement
# 1. Infrastructure Azure (une fois)
./scripts/deploy-to-azure.sh
# ⏰ ~15 minutes
# 2. Développement local (quotidien)
make dev
# ⏰ ~3 minutes
# 3. Développer...
# Code, test, debug en local
# 4. Pousser vers Azure (quand prêt)
# Le pipeline CI/CD peut automatiser cela
Scénario 2 : Développement quotidien
# Matin : Démarrer l'env local
make dev
# Journée : Développer avec hot reload
make logs
# Modifier code → Changements automatiques
# Soir : Arrêter
make stop
🛠️ Gestion et Maintenance
Mise à jour de l’application Azure
# 1. Récupérer les infos de l'infrastructure
cd terraform/azure-infrastructure
ACR_NAME=$(terraform output -raw acr_name)
# 2. Construire et pousser les nouvelles images
az acr login --name $ACR_NAME
docker build -t $ACR_NAME.azurecr.io/IBIS-X-api-gateway:latest api-gateway/
docker push $ACR_NAME.azurecr.io/IBIS-X-api-gateway:latest
# 3. Redémarrer les pods pour utiliser la nouvelle image
kubectl rollout restart deployment/api-gateway -n IBIS-X
Surveillance et monitoring
# Voir l'état des applications Azure
kubectl get pods -n IBIS-X
kubectl get services -n IBIS-X
# Logs des applications Azure
kubectl logs -f deployment/api-gateway -n IBIS-X
kubectl logs -f deployment/service-selection -n IBIS-X
# Accès aux métriques Azure
az monitor metrics list --resource $AKS_CLUSTER_NAME
Optimisation des coûts
Coûts estimés par configuration :
Pour réduire les coûts :
|
# Arrêter le cluster AKS pour économiser
az aks stop --resource-group $RESOURCE_GROUP --name $AKS_NAME
# Redémarrer quand nécessaire
az aks start --resource-group $RESOURCE_GROUP --name $AKS_NAME
🗑️ Suppression et Nettoyage
Suppression complète Azure
ATTENTION : Cette opération supprime DÉFINITIVEMENT toute l’infrastructure et les données ! |
# Script sécurisé avec triple confirmation
./scripts/destroy-azure-infrastructure.sh
# Le script :
# 1. Demande 3 confirmations
# 2. Nettoie les applications K8s
# 3. Vide les comptes de stockage
# 4. Supprime les images Docker
# 5. Détruit l'infrastructure Azure
# 6. Restaure les fichiers locaux
🔧 Dépannage
Problèmes Infrastructure Azure
Problème | Cause probable | Solution |
---|---|---|
Quota dépassé |
Pas assez de vCPUs disponibles |
Changer de région ou demander augmentation |
Nom déjà pris |
Storage/ACR avec nom existant |
Modifier |
Permissions insuffisantes |
Pas de droits Contributor |
Demander les permissions ou changer de subscription |
Terraform bloqué |
State lock actif |
|
# Diagnostic infrastructure
terraform show
terraform state list
# Vérifier les quotas
az vm list-usage --location "East US"
# Re-authentification Azure
az logout && az login
Problèmes Développement Local
Problème | Cause probable | Solution |
---|---|---|
Minikube ne démarre pas |
Ressources insuffisantes |
Augmenter RAM/CPU allouées |
Images non trouvées |
Docker env mal configuré |
|
Services non accessibles |
Ingress non configuré |
|
Hot reload ne fonctionne pas |
Skaffold non configuré |
Relancer |
# Diagnostic développement local
minikube status
kubectl get pods -n IBIS-X
skaffold version
# Reset Minikube
minikube delete
minikube start --memory 4096 --cpus 2
📊 Référence Rapide
Commandes Infrastructure
# Déployer infrastructure complète
./scripts/deploy-to-azure.sh
# Voir l'état
terraform output
# Mise à jour infrastructure
terraform plan && terraform apply
# Suppression complète
./scripts/destroy-azure-infrastructure.sh
Commandes Développement
# Environnement complet
make dev
# Développement avec données
make dev-with-data
# Rapide (si Minikube prêt)
make quick-dev
# Hot reload
make logs
# Arrêt
make stop
# Nettoyage
make clean
URLs importantes
Service | URL |
---|---|
Application Azure |
|
Frontend Local |
|
API Gateway Local |
|
API Documentation |
|
Portail Azure |
🎉 Félicitations !
Vous maîtrisez maintenant le workflow complet IBIS-X :
-
✅ Infrastructure Azure automatisée avec Terraform
-
✅ Développement local fluide avec Make/Minikube
-
✅ Hot reload pour un développement rapide
-
✅ Monitoring et logs intégrés
-
✅ Optimisation des coûts Azure
-
✅ Suppression sécurisée des ressources
Plus jamais de configuration manuelle ! 🚀