Aller au contenu principal

ADR-0125 : Propriété des services (PLATFORM_MANAGED, CLIENT_MANAGED) et six modes de déploiement

Contexte​

Kit, addendum 20.1. Une banque possède souvent déjà son PostgreSQL HA, son stockage ou son cluster Kubernetes. La plateforme doit s'y connecter sans prétendre en administrer le failover.

Décision​

  • Chaque cluster et chaque service porte un niveau de propriété : PLATFORM_MANAGED quand le Manager gère le cycle de vie, CLIENT_MANAGED quand il contrôle seulement la connexion, la santé et les capacités autorisées.
  • Six modes de déploiement : une machine, un groupe de machines, un cluster Kubernetes existant, un cluster Kubernetes géré, plusieurs clusters, un service externe géré par le client.
  • Sur un service CLIENT_MANAGED, le backend refuse les actions destructrices (start, stop, upgrade, failover, restauration). La console les masque, mais le refus vient toujours du serveur.
  • Chaque composant a une politique de placement : deployment_mode, cluster_id, node_pool, replicas, min_replicas, max_replicas, node_selector, affinité et anti-affinité, topology_spread, ressources demandées et limites, storage_class, disruption_budget, maintenance_policy et ha_profile. Un plan de placement impossible est refusé.

Conséquences​

Le Manager ne redémarre jamais un service qui ne lui appartient pas. Un mode qui ne peut pas être prouvé ici est marqué non supporté, avec la raison.

Preuves​

  • KIT_AGENT_PLATEFORME_IA_ENTERPRISE/ADDENDUM_INFRA_HA_BACKUP_PRA.md
  • navin-manager/server/src/navin_manager/availability
  • navin-manager/server/tests/test_availability_api.py