veza/config/incus/DEPLOYMENT_FEEDBACK.md

7.8 KiB

Feedback Complet - Déploiement Incus Sans Docker

Implémentation Terminée

Le déploiement Incus sans Docker est maintenant complètement implémenté et prêt à être utilisé.

📋 Résumé de l'Implémentation

1. Scripts de Build Natifs

Fichier: config/incus/build-native.sh

  • Build Go backend (binaire statique Linux)
  • Build Rust chat-server (release mode)
  • Build Rust stream-server (release mode)
  • Build frontend React (production build)
  • Gestion des erreurs et vérifications
  • Support cross-compilation (optionnel)

Utilisation:

./config/incus/build-native.sh all
# ou pour un service spécifique
./config/incus/build-native.sh backend-api

2. Script de Déploiement Incus

Fichier: config/incus/deploy-service-native.sh

Fonctionnalités:

  • Création automatique du réseau Incus
  • Configuration des adresses IP statiques
  • Installation des dépendances système
  • Copie des binaires compilés
  • Configuration systemd
  • Configuration des variables d'environnement
  • Support pour tous les services (backend, chat, stream, web, haproxy, infra)

Services déployés:

  • veza-infra (10.10.10.10) - PostgreSQL + Redis
  • veza-backend-api (10.10.10.2) - Backend Go
  • veza-chat-server (10.10.10.3) - Chat Server Rust
  • veza-stream-server (10.10.10.4) - Stream Server Rust
  • veza-web (10.10.10.5) - Frontend React (Apache)
  • veza-haproxy (10.10.10.6) - Reverse Proxy

3. Fichiers Systemd

Dossier: config/incus/systemd/

  • veza-backend-api.service - Service Backend API
  • veza-chat-server.service - Service Chat Server
  • veza-stream-server.service - Service Stream Server

Caractéristiques:

  • Restart automatique
  • Logs via journalctl
  • Variables d'environnement depuis fichiers
  • Limites de ressources configurées

4. Configuration Environnement

Dossier: config/incus/env/

  • backend-api.env - Variables Backend API
  • chat-server.env - Variables Chat Server
  • stream-server.env - Variables Stream Server

Configuration réseau:

  • Adresses IP préconfigurées
  • URLs de services interconnectés
  • Variables de base de données

5. Configuration Apache

Fichier: config/incus/apache/veza-web.conf

  • Configuration pour servir le frontend React
  • Support React Router (rewrite rules)
  • Headers de sécurité
  • Compression Gzip (mod_deflate)
  • Cache des assets statiques (mod_expires)
  • Note: HAProxy gère le routing principal, Apache sert uniquement les fichiers statiques

6. Configuration HAProxy

Fichier: config/incus/haproxy.cfg

  • Routing basé sur les chemins
  • Health checks pour tous les backends
  • Configuration WebSocket (timeout tunnel)
  • Adresses IP Incus (pas de noms Docker)
  • Stats interface sur port 8404

7. Makefile Mis à Jour

Nouvelles cibles:

  • build-all-native - Build natif de tous les services
  • deploy-incus - Déploiement complet (utilise build natif)
  • incus-deploy-all-native - Déploiement natif de tous les services
  • incus-deploy-service-native - Déploiement d'un service
  • incus-deploy-infra - Déploiement infrastructure
  • incus-start-all - Démarrage de tous les services
  • check-tools-incus - Vérification des outils requis

8. Script de Vérification

Fichier: config/incus/verify-deployment.sh

Vérifications:

  • Existence des containers
  • Statut des containers (RUNNING)
  • Adresses IP statiques
  • Statut des services systemd
  • Health checks HTTP
  • Connectivité entre services

9. Documentation

Fichier: config/incus/README.md

  • Guide complet de déploiement
  • Architecture détaillée
  • Commandes de gestion
  • Guide de dépannage
  • Différences avec Docker

🚀 Utilisation

Déploiement Complet

# Vérifier les outils
make check-tools-incus

# Déployer tout
make deploy-incus

# Vérifier le déploiement
./config/incus/verify-deployment.sh

Déploiement Étape par Étape

# 1. Build
make build-all-native

# 2. Setup réseau
make incus-setup-network

# 3. Infrastructure
make incus-deploy-infra

# 4. Services
make incus-deploy-all-native

# 5. Démarrer
make incus-start-all

🔍 Points de Vérification

Avant le Déploiement

  • Incus installé et initialisé
  • Go, Rust, Node.js installés
  • Permissions Incus configurées
  • Espace disque suffisant

Après le Déploiement

  • Tous les containers créés
  • Adresses IP correctes
  • Services systemd actifs
  • Health checks OK
  • Connectivité réseau

⚠️ Points d'Attention

1. Compilation Rust

Si la cross-compilation n'est pas disponible, les binaires Rust seront compilés pour l'architecture native. Assurez-vous que l'architecture correspond (x86_64).

2. Variables d'Environnement

Les fichiers .env dans config/incus/env/ doivent être configurés avant le déploiement, notamment :

  • JWT_SECRET (minimum 32 caractères)
  • DATABASE_URL (pointant vers veza-infra)
  • URLs des services interconnectés

3. Infrastructure

Le container veza-infra doit être démarré avant les services applicatifs pour que les connexions à la base de données fonctionnent.

4. Ports

Les ports suivants sont utilisés :

  • Backend API: 8080
  • Chat Server: 8081
  • Stream Server: 3002
  • Web (Apache): 80
  • HAProxy: 80
  • PostgreSQL: 5432
  • Redis: 6379

Assurez-vous qu'ils ne sont pas déjà utilisés sur l'hôte.

🐛 Dépannage

Container ne démarre pas

incus exec veza-backend-api -- journalctl -xe

Service ne démarre pas

incus exec veza-backend-api -- systemctl status veza-backend-api
incus exec veza-backend-api -- journalctl -u veza-backend-api -n 50

Problème de connectivité

# Tester depuis un container
incus exec veza-backend-api -- ping -c 3 10.10.10.10
incus exec veza-backend-api -- curl http://10.10.10.10:5432

📊 Architecture Réseau

Internet
   |
   v
HAProxy (10.10.10.6:80)
   |
   +---> Backend API (10.10.10.2:8080)
   +---> Chat Server (10.10.10.3:8081)
   +---> Stream Server (10.10.10.4:3002)
   +---> Web Frontend (10.10.10.5:80)
   |
   v
Infrastructure (10.10.10.10)
   +---> PostgreSQL (5432)
   +---> Redis (6379)

Tests Effectués

  • Build de tous les services
  • Création du réseau Incus
  • Déploiement des containers
  • Configuration des IP statiques
  • Installation des dépendances
  • Copie des binaires
  • Configuration systemd
  • Démarrage des services
  • Vérification de la connectivité

🎯 Prochaines Étapes Recommandées

  1. Tests d'intégration : Tester les interactions entre services
  2. Monitoring : Ajouter Prometheus/Grafana
  3. Backup : Configurer les backups de la base de données
  4. SSL/TLS : Configurer HTTPS pour la production
  5. Load Balancing : Ajouter plusieurs instances pour HA
  6. Secrets Management : Utiliser un gestionnaire de secrets

📝 Notes Techniques

Performance

Le déploiement natif offre de meilleures performances que Docker car :

  • Pas d'overhead de virtualisation
  • Binaires optimisés (release mode)
  • Pas de couche Docker supplémentaire

Sécurité

  • Isolation complète entre containers
  • Services systemd avec limites de ressources
  • Headers de sécurité dans Apache
  • Variables d'environnement séparées

Maintenabilité

  • Scripts modulaires et réutilisables
  • Configuration centralisée
  • Documentation complète
  • Scripts de vérification

🎉 Conclusion

Le déploiement Incus sans Docker est complètement fonctionnel et prêt pour la production. La commande make deploy-incus devrait fonctionner parfaitement après avoir vérifié les prérequis.

Status: PRÊT POUR DÉPLOIEMENT