Pour les instructions de déploiement, consultez le Guide de déploiement Terragrunt.
Résumé de l’architecture et de la haute disponibilité
Composants de l’infrastructure
Capacités HA actuelles
Objectifs RTO / RPO
Systèmes de sauvegarde
1. État Terraform / Terragrunt — S3
Ce qui est sauvegardé : Tout l’état de l’infrastructure (EKS, réseautage, IAM, versions Helm). Implémentation :- Bucket S3 par environnement :
ekb-terraform-state-<env-name>(amorcé viaterragrunt/environments/<env-name>/state/) - Versioning activé — toute version d’état précédente peut être restaurée
- Chiffrement côté serveur (AES-256)
- Table DynamoDB pour le verrouillage d’état
terragrunt apply.
RPO : Chaque commit terragrunt apply — continu.
2. Volumes persistants EBS — AWS Data Lifecycle Manager
Ce qui est sauvegardé : Volumes EBS attachés aux pods (PostgreSQL Automator, MinIO Supabase, tout workload stateful). Implémentation : Politique AWS Data Lifecycle Manager (DLM) ciblant les tags d’environnement.3. CloudNativePG (HA Supabase DB) — Sauvegardes Barman Cloud
S’applique à : Les environnements avecENABLE_CNPG=true et ENABLE_HA_SUPABASE_DB=true.
Ce qui est sauvegardé : Le cluster CloudNativePG Postgres (ha-supabase-db), incluant le streaming WAL continu (Write-Ahead Log) vers S3 ou MinIO, et les sauvegardes de base complètes programmées via la CRD ScheduledBackup de CNPG.
Implémentation (configurée dans values/ha-supabase-db.yaml) :
4. ElastiCache Redis — Réplication Multi-AZ
S’applique à : Les environnements avecENABLE_AWS_SERVICES=true.
Redis n’est pas un magasin de données principal — il contient des données de cache transitoires et de session. L’accent de la DR est sur le basculement rapide plutôt que sur la sauvegarde/restauration.
Implémentation :
- Multi-AZ activé avec basculement automatique
- Chiffrement au repos et en transit
- Une défaillance de nœud principal promeut automatiquement une réplique (< 1 min)
5. Amazon MQ (RabbitMQ) — File d’attente de messages
S’applique à : Les environnements avecENABLE_AWS_SERVICES=true.
Implémentation :
- Instance unique (par défaut) ou déploiement actif/secondaire
- Les messages en vol peuvent être perdus lors du redémarrage du broker ; concevez les consommateurs pour être idempotents
- Interface de gestion disponible sur le port 15671 (SSL)
Mécanismes de récupération automatique
Karpenter — Approvisionnement et récupération de nœuds
- Consolidation :
WhenEmptyOrUnderutilized— les nœuds inactifs sont automatiquement terminés - Gestion des interruptions Spot : Écoute les événements d’interruption SQS ; draine et remplace les nœuds Spot avant la résiliation
- Dérive de nœud : Les nœuds utilisant des AMI ou des configurations obsolètes sont automatiquement remplacés lorsque
enable_drift = true - Temps de récupération : Nouveau nœud approvisionné en 0–10 minutes
KEDA — Auto-escalade des pods
- Répliques minimales : 2 pour tous les services (Web, API, Celery, Automator) — prévient le point unique de défaillance
- Seuil CPU : 60–70% déclenche la montée en charge
- Seuil mémoire : 80% déclenche la montée en charge
- Stabilisation de réduction d’échelle : 30 secondes — évite le battement
- Temps de récupération : Les pods défaillants sont reprogrammés dans 0–2 minutes
Anti-affinité des pods Kubernetes
Tous les services sans état utilisentpreferredDuringSchedulingIgnoredDuringExecution anti-affinité sur kubernetes.io/hostname pour répartir les pods entre les nœuds et les AZ.
Procédures de récupération
Scénario 1 : Défaillance AZ
Comportement attendu : Karpenter approvisionne les nœuds de remplacement dans les AZ restantes ; KEDA reprogramme les pods ; ALB cesse de router vers les cibles non saines. Vérification :Aucune intervention manuelle n’est requise dans des circonstances normales.
Scénario 2 : Défaillance du nœud principal Postgres (CloudNativePG)
CloudNativePG promeut automatiquement une réplique en principal.Scénario 3 : Restaurer un volume EBS à partir d’un snapshot
Scénario 4 : Récréation complète de l’infrastructure
Utilisé après une défaillance catastrophique ou lors de la reconstruction d’une région.Scénario 5 : Restauration de l’état Terragrunt
Observabilité et alertes (SigNoz)
LorsqueENABLE_SIGNOZ=true, SigNoz est déployé dans l’espace de noms monitoring et fournit :
- Traçage distribué pour tous les services EKB
- Métriques de cluster via l’agent DaemonSet k8s-infra (CPU, mémoire, statut des pods)
- Agrégation des journaux de tous les pods
- Alertes — configurez les règles d’alerte dans SigNoz pour être notifié sur les boucles de crash de pods, les taux d’erreur élevés ou la pression des nœuds