Environnements : développement → staging → production (M11, ADR-026)¶
Une seule image, une seule base de code ; seuls changent la configuration (ENVIRONMENT,
secrets, domaine) et les données.
| Développement | Staging | Production | |
|---|---|---|---|
| Où | Poste Kali (uvicorn --reload, worker) |
VPS UE, sous-domaine staging. |
VPS UE, domaine principal |
ENVIRONMENT |
development |
staging |
production |
| Lancement | illwatch + uvicorn dans .venv |
scripts/deploy-vps.sh install staging.<domaine> |
scripts/deploy-vps.sh install <domaine> |
| Données | Réelles (collecte locale) ou démonstration | Réelles, collecte continue | Réelles |
| TLS | Aucun (127.0.0.1) | Let's Encrypt (Caddy) | Let's Encrypt (Caddy) |
Documentation /docs |
Exposée | Masquée | Masquée |
| Observabilité | /metrics en local |
Prometheus + Grafana (tunnel SSH) | Prometheus + Grafana (tunnel SSH) |
| Sauvegarde | Manuelle (scripts/backup.sh) |
Quotidienne, test de restauration mensuel | Quotidienne, test de restauration mensuel |
| Mise à jour | git pull |
deploy-vps.sh update depuis main |
deploy-vps.sh update depuis un tag déjà validé en staging |
Contrôles automatiques (CI, à chaque modification)¶
La préproduction locale (workflow « Préproduction ») monte l'image de production derrière
Caddy, charge le jeu de démonstration figé, puis : contrôles HTTPS et sécurité, captures
d'écran, scénario d'acceptation SOC (scripts/scenario_soc.py), sauvegarde et restauration,
Prometheus (configuration, collecte, alertes) et Grafana (tableaux provisionnés et capturés).
La validation sur données réelles tourne chaque semaine (workflow « Validation réelle »).
Passage en production¶
- Le tag candidat tourne 7 jours en staging sans intervention (critère de sortie de M11) :
aucune alerte
IllwatchFeedStale/IllwatchNoCollectionnon expliquée, tableaux remplis. - Test de restauration du mois passé (
/var/log/illwatch-restore-test.log). deploy-vps.sh updateen production (sauvegarde automatique avant mise à jour).
Accès à Grafana et Prometheus¶
Ils n'écoutent que sur la boucle locale du VPS :