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
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -36,7 +36,7 @@ Note that `provider-kubernetes` depends on a running Crossplane installation to
36
36
37
37
The following subsections describe the objects that a `ServiceProvider` introduces.
38
38
39
-
### End User Objects
39
+
### API
40
40
41
41
A `ServiceProvider` defines a `ServiceProviderAPI` to allow end users to request managed service. It is important to distinguish between `ServiceProviderAPI` and `DomainServiceAPI`.
42
42
@@ -52,7 +52,7 @@ graph LR
52
52
While both are end user facing, they serve different purposes:
53
53
54
54
- The `ServiceProviderAPI` allows end users to request a `DomainService` and gain access to its `DomainServiceAPI`.
55
-
- The `DomainServiceAPI` delivers direct value to end users by providing the functionality a `DomainService`.
55
+
- The `DomainServiceAPI` delivers direct value to end users by providing the functionality of a `DomainService`.
56
56
57
57
```mermaid
58
58
sequenceDiagram
@@ -67,7 +67,7 @@ sequenceDiagram
67
67
usr->>ds: uses domain service through DomainServiceAPI
68
68
```
69
69
70
-
### Platform Operator Objects
70
+
### Config
71
71
72
72
A `ServiceProvider` defines a `ServiceProviderConfig` that enables platform operators to specify different offerings of a managed `DomainService`. For example, tenant 1 can consume the `ServiceProviderAPI` for `Crossplane` through a `CrossplaneProviderConfig``A`, which allows the installation of Crossplane versions `v1` and `v2`. In contrast, tenant 2 is restricted to consuming only `Crossplane` version `v1` through `CrossplaneProviderConfig``B`.
73
73
@@ -76,12 +76,14 @@ graph LR
76
76
%% Operator
77
77
OP[Operator]
78
78
SP[ServiceProvider]
79
+
SPA[ServiceProviderAPI]
79
80
SPC[ServiceProviderConfig]
80
81
OP -->|manages instances|SP
81
82
OP -->|manages instances|SPC
83
+
OP -. installs .-> SPA
82
84
```
83
85
84
-
Management of `ServiceProvider` and `ServiceProviderConfig` instances may be partially or fully automated.
86
+
All operator tasks may be partially or fully automated.
85
87
86
88
:::info
87
89
The `ServiceProvider` object itself is a higher level platform concept that is described in the corresponding `PlatformService`, [openmcp-operator](https://github.com/openmcp-project/openmcp-operator).
@@ -95,8 +97,6 @@ A) The available service offerings are made visible by installing the `ServicePr
95
97
96
98
B) Valid input values are communicated through `ServiceProviderConfig` objects created on the `OnboardingCluster`. A user from a tenant without an associated `ServiceProviderConfig` can technically still access a `ServiceProviderAPI`, but any attempt to deploy a `DomainService` will be denied. It is important to note that `ServiceProviderConfigs` are owned and managed by the platform operator but are exposed to end users for consumption.
97
99
98
-
Both objects are managed by the platform operator and not the `ServiceProvider` itself (see [platform operator objects](#platform-operator-objects)).
99
-
100
100
### Deployment Model
101
101
102
102
A `ServiceProvider` runs on the `PlatformCluster` and reconcile its `ServiceProviderAPI` on the `OnboardingCluster`. It deploys a `DomainService` on either a `WorkloadCluster` or `MCPCluster`, which then reconciles the `DomainServiceAPI`.
0 commit comments