Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 86 additions & 0 deletions adrs/2026-01-05-flux.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
---
authors:
- ReneSchuenemann
---

# Flux Service Provider

For the OpenMCP architecture there is a need for a Service Provider `Flux`.
Flux is a popular GitOps tool for Kubernetes, which can be used to manage the deployment of applications and infrastructure in a declarative way.
Flux will be used by OpenMCP users on their Managed Control Plane clusters to deploy and manage their workloads.
It is also desirable by other Service Providers to have Flux available on the Managed Control Plane clusters to manage their own workloads.

## Context and Problem Statement

Service Providers that want to deploy their workload on the Managed Control Plane clusters need a way to do so in a consistent and manageable way. Especially when using Helm charts, Flux can provide a powerful solution for managing the deployment and lifecycle of these workloads.
Instead of managing the lifecycle of their workloads manually, Service Providers can leverage Flux to automate the deployment and management of their workloads. They would only need to deploy a `HelmRelease` resource to the Managed Control Plane cluster, and Flux would take care of the rest.
However, relying on Flux by a Service Provider to manage their workloads introduces an implicit dependency on the Flux Service Provider being available and functioning correctly.

We have currently identified 3 options for Service Providers to manage their workloads on the Managed Control Plane clusters:

* Option 1: Each Service Provider deploys Helm charts without using Flux.
* Option 2: Implicit dependency on Flux: Service Providers use Flux to manage their workloads, assuming that the Flux Service Provider is always available.
* Option 3: Flux as a Platform Service
* Option 4: Using the "central" Flux instance running on the Platform Cluster to manage workloads on Managed Control Plane clusters.

## Option 1: Each Service Provider deploys Helm charts without using Flux.

Service Providers manage the deployment of their workloads on the Managed Control Plane clusters manually, without relying on Flux.
Either by using a golang Helm client library or by applying manifest files directly to the Managed Control Plane cluster.

Advantages:

* No dependency on Flux Service Provider.
* Service Providers have full control over their deployments.

Disadvantages:

* Service Providers need to manage the lifecycle of their workloads manually.
* Inconsistent deployment methods across different Service Providers.
* Increased operational overhead for Service Providers.

## Option 2: Implicit dependency on Flux: Service Providers use Flux to manage their workloads, assuming that the Flux Service Provider is always available.

Users will need to manually enable the Flux Service Provider on their Managed Control Plane cluster before other Service Providers can use Flux to manage their workloads.
This means that the Flux Service Provider must be deployed and running on the Managed Control Plane cluster for other Service Providers to use Flux without enforcing the dependency explicitly.

Advantages:

* Service Providers can leverage Flux for managing their workloads.
* Reduced operational overhead for Service Providers.

Disadvantages:

* Implicit dependency on Flux Service Provider being available and functioning correctly.
* If Flux Service Provider is unavailable, Service Providers can't manage their workloads.

## Option 3: Flux as a Platform Service

In this option, Flux is provided as a Platform Service. This means that the platform service `Flux` watches for any `Cluster` with the purpose `MCP` existing on the platform cluster. For each such `Cluster`, the Flux service provisions a dedicated Flux instance on the Managed Control Plane cluster. This dedicated Flux instance is then used by Service Providers to manage their workloads on that specific Managed Control Plane cluster.

Advantages:

* Dedicated Flux instance for each Managed Control Plane cluster, ensuring isolation and independence.
* Service Providers can use Flux to manage their workloads without worrying about the availability of a shared Flux instance.
* Consistent deployment method across different Service Providers.
* Reduced operational overhead for Service Providers.

Disadvantages:

* Users have no control over the version of Flux used on their Managed Control Plane cluster.

## Option 4: Using the "central" Flux instance running on the Platform Cluster to manage workloads on Managed Control Plane clusters.

In this option, the Flux instance running on the Platform Cluster is used to manage workloads on all Managed Control Plane clusters. Service Providers would deploy their `HelmRelease` resources to the Platform Cluster's Flux instance, which would then synchronize the workloads to the respective Managed Control Plane clusters.

Advantages:

* Centralized management of workloads across all Managed Control Plane clusters.
* Reduced resource consumption, as only one Flux instance is needed.

Disadvantages:

* Potential performance bottlenecks, as the central Flux instance needs to manage workloads across multiple clusters.
* Increased complexity in managing and troubleshooting deployments, as issues may arise from the central Flux instance affecting multiple Managed Control Plane clusters.
* Lack of isolation between Managed Control Plane clusters, which may lead to security and stability concerns.
* Users have no control over the version of Flux used on their Managed Control Plane cluster.