Skip to main content

ADR-0125: Service ownership (PLATFORM_MANAGED, CLIENT_MANAGED) and six deployment modes

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_MANAGED when the Manager owns the lifecycle, CLIENT_MANAGED when 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_MANAGED service 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_policy and ha_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.md
  • navin-manager/server/src/navin_manager/availability
  • navin-manager/server/tests/test_availability_api.py