180 lines
5.5 KiB
Markdown
180 lines
5.5 KiB
Markdown
|
|
# 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)
|