Service provider Crossplane manages the lifecycle of Crossplane instances and Crossplane providers in a ManagedControlPlane
.
To run the service-provider-crossplane locally, you need to first bootstrap an openMCP environment by using openmcp-operator and cluster-provider-kind. A comprehensive guide will follow soon.
For current testing reasons, the service-provider-crossplane needs to run in the cluster. To run the latest version of your changes in your local environment, you need to run:
task build:img:build
This will build the image of the service-provider-crossplane locally and puts it into your local Docker registry.
docker images ghcr.io/openmcp-project/images/service-provider-crossplane
You can then apply the ServiceProvider
resource to your openMCP Platform cluster:
apiVersion: openmcp.cloud/v1alpha1
kind: ServiceProvider
metadata:
name: crossplane
spec:
image: ghcr.io/openmcp-project/images/service-provider-crossplane:... # latest local docker image build
When you already have an openMCP environment set up, you can deploy the service-provider-crossplane by applying the following manifest:
apiVersion: openmcp.cloud/v1alpha1
kind: ServiceProvider
metadata:
name: crossplane
spec:
image: ghcr.io/openmcp-project/images/service-provider-crossplane:<latest-version> # latest upstream version
A ProviderConfig
is an API where you can configure the installation of a Crossplane instance in your ManagedControlPlane
.
apiVersion: crossplane.services.openmcp.cloud/v1alpha1
kind: ProviderConfig
metadata:
name: default
spec:
chart:
repository: "https://charts.crossplane.io/stable"
name: crossplane
availableVersions:
- v1.20.0
- v1.19.0
availableProviders:
- name: provider-kubernetes
package: xpkg.upbound.io/upbound/provider-kubernetes
versions:
- v0.16.0
apiVersion: crossplane.services.openmcp.cloud/v1alpha1
kind: Crossplane
metadata:
name: crossplane-sample
namespace: default
spec:
version: v1.20.0
providers:
- name: provider-kubernetes
version: v0.16.0
To build the binary locally, you can use the following command:
task build
To build the image locally, you can use the following command:
task build:img:build
To run the unit tests locally, you can use the following command:
task test
To generate the CRDs, DeepCopy functions, and other boilerplate code, you can use the following command:
task generate
This project is open to feature requests/suggestions, bug reports etc. via GitHub issues. Contribution and feedback are encouraged and always welcome. For more information about how to contribute, the project structure, as well as additional contribution information, see our Contribution Guidelines.
If you find any bug that may be a security problem, please follow our instructions at in our security policy on how to report it. Please do not create GitHub issues for security-related doubts or problems.
We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone. By participating in this project, you agree to abide by its Code of Conduct at all times.
Copyright 2025 SAP SE or an SAP affiliate company and service-provider-crossplane contributors. Please see our LICENSE for copyright and license information. Detailed information including third-party components and their licensing/copyright information is available via the REUSE tool.
"Crossplane" is a registered trademark of the Linux Foundation.