Skip to content

Architecture Agent

Agent Go léger, mono-tenant et self-hosted, installé sur chaque serveur client pour découvrir, superviser et piloter les conteneurs Docker locaux.

Go Docker SDK gRPC mTLS Self-hosted

L’architecture de l’Agent est découpée en plusieurs sections pour une meilleure compréhension :

  1. Stack Technique & Structure : Choix technologiques, dépendances et arborescence du projet Go.
  2. Discovery & Monitoring : Architecture des flux, cycle de vie et supervision des conteneurs via Docker Engine API.
  3. Métriques, Actions & Logs : Collecte de données, exécution de commandes à distance et streaming gRPC des logs.
  4. Sécurité & Configuration : Authentification mTLS, processus d’enrôlement et schéma de configuration YAML.
  5. Résilience, Tests & Déploiement : Gestion des pannes, stratégie de tests (unitaires, mocks, intégration) et installation via systemd.

L’Agent Berth est volontairement petit : un wrapper Docker, quelques workers concurrents (discovery, métriques, heartbeat), des handlers gRPC et une couche de sécurité/résilience.

┌──────────────────────────── API Berth ────────────────────────────┐
│ Auth/API REST · CQRS · PostgreSQL · Redis cache · audit Streams │
└──────────────────────────────┬────────────────────────────────────┘
│ gRPC + mTLS (sortant Agent)
┌──────────────────────────────▼────────────────────────────────────┐
│ Agent Go │
│ discovery/events · metrics · actions · log streams · heartbeat │
│ retry/backoff · spool borné · certificats │
└──────────────────────────────┬────────────────────────────────────┘
│ Docker SDK / docker.sock
┌─────────────▼─────────────┐
│ Docker daemon + containers │
└───────────────────────────┘

La simplicité opérationnelle, la réconciliation périodique, l’idempotence des commandes et l’identité mTLS par Agent constituent les garanties principales de robustesse dans un environnement client self-hosted.