ADR-0125: Service ownership (PLATFORM_MANAGED, CLIENT_MANAGED) and six deployment modes
- Status: accepted
- Date: 2026-10-30
- French version: ../ADR-0125-propriete-modes.md
Context
Kit addendum 20.1. A bank often already runs its own PostgreSQL HA, storage or Kubernetes cluster. The platform must connect to them without claiming to manage their failover.
Decision
- Every cluster and service carries an ownership level:
PLATFORM_MANAGEDwhen the Manager owns the lifecycle,CLIENT_MANAGEDwhen it only checks the connection, the health and the allowed capabilities. - Six deployment modes: one machine, a node group, an existing Kubernetes cluster, a managed Kubernetes cluster, several clusters, an external service managed by the client.
- On a
CLIENT_MANAGEDservice the backend refuses destructive actions (start, stop, upgrade, failover, restore). The console hides them, but the refusal always comes from the server. - Each component has a placement policy:
deployment_mode,cluster_id,node_pool,replicas,min_replicas,max_replicas,node_selector, affinity and anti-affinity,topology_spread, resource requests and limits,storage_class,disruption_budget,maintenance_policyandha_profile. An impossible placement plan is refused.
Consequences
The Manager never restarts a service it does not own. A mode that cannot be proven here is marked unsupported, with the reason.
Evidence
KIT_AGENT_PLATEFORME_IA_ENTERPRISE/ADDENDUM_INFRA_HA_BACKUP_PRA.mdnavin-manager/server/src/navin_manager/availabilitynavin-manager/server/tests/test_availability_api.py