Aller au contenu

Applications

Plateforme

Composant Namespace Fonction
Flux CD flux-system Réconcilie Git vers Kubernetes
Traefik kube-system Ingress HA : 3 réplicas, un sur chacun des trois control-plane, PDB 2
cert-manager cert-manager Certificats Let's Encrypt
KEDA + HTTP add-on keda Autoscaling HTTP et réveil depuis zéro de Stirling-PDF
CloudNativePG cnpg-system + notrecouple + plane + n8n + agent-runtime Opérateur PostgreSQL avec 2 réplicas de contrôleur ; data plane NotreCouple actif sur PostgreSQL 17.11 avec 3 instances et une Kustomization Flux dédiée. Plane et n8n possèdent chacun leur propre Cluster ; celui de n8n est à instance unique et épinglé sur le worker UK, donc sans haute disponibilité
CoreDNS kube-system DNS interne du cluster
metrics-server kube-system CPU/mémoire pour Kubernetes
Dagger Engine dagger Backend CI K3s actif après #331/#345 ; garde egress enfant fail-closed validée runtime. Test des runs distants short/standard : 4 runs prioritaires sur vps-f0621bb1, puis seulement à saturation un run sur vps-7a702a91 et un sur vps-b49e4e6f ; CPU ≤70 % / RAM ≤80 % par cible, plafond global 6, FIFO au-delà ; 1 CPU / 1 GiB max par Job
CI Dispatcher ci-dispatcher CI déportée validée E2E : GitHub -> Cloudflare Access ci.djayzone.com -> dispatcher -> K3s/Dagger -> Check GitHub. GitHub App opérationnelle (app_configured=true), PR path-aware depuis #401 ; le webhook GitHub App (/ci/v1/webhooks/github) est activé dans la policy GitOps et traite les événements signés sans utiliser GitHub Actions comme déclencheur normal ; rollback contrôlé par policy et soumission manuelle ; backend cloud RunPod activé uniquement pour runner=cloud explicite avec budget/timeout/teardown bornés. La qualification RunPod reste en cours tant qu'un lifecycle réel création -> exécution -> statut terminal -> teardown n'a pas été prouvé
n8n n8n Orchestration du MVP agentique (#337) : événements, workflows, retries et dispatch sur n8n.lab.djayzone.com. L'état durable des tâches, leurs checkpoints et leurs leases sont portés par Task Runtime (agent-runtime) et exposés par task.*. Un OAuth2 Proxy GitHub sert de portail d'accès devant l'application, sauf sur /webhook* ; il ne remplace pas l'authentification interne de n8n. Épinglé sur le worker UK os-uk2 avec sa propre base et sans HA. L'archivage WAL et les sauvegardes PostgreSQL vers B2 sont actifs ; au 7 octobre 2026 les catalogues exposent une fenêtre de récupération et les backups quotidiens récents sont completed. n8n reste exclu comme dépendance runtime d'un produit
Agent Runtime / Task Runtime agent-runtime Coordination durable des tâches multi-agents : état, checkpoints, résultats et leases via PostgreSQL CNPG. Runtime 2 réplicas, base 1 instance sur le worker UK ; non critique pour les produits et exploitable manuellement sans MCP.
ChatGPT browser relay n8n Contrôleur HTTP léger permanent ; navigateurs à 0 au repos, réveil sur appel autorisé et veille après 15 min. Mode config déclenché à l’ouverture de la page locale via le port-forward habituel, puis arrêt avec Terminer ou après 20 min. Profil persistant et Secrets conservés ; aucune automatisation CAPTCHA/MFA.
Plane plane Pilotage projet et roadmap sur plane.lab.djayzone.com, authentification native Plane ; runtime stabilisé après le bootstrap du 02/09/2026, outil non critique et jamais dépendance runtime d'un produit
Mail Gateway mail-system Point de sortie SMTP interne commun. NotreCouple est activé avec provider dédié et identité de caller par token ; les credentials SMTP restent confinés dans mail-system
Hyundai Bluelink bridge bluelink Bridge interne ClusterIP vers l'état et les commandes Hyundai Inster. Il expose santé, statut, position privée en cache, capacités et des commandes gardées consommées par le domaine vehicle.* du Gateway ; aucun Ingress public n'expose directement le bridge.
Cluster Operator MCP cluster-observer Backend Kubernetes interne du Gateway. Le Gateway masque les primitives mutantes génériques et ne publie que les actions opérateur ciblées prévues par le contrat ; ce backend n'est jamais configuré directement auprès d’un consommateur externe.
MCP Gateway unifié cluster-observer Point d’entrée MCP unique pour les agents. Le runtime expose actuellement 11 domaines actifs : ai.*, github.*, cluster.*, n8n.*, notrecouple.*, plane.*, slack.*, dagger.*, task.*, vehicle.* et gateway.*. cluster.* ajoute les wrappers ciblés deployments_restart et pods_kill sans exposer leurs primitives génériques ; vehicle.* porte les lectures et commandes Bluelink ; plane.* lit et écrit directement l’API Plane ; n8n.* administre et déclenche les workflows explicitement exposés ; task.* porte l’état durable et les leases ; slack.* passe par le pont interne slack-mcp.
Pont MCP Slack slack-mcp Pont HTTP interne entre le domaine slack.* du Gateway et l’API Slack. Détient seul le jeton de bot ; expose la lecture des canaux/messages, l'envoi, les réponses de thread et la publication d'événements opérationnels dédupliqués. Slack reste un bus de communication, jamais une source de vérité durable.

CI distante Dagger

La GitHub App envoie les événements au dispatcher, qui classe les fichiers modifiés et soumet les validations Dagger. Le compute est exécuté sur K3s, ou sur cloud uniquement après sélection explicite, et le résultat est publié via le Check GitHub dagger/<pipeline>.

Classification principale :

  • CI Dispatcher -> dispatcher ;
  • Mail Gateway -> mail-gateway ;
  • Cluster Observer -> cluster-observer-render ;
  • WebWars -> webwars ;
  • NotreCouple code/manifests PROD/DEV -> notrecouple (suite canonique avec PostgreSQL, rendus du produit et OAuth NotreCouple uniquement) ;
  • autre produit -> gate dédiée ou product-<nom> (rendu et contrats de ce produit uniquement) ;
  • changements GitOps -> gitops ;
  • PR multi-produit -> un check indépendant par périmètre touché ;
  • changement transverse, .dagger/** ou inconnu -> ci complet.

Le classifieur est issu de la base de confiance de la PR : le code de la PR ne peut pas désactiver ses propres contrôles. Le retour arrière du webhook se fait par la policy GitOps après qualification ; la variable historique DAGGER_REMOTE_CI_ENABLED ne constitue pas à elle seule un rollback complet du chemin GitHub App.

Observabilité

Retrait B2 : Thanos Query sert seulement les donnees locales Prometheus (3 jours, plafond 3 GB). L'archivage WAL et les backups B2 n8n, Plane et NotreCouple sont retires ; les relevés datés ci-dessus restent historiques. Voir le runbook de retrait.

Composant Namespace Données
Prometheus monitoring Séries temporelles, PVC 5 GiB
Grafana monitoring 1 réplica stateless en mode capacité PLAT-76, dashboards provisionnés, authentification via OAuth2 Proxy
kube-state-metrics monitoring État des objets Kubernetes
node-exporter monitoring Métriques des quatre nœuds Kubernetes
Gatus status 2 réplicas, contrôles internes et publics ; rollout lié à la révision Git blob de la configuration

Interfaces et applications

Application Namespace Réplicas Exposition
Portail administrateur admin-dashboard 2 SSO, admin.lab.djayzone.com
Portail de maintenance maintenance 1 contrôleur + 2 proxies GitHub SSO, maintenance.lab.djayzone.com
OAuth2 Proxy sso, monitoring, admin-dashboard, maintenance, stirling-pdf, notrecouple, n8n 2 pour les interfaces critiques ; 1 pour Stirling-PDF, l'admin NotreCouple et n8n Authentification GitHub ou Google selon l'application ; la DEV NotreCouple réutilise le middleware sso-github-sso du namespace sso. Devant n8n, le proxy est un portail d'accès et non la session applicative
Portfolio Jemimah jemimah 2 jemimah.fr et www.jemimah.fr
Atelier Jemimah jemimah 1 pod, 2 conteneurs Actif sur config.jemimah.fr, file SQLite persistante et sidecar MCP borné
Wiki docs 2 docs.lab.djayzone.com
Stirling-PDF stirling-pdf 0 à 2 SSO Google ; moteur lourd réveillé par KEDA HTTP, pdf.lab.djayzone.com
Mon Couple V1 (1.5.0) moncouple 0 web + 0 notifier Retiré : rappels suspendus, PVC SQLite conservé et anciens domaines moncouple.jemimah.fr / moncouple.djayzone.com redirigés vers notrecouple.fr
Notre Couple (1.1.1) notrecouple 2 web + 0 à 3 overflow KEDA + 1 notifier + 1 admin + 1 OAuth2 Proxy admin + 2 maintenance ; PostgreSQL 3 instances Application multi-couple PostgreSQL avec reminders planifiés ; notrecouple.fr pour l'application et admin.notrecouple.fr pour l'administration Google SSO
Notre Couple DEV notrecouple-dev Socle DEV + PostgreSQL CNPG 1 instance Overlay Alpine isolé sur notrecouple-dev.lab.djayzone.com derrière le SSO GitHub partagé ; données uniquement de test, aucun restore PROD ; depuis #664 la source Flux DEV dédiée suit directement main. L'ancien flux preview env/notrecouple-dev est désactivé en attente de redéfinition dans Plane NC-1
WebWars webwars 0 jeu + 1 maintenance Suspendu volontairement ; endpoint public maintenu avec une page d'information
Squash TM squash-tm 0 application + 1 maintenance Suspendu volontairement ; PVC PostgreSQL conservé et endpoint public maintenu avec une page d'information

Les anciens dossiers du dépôt situés hors de apps/ovh-primary ne sont pas synchronisés par le cluster actuel.

Services retirés

Service Date Motif Conséquence
Mon Couple V1 28 août 2026 Remplacé par Notre Couple Runtime web/notifier à 0, rappels suspendus, données SQLite conservées et anciens domaines redirigés vers notrecouple.fr
Headlamp 21 août 2026 Console Kubernetes redondante avec kubectl, K9s et le portail de maintenance Namespace, route, SSO dédié et contrôles Gatus supprimés par Flux
Whoami 21 août 2026 Outil de test devenu inutile en exploitation courante Deux routes publiques et contrôles Gatus supprimés par Flux
AEON 23 septembre 2026 Source amont supprimée (fetch HTTP 404), service en Init:CrashLoopBackOff Namespace, Deployment, Service, Ingress, NetworkPolicy, Job et ConfigMap retirés par Flux. Aucune donnée serveur/PVC ; éventuelles sauvegardes IndexedDB restent dans les navigateurs, mais l'origine n'est plus servie. DNS dynamique : aucun enregistrement propre à AEON à supprimer ; le nom peut encore résoudre vers le cluster, sans route Traefik après suppression de l’Ingress.
NukeGrid 2 octobre 2026 Projet archivé hors du GitOps actif Namespace/runtime retirés du cluster ; le projet public reste disponible pour forks et contributions
SIM.lab 2 octobre 2026 Projet archivé hors du GitOps actif Namespace/runtime retirés du cluster ; le projet public reste disponible pour forks et contributions

Squash TM n'est pas supprimé : application, proxy et PostgreSQL restent à zéro, le PVC PostgreSQL est conservé et une page de maintenance légère répond sur son endpoint public.