Skip to content

Commit 5b82b47

Browse files
docs(readme): update managed setup, remove self-hosted part
1 parent 5330224 commit 5b82b47

File tree

1 file changed

+4
-113
lines changed

1 file changed

+4
-113
lines changed

README.md

Lines changed: 4 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -3,104 +3,13 @@
33
# Control Plane Operator
44

55
## About this project
6-
The Control Plane Operator is a universal Kubernetes Operator which bundles all necessary functionality to install so called `Components` (like Crossplane, External Secrets Operator, etc.) in a managed fashion into a Kubernetes cluster.
6+
The Control Plane Operator is a universal Kubernetes Operator which bundles all necessary functionality to automate the lifecycle of so called `Components` (like Crossplane, External Secrets Operator, etc.) in a managed fashion into a Kubernetes cluster.
77

8-
The Control Plane Operator can be used in different flavors and scenarios:
9-
- [Self-hosted](#self-hosted): You install the Control Plane Operator into your own Kubernetes cluster.
10-
* You can install `Components` like Crossplane, External Secrets Operator, etc. via one central [`ControlPlane` API](./config/crd/bases/core.orchestrate.cloud.sap_controlplanes.yaml). For more information see the [Components](#components) section.
11-
* You are responsible running and if necessary upgrading the Control Plane Operator.
12-
- [Managed](#managed): You are using a Managed Control Plane offering, where you order a `ManagedControlPlane` either via an API or via an Onboarding system.
13-
8+
The Control Plane Operator is part of the openMCP project. It exposes the [`ControlPlane` API](./config/crd/bases/core.orchestrate.cloud.sap_controlplanes.yaml), where `Components` can be configured that should be reconciled on another Kubernetes cluster. With openMCP, the `ControlPlane` is not directly exposed to an end user. Instead, the `ManagedControlPlane` API is the facade. The [mcp-operator](https://github.com/openmcp-project/mcp-operator) is interacting with the `ControlPlane` API.
149

15-
## Flavors
10+
## Using the Control Plane Operator in a Managed Setup
1611

17-
### Self-hosted
18-
19-
**PLEASE EXPECT SOME HICK-UPS WHEN SETTING UP THE OPERATOR IN A SELF-HOSTED SCENARIO. The following instructions might not be up-to-date.**
20-
21-
If you want to use the Control Plane Operator in your own Kubernetes cluster, please follow the instructions below.
22-
Make sure you are connected to a Kubernetes cluster that should serve as ControlPlane environment.
23-
24-
```shell
25-
# Add helm repo
26-
helm repo add control-plane-operator-repo \
27-
https://helm.example.com/control-plane-operator-repo \
28-
--force-update \
29-
--username <d/i-user>
30-
31-
# Create namespace where you install the Operator and Secrets
32-
kubectl create namespace cloud-orchestration
33-
34-
# Create secret to pull Helm Charts from Artifactory
35-
kubectl create secret docker-registry orchestrator-registry \
36-
--namespace cloud-orchestration \
37-
--docker-server="docker-registry.example.com/" \
38-
--docker-username=<docker user> \
39-
--docker-password=<Your token>
40-
41-
# Install FluxCD
42-
kubectl apply -f https://github.com/fluxcd/flux2/releases/latest/download/install.yaml
43-
44-
# Create secret to pull Crossplane Providers from Artifactory
45-
kubectl create secret generic artifactory-readonly-basic --type=kubernetes.io/basic-auth --from-literal=username=<docker user> --from-literal=password=<Your token>
46-
kubectl label secret artifactory-readonly-basic core.orchestrate.cloud.sap/copy-to-cp-namespaces=true
47-
kubectl annotate secret artifactory-readonly-basic core.orchestrate.cloud.sap/credentials-for-url='https://helm.example.com/control-plane-operator-repo'
48-
49-
# Install the Control Plane Operator into your cluster
50-
helm upgrade --install co-control-plane-operator control-plane-operator-repo/co-control-plane-operator --namespace cloud-orchestration --set "imagePullSecrets[0].name=orchestrator-registry" --values test/e2e/testdata/values.yaml
51-
```
52-
53-
After the installation you will see that a Pod will spin up.
54-
55-
Now, you have to install two `ReleaseChannel` resources.
56-
A `ReleaseChannel` resource defines which version you define should be latest or stable.
57-
(FYI: The `ReleaseChannel` feature was implemented with as a requirement in a managed setup. This may not seem suitable for a self-hosted environment. There are currently discussions about it. So this could change in the future. Feedback is much appreciated here.)
58-
59-
In the [`config/samples/releasechannel/`](./config/samples/releasechannel) directory you will find two sample `ReleaseChannel` resources.
60-
You can safely apply them to your cluster with the following command
61-
```shell
62-
kubectl apply -f config/samples/releasechannel/
63-
```
64-
65-
Make sure to keep the `latest` and `stable` `ReleaseChannel` resources up-to-date to your own needs.
66-
In the `ControlPlane` CR you can define which `ReleaseChannel` of a Component you want to use.
67-
68-
```yaml
69-
apiVersion: core.orchestrate.cloud.sap/v1beta1
70-
kind: ControlPlane
71-
metadata:
72-
name: controlplane-sample
73-
spec:
74-
target:
75-
# use local cluster
76-
serviceAccount: {}
77-
fluxServiceAccount:
78-
name: flux-deployer
79-
namespace: default
80-
overrides:
81-
host: https://kubernetes.default.svc
82-
crossplane: # Remove to disable Crossplane and Providers
83-
version: latest
84-
providers:
85-
- name: provider-kubernetes # IMPORTANT: this name must match the name in the ReleaseChannel!
86-
package: xpkg.upbound.io/crossplane-contrib/provider-kubernetes
87-
version: latest # this will install version v0.13.0 (defined in ReleaseChannel "latest") - see above
88-
btpServiceOperator: # Remove to disable the BTP Service Operator
89-
version: stable
90-
certManager: # Remove to disable Cert Manager
91-
version: stable
92-
externalSecretsOperator: # Remove to disable External Secrets Operator
93-
version: stable
94-
kyverno: # Remove to disable Kyverno
95-
version: stable
96-
```
97-
**Note:** Currently, it is only possible to install Crossplane Providers which are Open Source via the ControlPlane resource. We are working on the fix. In the meantime, you can go ahead and install them via the `Provider` CRD from Crossplane itself.
98-
99-
If you apply the `ControlPlane` CR, the Control Plane Operator will start to install the `Components` into your cluster.
100-
101-
### Managed
102-
103-
With the Managed setup, we will use this Operator in our landscape to provide a new API called `ManagedControlPlane`.
12+
With the Managed setup, we will use this Operator in our OpenMCP landscape to provide a new API called `ManagedControlPlane`.
10413

10514
With the `ManagedControlPlane` you will also have two different cluster setups how the MCP will look like:
10615
- Dedicated Cluster Setup - A standard Kubernetes cluster
@@ -121,7 +30,6 @@ C4Context
12130
Node(clusterscoped, "Cluster Scoped Resources", "") {
12231
SystemDb(controlplane, "ControlPlane Resource", "the ordered Control Plane", "")
12332
SystemDb(releasechannelStable, "ReleaseChannel Resource", "stable", "")
124-
SystemDb(releasechannelLatest, "ReleaseChannel Resource", "latest", "")
12533
}
12634
}
12735
@@ -137,7 +45,6 @@ C4Context
13745
UpdateElementStyle(namespace, $borderColor="orange", $fontColor="red")
13846
UpdateElementStyle(clusterscoped, $borderColor="grey")
13947
Rel(cpOperator, releasechannelStable, "watches")
140-
Rel(cpOperator, releasechannelLatest, "watches")
14148
UpdateRelStyle(cpOperator, others, $textColor="white", $lineColor="white", $offsetX="5")
14249
UpdateLayoutConfig($c4ShapeInRow="2", $c4BoundaryInRow="10")
14350
```
@@ -155,7 +62,6 @@ C4Context
15562
Node(clusterscoped, "Cluster Scoped Resources", "") {
15663
SystemDb(controlplane, "ControlPlane Resource", "the ordered Control Plane", "")
15764
SystemDb(releasechannelStable, "ReleaseChannel Resource", "stable", "")
158-
SystemDb(releasechannelLatest, "ReleaseChannel Resource", "latest", "")
15965
}
16066
16167
Node(namespace, "Managed ControlPlane Namespace", "") {
@@ -184,26 +90,11 @@ C4Context
18490
UpdateElementStyle(clusterscoped, $borderColor="grey")
18591
Rel(cpOperator, controlplane, "watches")
18692
Rel(cpOperator, releasechannelStable, "watches")
187-
Rel(cpOperator, releasechannelLatest, "watches")
18893
Rel(cpOperator, syncer, "reconciles")
18994
UpdateRelStyle(cpOperator, others, $textColor="white", $lineColor="white", $offsetX="5")
19095
UpdateLayoutConfig($c4ShapeInRow="2", $c4BoundaryInRow="10")
19196
```
19297

193-
## Components
194-
195-
You can install the following Components via the Control Plane Operator:
196-
197-
| Component | Supported in Self-hosted scenario | Supported in Managed scenario |
198-
| ------------------------------------------------------------------------------------- | :-------------------------------: | :----------------------------: |
199-
| [Crossplane](./pkg/controlplane/components/crossplane_component.go) | ✅ | ✅ |
200-
| [Crossplane Providers](./pkg/controlplane/components/crossplaneprovider_component.go) | ✅ (just open source providers) | ✅ (just open source providers) |
201-
| [External Secrets Operator](./pkg/controlplane/components/eso_component.go) | ✅ | ✅ |
202-
| [BTP Service Operator](./pkg/controlplane/components/btpso_component.go) | ✅ | ✅ |
203-
| [Cert Manager](./pkg/controlplane/components/cert_manager_component.go) | ✅ | ✅ |
204-
| [Kyverno](./pkg/controlplane/components/kyverno_component.go) | ✅ | ✅ |
205-
| [Flux](./pkg/controlplane/components/flux_component.go) | ❌ | ✅ |
206-
20798
## Requirements and Setup
20899

209100
You’ll need a Kubernetes cluster to run against. You can use [KIND](https://sigs.k8s.io/kind) to get a local cluster for

0 commit comments

Comments
 (0)