https://github.com/openmcp-project/service-provider-kro
Service provider kro manages the lifecycle of kro instances
https://github.com/openmcp-project/service-provider-kro
kro opencontrolplane service-provider
Last synced: 2 months ago
JSON representation
Service provider kro manages the lifecycle of kro instances
- Host: GitHub
- URL: https://github.com/openmcp-project/service-provider-kro
- Owner: openmcp-project
- License: apache-2.0
- Created: 2026-04-14T07:47:21.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-05-22T15:06:43.000Z (2 months ago)
- Last Synced: 2026-05-22T16:55:25.213Z (2 months ago)
- Topics: kro, opencontrolplane, service-provider
- Language: Go
- Homepage:
- Size: 149 KB
- Stars: 2
- Watchers: 2
- Forks: 2
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# service-provider-kro
An [openMCP](https://github.com/openmcp-project) Service Provider that installs and manages
[Kro](https://kro.run) on workload clusters via Flux HelmReleases.
[](https://api.reuse.software/info/github.com/openmcp-project/service-provider-kro)
## How It Works
When a `Kro` resource is created on the onboarding cluster, the controller:
1. Replicates the configured image pull secret into the tenant namespace and wires it into the `OCIRepository`
2. Creates a Flux `OCIRepository` pointing at the chart URL from the `ProviderConfig` and the version from the `Kro` spec
3. Creates a Flux `HelmRelease` that deploys the chart into `kro-system` on the workload cluster via a kubeconfig reference
## API Reference
### Kro
The domain service API. Created on the onboarding cluster, one per tenant.
```yaml
apiVersion: kro.services.openmcp.cloud/v1alpha1
kind: Kro
metadata:
name: mcp-01 # must match your MCP cluster so it will track the right cluster
spec:
# renovate: datasource=docker depName=registry.k8s.io/kro/charts/kro
version: 0.9.2
```
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `spec.version` | `string` | yes | Chart version tag |
_Note_: The name of the object _**MUST**_ match the name of your MCP cluster offering. This
ensures that only one installation can exist for a given cluster.
### ProviderConfig
Cluster-scoped operational configuration. Controls the chart location, image pull
secret replication, and Helm values passed to managed HelmReleases.
```yaml
apiVersion: kro.services.openmcp.cloud/v1alpha1
kind: ProviderConfig
metadata:
name: kro
spec:
pollInterval: 5m
chartURL: oci://registry.k8s.io/kro/charts/kro
imagePullSecret:
name: my-registry-secret
values:
# See https://github.com/kubernetes-sigs/kro/blob/main/helm/values.yaml
# for all available configuration options including:
# - rbac.mode: "unrestricted" (default) or "aggregation", see https://kro.run/docs/advanced/access-control
# - deployment.resources: CPU/memory limits and requests
# - config.resourceGraphDefinitionConcurrentReconciles: parallel RGD reconcilers
# - config.dynamicControllerConcurrentReconciles: parallel dynamic controller reconcilers
# - config.logLevel: "info", "debug", etc.
```
#### `spec`
| Field | Type | Required | Default | Description |
|-------|------|----------|---------|-------------|
| `chartURL` | `string` | no | `oci://registry.k8s.io/kro/charts/kro` | OCI URL of the Helm chart (`oci://` prefix is added automatically if missing) |
| `pollInterval` | `duration` | no | `1m` | How often the controller polls for changes |
| `imagePullSecret` | `LocalObjectReference` | no | — | Secret to replicate from the controller's namespace into tenant namespaces and set as `secretRef` on the `OCIRepository` |
| `values` | `object` | no | — | Arbitrary Helm values passed directly to the HelmRelease |
## What is Kro
Kro (Kube Resource Orchestrator) lets you create custom Kubernetes APIs by composing existing resources into
higher-level abstractions. Check out the [Kro documentation](https://kro.run/docs/overview) for more details.
## Running E2E Tests
```shell
task test-e2e
```
## Support, Feedback, Contributing
This project is open to feature requests/suggestions, bug reports etc. via [GitHub issues](https://github.com/openmcp-project/service-provider-kro/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](CONTRIBUTING.md).
## Security / Disclosure
If you find any bug that may be a security problem, please follow our instructions in [our security policy](https://github.com/openmcp-project/service-provider-kro/security/policy) on how to report it. Please do not create GitHub issues for security-related doubts or problems.
## Code of Conduct
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](https://github.com/SAP/.github/blob/main/CODE_OF_CONDUCT.md) at all times.
## Licensing
Please see our [LICENSE](LICENSE) for copyright and license information.
Detailed information including third-party components and their licensing/copyright information is available
[via the REUSE tool](https://api.reuse.software/info/github.com/openmcp-project/service-provider-kro).
---
