You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/about/design/service-provider-design.md
+21-7Lines changed: 21 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,6 +7,7 @@
7
7
- Define a `ServiceProvider` model that implements the higher level `API`/`Run` platform concept (to allow flexible deployment models, e.g. with `ClusterProvider` kcp)
8
8
- Define `ServiceProvider` contract to implement `ServiceProvider` as a loosely coupled component in the openMCP context
9
9
- Define how a `ServiceProvider` can be validated
10
+
- (MCP) v1 learnings have been addressed
10
11
11
12
## Non-Goals
12
13
@@ -101,7 +102,7 @@ The following validation flow validates that a `ServiceProvider` is working as e
101
102
102
103
## Runtime
103
104
104
-
What is a runtime? A runtime is a collection of abstractions and contracts that provides an environment in which user-defined logic is executed.
105
+
A runtime is a collection of abstractions and contracts that provides an environment in which user-defined logic is executed.
105
106
106
107
The service provider runtime is built on top of controller-runtime and provides a service provider specific reconciliation loop.
107
108
@@ -132,17 +133,18 @@ This may include special domain semantics similar to `ManagementPolicies` or the
132
133
133
134
Here we define the core interfaces that a consumer (`ServiceProvider` developer) has to implement, e.g. in Crossplane `ExternalConnector` creates `ExternalClient` which implements CRUD operations with `ExternalObservation`, `ExternalCreation`, etc. `Managed` interface defines what makes a k8s object a managed Crossplane resource, e.g. by referencing a `ProviderConfig`, specifying `ManagementPolicies`, `ConnectionSecrets`, etc.
134
135
135
-
### Observability
136
-
137
-
Logging, metrics, traces?
138
-
139
136
## Domain
140
137
141
138
The actual domain layer of a `ServiceProvider` (layer on top of the [runtime](#runtime)). The foundation to build a `ServiceProvider` template.
142
139
143
-
### RBAC
140
+
A `ServiceProvider` has the following responsibilities:
141
+
142
+
- Manage the lifecycle of the `API` and `Run` of a `DomainService`.
143
+
- Allow multiple `APIClusters` to target the same `RunCluster`, e.g. the Crossplane managed resources on `MCP` A and `MCP` B are reconciled by the same Crossplane installation on a shared `WorkloadCluster`.
144
144
145
-
What permissions does a service provider need...
145
+
## Template / Builder
146
+
147
+
Do we want a CLI like kubebuilder or a template like crossplane provider template?
146
148
147
149
## Service Provider Manager
148
150
@@ -151,3 +153,15 @@ The component that manages the lifecyclee of `ServiceProviders` and provides ser
151
153
candidates e.g. `openmcp-operator` or `service-provider-operator`
152
154
153
155
out of scope?
156
+
157
+
## Ideas
158
+
159
+
-`SoftDelete` platform concept. A `managed` service can transition to a `unmanaged` service by soft deleting its corresponding `ServiceProviderAPI` or the `ServiceProvider` entirely without losing the `DomainService`. This way a tenant could offboard itself partially or entirely from the platform without losing the provisioned infrastructure. This obviously depends on the ownership model of the infrastructure.
0 commit comments