# Améliorations du Déploiement Incus ## Résumé des Améliorations Ce document décrit toutes les améliorations apportées au déploiement Incus pour le rendre entièrement fonctionnel et robuste. ## 1. Configuration Réseau Améliorée ### Problèmes résolus - ✅ Configuration DNS persistante dans les conteneurs - ✅ Configuration automatique des routes par défaut - ✅ Activation du DHCP et DNS managé dans le réseau Incus - ✅ Configuration réseau persistante via systemd-resolved ### Améliorations - Configuration DNS via `/etc/systemd/resolved.conf.d/dns_servers.conf` pour persistance - Configuration DNS directe dans `/etc/resolv.conf` pour effet immédiat - Vérification automatique de la connectivité réseau après configuration - Support de serveurs DNS multiples (8.8.8.8, 1.1.1.1) ## 2. Script de Build Amélioré ### Problèmes résolus - ✅ Meilleure gestion des erreurs de compilation - ✅ Support amélioré de la cross-compilation Rust - ✅ Logs de build sauvegardés pour débogage - ✅ Continuation du build même si un service échoue ### Améliorations - Gestion d'erreurs avec `set -euo pipefail` - Logs de build sauvegardés dans `/tmp/` pour analyse - Détection automatique de la disponibilité de la cross-compilation - Compteur d'erreurs pour afficher le nombre de services ayant échoué - Messages d'erreur plus informatifs avec chemins de logs ## 3. Script de Déploiement Amélioré ### Problèmes résolus - ✅ Configuration réseau automatique et persistante - ✅ Vérification de l'état des conteneurs avant configuration - ✅ Démarrage automatique des services après déploiement - ✅ Vérifications de santé après déploiement - ✅ Gestion robuste des erreurs avec continuation ### Améliorations - Attente intelligente du démarrage des conteneurs (vérification systemd) - Configuration réseau complète (IP, route, DNS) en une seule passe - Vérification de connectivité Internet après configuration réseau - Démarrage automatique des services systemd après déploiement - Vérification de l'état des services après démarrage - Messages d'erreur informatifs avec commandes de débogage ## 4. Configuration Réseau Incus ### Améliorations du Makefile - Configuration automatique du DHCP dans le réseau - Configuration automatique du DNS managé - Vérification et mise à jour de la configuration réseau existante - Vérification des devices du profil avant ajout ### Configuration réseau ```bash ipv4.address=10.10.10.1/24 ipv4.nat=true ipv4.dhcp=true dns.mode=managed dns.nameservers=8.8.8.8,1.1.1.1 ``` ## 5. Commandes de Statut et Vérification ### Nouvelle commande `make incus-status` - Affichage de l'état de tous les conteneurs - Statut détaillé de chaque service systemd - Indicateurs visuels (✅/⚠️) pour l'état des services - Format lisible et coloré ### Script de vérification amélioré - Tests de connectivité réseau entre conteneurs - Tests de connectivité Internet - Vérification des endpoints de santé des services - Messages d'erreur plus informatifs - Gestion des timeouts pour éviter les blocages ## 6. Gestion des Erreurs ### Améliorations générales - Utilisation de `set -euo pipefail` pour détection d'erreurs stricte - Messages d'erreur informatifs avec suggestions de correction - Continuation du déploiement même si un service échoue - Logs sauvegardés pour analyse post-mortem - Vérifications de santé après chaque étape critique ## 7. Démarrage Automatique des Services ### Améliorations - Tous les services démarrent automatiquement après déploiement - Vérification de l'état des services après démarrage - Messages d'avertissement si un service ne démarre pas - Commandes suggérées pour déboguer les problèmes ## 8. Configuration Persistante ### Améliorations - Configuration DNS persistante via systemd-resolved - Configuration réseau persistante dans les conteneurs - Routes configurées automatiquement au démarrage - IP statiques configurées via Incus et dans le conteneur ## Utilisation ### Déploiement complet ```bash make deploy-incus ``` ### Vérification du statut ```bash make incus-status ``` ### Vérification détaillée ```bash ./config/incus/verify-deployment.sh ``` ### Déploiement d'un service spécifique ```bash ./config/incus/deploy-service-native.sh backend-api ``` ## Résolution de Problèmes ### Service ne démarre pas ```bash # Vérifier les logs incus exec veza-backend-api -- journalctl -u veza-backend-api -n 50 # Vérifier le statut incus exec veza-backend-api -- systemctl status veza-backend-api ``` ### Problème de réseau ```bash # Vérifier la configuration réseau incus network show veza-network # Tester la connectivité incus exec veza-backend-api -- ping -c 2 8.8.8.8 incus exec veza-backend-api -- ping -c 2 10.10.10.10 ``` ### Rebuild complet ```bash # Nettoyer make incus-stop-all for container in $(incus list -c n --format csv | grep veza-); do incus delete $container --force done # Rebuild et redéployer make deploy-incus ``` ## Notes Techniques - Les conteneurs utilisent Ubuntu 22.04 comme image de base - Tous les services sont gérés via systemd - Le réseau utilise des adresses IP statiques pour chaque service - Le DNS est configuré à la fois via Incus et dans les conteneurs - Les routes sont configurées automatiquement au démarrage ## Prochaines Améliorations Possibles - [ ] Support de la haute disponibilité - [ ] Backup automatique des configurations - [ ] Monitoring automatique des services - [ ] Auto-scaling basé sur la charge - [ ] Support de plusieurs environnements (dev, staging, prod)