Design
This document defines the terminology for Platform Services within the OpenControlPlane project and clarifies their scope, responsibilities and boundaries. In particular, it distinguishes Platform Services and Service Providers.
Domain
Platform services deliver platform capabilities within the OpenControlPlane ecosystem. They follow similar architectural patterns to Service Providers and Cluster Providers.
When mapped to a layered architecture using the personas of Platform Owner, Service Provider and User, Platform Services operate in the Platform Owner layer. Together with Cluster Providers they build the foundation of OpenControlPlane:
| Persona | OpenControlPlane Concept | Responsibility |
|---|---|---|
| Platform Owner | Platform Service and Cluster Provider | Provide platform capabilities consumed by the layers below |
| Service Provider | Service Providers | Provide managed services consumed by the layer below |
| User | Not an OpenControlPlane concept but a human end user | Generate value from the services provided by Platform Owners and Service Providers |
Some Platform Services are required to operate OpenControlPlane, such as those included in the openmcp-operator. Others are optional and extend the platform's capabilities to support specific use cases.
For more details on platform personas, see Why Kubernetes Is Inappropriate for Platforms, and How to Make It Better.
API
A Platform Service defines one or more APIs that consumers use to interact with its functionality.
A consumer may be a human or another system.
A Platform Service may introduce a user-facing API but is not required to do so. Most Platform Services operate without exposing user-facing APIs and provide their capabilities internally to the Platform Owner and Service Provider layers (see Domain and Service Provider Comparison).
Config
A Platform Service defines a Config resource that contains service-specific settings. This allows platform owners to configure the service for different deployment scenarios and to enable or disable features.
Deployment Model
A Platform Service runs on the platform cluster and reconciles its platform cluster API and/or onboarding cluster EndUserAPI. It creates and manages resources on the platform cluster.
For more details on cluster types, see Clusters and Namespaces.
Comparison to Service Providers
The following table distinguishes Platform Services and Service Providers based on where they introduce new APIs.
| Cluster | Platform Service | Service Provider |
|---|---|---|
| Platform cluster | ✳️ | ❌ |
| Onboarding cluster | ✳️ | ✅ |
| Control Plane | ❌ | ✅ |
✅ MUST introduce API on that cluster type.
✳️ MAY introduce API on that cluster type.
❌ MUST NOT introduce API on that cluster type.
Note that the Service Provider Config is not considered a service.