Skip to content

Platform Mesh operator

Purpose

The Platform Mesh operator bootstraps and maintains a Platform Mesh environment. It reconciles a single custom resource — PlatformMesh — and drives all infrastructure provisioning through an ordered pipeline of subroutines.

WARNING

This component is in alpha. APIs may change on short notice, including breaking changes.

Runtime role

Given a PlatformMesh resource the operator:

  1. Deploys infrastructure and application components via FluxCD HelmReleases and OCM Resources.
  2. Configures kcp workspaces, provider connections, and API bindings.
  3. Generates scoped kubeconfig secrets for cross-cluster communication.
  4. Applies feature toggles (UI content configurations, authentication behaviour).
  5. Waits for dependent resources to become ready before marking reconciliation complete.

Custom resource

yaml
apiVersion: core.platform-mesh.io/v1alpha1
kind: PlatformMesh
metadata:
  name: platform-mesh-sample
  namespace: platform-mesh-system
spec:
  exposure:
    baseDomain: example.com
    port: 443
    protocol: https
  ocm:
    repo:
      name: platform-mesh
    component:
      name: platform-mesh
    referencePath:
    - name: "core"
  kcp:
    providerConnections:
    - endpointSliceName: core.platform-mesh.io
      path: root:platform-mesh-system
      secret: platform-mesh-operator-kubeconfig
    extraWorkspaces:
    - path: "root:orgs:my-workspace"
      type:
        name: "universal"
        path: "root"
    extraProviderConnections:
    - path: "root:orgs:my-workspace"
      secret: "my-workspace-kubeconfig"
  values:
    service1:
      enabled: true
      targetNamespace: default
  featureToggles:
  - name: "feature-enable-getting-started"

Spec fields

FieldDescription
exposureExternal exposure settings: baseDomain, port, protocol
kcpkcp workspace topology: provider connections, extra workspaces, API bindings
valuesFree-form JSON passed as Helm values to the platform-mesh-operator-components chart
infraValuesFree-form JSON passed as Helm values to the platform-mesh-operator-infra-components chart
ocmOCM repository, component name, and reference path for component delivery
featureTogglesList of named feature flags (see Feature toggles)
waitCustom readiness criteria for dependent resources

Status conditions

The operator reports per-subroutine conditions on the status subresource:

Condition typeMeaning
KcpsetupSubroutinekcp workspace and API binding setup
ProvidersecretSubroutineProvider kubeconfig secret generation
DeploymentSubroutineInfrastructure and component deployment
WaitSubroutineReadiness of downstream resources
ReadyOverall readiness (all subroutines succeeded)

Controllers

The operator runs two independent controllers:

ControllerWatchesPurpose
PlatformMeshReconcilerPlatformMesh (core.platform-mesh.io/v1alpha1)Bootstraps and maintains the environment via subroutines
ResourceReconcilerResource (delivery.ocm.software/v1alpha1)Syncs OCM-resolved artifacts into FluxCD sources and HelmReleases

PlatformMesh subroutines

The PlatformMeshReconciler processes the PlatformMesh resource through an ordered pipeline of subroutines. Each can be individually enabled or disabled via operator flags.

Deployment

Deploys platform-mesh infrastructure and application components:

  • Templates and applies platform-mesh-operator-infra-components (HelmRelease + OCM Resource), then waits for readiness.
  • Templates and applies platform-mesh-operator-components (HelmRelease + OCM Resource).
  • Manages the authorization webhook secret (issuer, certificate, KCP webhook, CA bundle).
  • Waits for the Istio control plane (istio-istiod HelmRelease if istio is enabled).
  • Waits for KCP infrastructure (RootShard, FrontProxy).

Values from spec.values and spec.infraValues are templated with baseDomain, baseDomainPort, port, protocol, and iamWebhookCA before being written to HelmRelease objects.

KcpSetup

Initializes the kcp workspace hierarchy:

  • Creates workspaces for all paths referenced in providerConnections.
  • Provisions all necessery kcp resources from the in the /manifests/kcp folder using go templates.
  • Creates extra workspaces declared in spec.kcp.extraWorkspaces.
  • Configures default API bindings from spec.kcp.extraDefaultAPIBindings.

ProviderSecret

Generates kubeconfig secrets for provider connections:

  • Creates one Kubernetes Secret per entry in providerConnections and extraProviderConnections.
  • Supports two authentication modes:
    • Scoped (default) — writes a kubeconfig with a ServiceAccount token and RBAC derived from the APIExport.
    • AdminAuth — writes cluster-admin certificate material.
  • Updates secrets when the connection configuration changes.

FeatureToggles

Applies optional feature-flag manifests during reconciliation (disabled by default).

Wait

Blocks reconciliation until downstream resources satisfy readiness criteria:

  • By default waits for platform-mesh-operator-components and platform-mesh-operator-infra-components HelmReleases to report Ready=True.
  • Custom criteria can be defined in spec.wait.resourceTypes:
yaml
spec:
  wait:
    resourceTypes:
    - group: helm.toolkit.fluxcd.io
      version: v2
      kind: HelmRelease
      namespace: default
      conditionStatus: "True"
      conditionType: "Ready"

Defaults

Fills in default values for ocm.repo.name and ocm.component.name when not explicitly set.

ResourceReconciler

A separate read-only controller that watches OCM Resource objects (delivery.ocm.software/v1alpha1). When an OCM Resource's status is updated with resolved artifact information, this controller syncs those references into the corresponding FluxCD objects so that Flux can fetch and deploy them.

The behaviour is driven by repo and artifact annotations (or labels) on the Resource object:

repoartifactAction
ocichartCreates/updates a FluxCD OCIRepository with the resolved image reference and version tag
gitchartCreates/updates a FluxCD GitRepository with the resolved commit and repo URL
helmchartCreates/updates a FluxCD HelmRepository and patches the HelmRelease chart version
oci or helmimagePatches an existing HelmRelease values path with the resolved image tag

Additional annotations:

AnnotationPurpose
forOverride the target HelmRelease name (format: namespace/name or name)
pathDot-separated path within spec.values to set the image tag (default: image.tag)
version-pathDot-separated path within Resource status to read the version (default: status.resource.version)
unsuspendWhen "true", sets spec.suspend: false on the target HelmRelease after updating

Feature toggles

NameDescription
feature-enable-getting-startedApplies ContentConfiguration for the Getting Started UI page
feature-accounts-in-accountsApplies ContentConfiguration for accounts within the account context
feature-enable-account-iam-uiApplies ContentConfiguration for the IAM UI Members section
feature-disable-email-verificationDisables email verification in WorkspaceAuthenticationConfiguration
feature-disable-contentconfigurationsDisables loading of all ContentConfiguration manifests

Configuration

Operator flags

FlagDefaultDescription
--workspace-dir/operator/Directory containing operator manifests
--kcp-url(auto-detected)KCP API server URL
--kcp-namespaceplatform-mesh-systemNamespace where KCP components run
--kcp-front-proxy-namefrontproxyName of the KCP front-proxy service
--kcp-front-proxy-port6443Port of the KCP front-proxy
--kcp-root-shard-namerootName of the KCP root shard
--kcp-cluster-admin-secret-namekcp-cluster-admin-client-certSecret with cluster-admin credentials
--subroutines-deployment-enabledtrueEnable the Deployment subroutine
--subroutines-deployment-enable-istiotrueEnable Istio integration in Deployment
--subroutines-kcp-setup-enabledtrueEnable the KcpSetup subroutine
--subroutines-provider-secret-enabledtrueEnable the ProviderSecret subroutine
--subroutines-feature-toggles-enabledfalseEnable the FeatureToggles subroutine
--subroutines-wait-enabledtrueEnable the Wait subroutine

Environment variables

VariableDescription
KUBECONFIGKubeconfig for the cluster hosting the PlatformMesh resource
DEPLOYMENT_KUBECONFIGKubeconfig for the target cluster where components are deployed (enables remote deployment)

When both variables are unset the operator uses in-cluster credentials for both roles.

Installation

The operator is distributed as a Helm chart from the Platform Mesh OCI registry.

Quick install

bash
helm install platform-mesh-operator \
  oci://ghcr.io/platform-mesh/helm-charts/platform-mesh-operator \
  --namespace platform-mesh-system --create-namespace

Chart details

Chartoci://ghcr.io/platform-mesh/helm-charts/platform-mesh-operator
Typeapplication
Sourceplatform-mesh/helm-charts

Dependencies bundled with the chart:

DependencyPurpose
commonShared Helm template snippets
platform-mesh-operator-crdsCRD definitions (can be disabled via crds.enabled)

Helm values

KeyTypeDefaultDescription
crds.enabledbooltrueInstall the PlatformMesh CRD via sub-chart
deployment.replicasint1Number of operator pod replicas
image.namestringghcr.io/platform-mesh/platform-mesh-operatorContainer image
log.levelstring"debug"Log verbosity level
operator.leaderElectbooltrueEnable leader election for HA
extraArgslist["--subroutines-feature-toggles-enabled=true"]Additional CLI flags passed to the operator binary
idp.registrationAllowedboolfalseAllow IDP self-registration
istio.enabledboolfalseEnable Istio sidecar injection for the operator pod
tracing.enabledboolfalseEnable OpenTelemetry tracing
tracing.collector.endpointstringobservability-opentelemetry-collector.observability.svc.cluster.local:4317OTLP collector endpoint
remoteInfra.enabledboolfalseEnables reconciliation of PlatformMesh resources on remote clusters
remoteInfra.secretNamestring"platform-mesh-kubeconfig"Secret containing kubeconfig for remote PlatformMesh resource access
remoteInfra.secretKeystring"kubeconfig"Key within the remote-infra secret
remoteRuntime.enabledboolfalseDeploy infrastructure artefacts to a remote cluster
remoteRuntime.secretNamestring"platform-mesh-secret"Secret containing kubeconfig for the remote runtime cluster
remoteRuntime.secretKeystring"kubeconfig"Key within the remote-runtime secret
remoteRuntime.infra.secretNamestring"platform-mesh-secret"Secret containing kubeconfig for the runtime infra cluster
remoteRuntime.infra.secretKeystring"kubeconfig"Key within the infra secret

Value override mechanism

The chart uses the common library's common.getKeyValue lookup function. Values resolve in this priority order:

  1. <key>Override in chart values (highest priority)
  2. global.<key> in chart or parent chart values
  3. <key> in chart values
  4. common.defaults.<key> from the common library (lowest priority)

This allows umbrella charts to set shared defaults via global.* while individual charts can still override locally.

Integration

  • kcp — the operator creates the workspace hierarchy and provider connections that form the control plane topology.
  • OCM (Open Component Model) — delivers versioned component descriptors that the operator references in HelmRelease and Resource objects.
  • FluxCD — the operator creates HelmRelease resources managed by the Flux Helm controller.
  • Istio — deployed as infrastructure; the operator ensures its sidecar is present before communicating with kcp.

Repository

EU and German government funding logos

Funded by the European Union – NextGenerationEU.

The views and opinions expressed are solely those of the author(s) and do not necessarily reflect the views of the European Union or the European Commission. Neither the European Union nor the European Commission can be held responsible for them.