Skip to content

Commit 5c8d5a3

Browse files
committed
initial draft of modified proposal including new CRD
Signed-off-by: Jack Francis <[email protected]>
1 parent 6bb820a commit 5c8d5a3

File tree

3 files changed

+191
-79
lines changed

3 files changed

+191
-79
lines changed

docs/book/src/reference/glossary.md

+16-6
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ A temporary cluster that is used to provision a Target Management cluster.
2626
### Bootstrap provider
2727

2828
Refers to a [provider](#provider) that implements a solution for the [bootstrap](#bootstrap) process.
29-
Bootstrap provider's interaction with Cluster API is based on what is defined in the [Cluster API contract](#contract).
29+
Bootstrap provider's interaction with Cluster API is based on what is defined in the [Cluster API contract](#contract).
3030

31-
See [CABPK](#cabpk).
31+
See [CABPK](#cabpk).
3232

3333
# C
3434
---
@@ -132,6 +132,12 @@ See [core provider](#core-provider)
132132

133133
The Cluster API execution model, a set of controllers cooperating in managing the Kubernetes cluster lifecycle.
134134

135+
### Cluster Infrastructure
136+
137+
or __Kubernetes Cluster Infrastructure__
138+
139+
Defines the **infrastructure that supports a Kubernetes cluster**, like e.g. VPC, security groups, load balancers, etc. Please note that in the context of managed Kubernetes some of those components are going to be provided by the corresponding abstraction for a specific Cloud provider (EKS, OKE, AKS etc), and thus Cluster API should not take care of managing a subset or all those components.
140+
135141
### Contract
136142

137143
Or __Cluster API contract__
@@ -155,7 +161,7 @@ See [KCP](#kcp).
155161

156162
### Core provider
157163

158-
Refers to a [provider](#provider) that implements Cluster API core controllers; if you
164+
Refers to a [provider](#provider) that implements Cluster API core controllers; if you
159165
consider that the first project that must be deployed in a management Cluster is Cluster API itself, it should be clear why
160166
the Cluster API project is also referred to as the core provider.
161167

@@ -196,7 +202,7 @@ see [Server](#server)
196202

197203
### Infrastructure provider
198204

199-
Refers to a [provider](#provider) that implements provisioning of infrastructure/computational resources required by
205+
Refers to a [provider](#provider) that implements provisioning of infrastructure/computational resources required by
200206
the Cluster or by Machines (e.g. VMs, networking, etc.).
201207
Infrastructure provider's interaction with Cluster API is based on what is defined in the [Cluster API contract](#contract).
202208

@@ -205,7 +211,7 @@ When there is more than one way to obtain resources from the same infrastructure
205211

206212
For a complete list of providers see [Provider Implementations](providers.md).
207213

208-
### Inline patch
214+
### Inline patch
209215

210216
A [patch](#patch) defined inline in a [ClusterClass](#clusterclass). An alternative to an [external patch](#external-patch).
211217

@@ -269,6 +275,10 @@ See also: [Server](#server)
269275

270276
Perform create, scale, upgrade, or destroy operations on the cluster.
271277

278+
### Managed Kubernetes
279+
280+
Managed Kubernetes refers to any Kubernetes cluster provisioning and maintenance abstraction, usually exposed as an API, that is natively available in a Cloud provider. For example: [EKS](https://aws.amazon.com/eks/), [OKE](https://www.oracle.com/cloud/cloud-native/container-engine-kubernetes/), [AKS](https://azure.microsoft.com/en-us/products/kubernetes-service), [GKE](https://cloud.google.com/kubernetes-engine), [IBM Cloud Kubernetes Service](https://www.ibm.com/cloud/kubernetes-service), [DOKS](https://www.digitalocean.com/products/kubernetes), and many more throughout the Kubernetes Cloud Native ecosystem.
281+
272282
### Managed Topology
273283

274284
See [Topology](#topology)
@@ -306,7 +316,7 @@ A generically understood combination of a kernel and system-level userspace inte
306316
# P
307317
---
308318

309-
### Patch
319+
### Patch
310320

311321
A set of instructions describing modifications to a Kubernetes object. Examples include JSON Patch and JSON Merge Patch.
312322

docs/proposals/20220725-managed-kubernetes.md

+9-9
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ reviewers:
1616
creation-date: 2022-07-25
1717
last-updated: 2023-06-15
1818
status: implementable
19-
see-also: ./20230407-managed-k8s-capi-contract-changes.md
19+
see-also: ./20230407-flexible-managed-k8s-endpoints.md
2020
replaces:
2121
superseded-by:
2222
---
@@ -97,7 +97,7 @@ Some Cluster API Providers (i.e. Azure with AKS first and then AWS with EKS) hav
9797

9898
While working on supporting ClusterClass for EKS in Cluster API Provider AWS (CAPA), it was discovered that the current implementation of EKS within CAPA, where a single resource kind (AWSManagedControlPlane) is used for both ControlPlane and Infrastructure, is incompatible with other parts of CAPI assuming the two objects are different (Reference [issue here](https://github.com/kubernetes-sigs/cluster-api/issues/6126)).
9999

100-
Separation of ControlPlane and Infrastructure is expected for the ClusterClass implementation to work correctly. However, after the changes documented in the [Contract Changes to Support Managed Kubernetes CAEP](./20230407-managed-k8s-capi-contract-changes) have been implemented there is the option to supply only the control plane, but you still cannot supply the same resource for both.
100+
Separation of ControlPlane and Infrastructure is expected for the ClusterClass implementation to work correctly. However, after the changes documented in the [Contract Changes to Support Managed Kubernetes CAEP](./20230407-flexible-managed-k8s-endpoints.md) have been implemented there is the option to supply only the control plane, but you still cannot supply the same resource for both.
101101

102102
The responsibilities between the CAPI control plane and infrastructure are blurred with a managed Kubernetes service like AKS or EKS. For example, when you create a EKS control plane in AWS it also creates infrastructure that CAPI would traditionally view as the responsibility of the cluster “infrastructure provider”.
103103

@@ -118,7 +118,7 @@ A good example here is the API server load balancer:
118118
- Enforce the Managed Kubernetes recommendations as a requirement for Cluster API providers when they implement Managed Kubernetes.
119119
- If providers that have already implemented Managed Kubernetes and would like guidance on if/how they could move to be aligned with the recommendations of this proposal then discussions should be facilitated.
120120
- Provide advice in this proposal on how to refactor the existing implementations of managed Kubernetes in CAPA & CAPZ.
121-
- Propose a new architecture or API changes to CAPI for managed Kubernetes. This has been covered by the [Contract Changes to Support Managed Kubernetes CAEP](./20230407-managed-k8s-capi-contract-changes).
121+
- Propose a new architecture or API changes to CAPI for managed Kubernetes. This has been covered by the [Contract Changes to Support Managed Kubernetes CAEP](./20230407-flexible-managed-k8s-endpoints.md).
122122
- Be a concrete design for the GKE implementation in Cluster API Provider GCP (CAPG).
123123
- Recommend how Managed Kubernetes services would leverage CAPI internally to run their offer.
124124

@@ -247,7 +247,7 @@ The following section discusses different API implementation options along with
247247

248248
#### Option 1: Two kinds with a ControlPlane and a pass-through InfraCluster
249249

250-
**This option will be no longer needed when the changes documented in the [Contract Changes to Support Managed Kubernetes CAEP](./20230407-managed-k8s-capi-contract-changes) have been implemented as option 2 can be used for a simpler solution**
250+
**This option will be no longer needed when the changes documented in the [Contract Changes to Support Managed Kubernetes CAEP](./20230407-flexible-managed-k8s-endpoints.md) have been implemented as option 2 can be used for a simpler solution**
251251

252252
This option introduces 2 new resource kinds:
253253

@@ -304,7 +304,7 @@ type GCPManagedClusterSpec struct {
304304

305305
#### Option 2: Just a ControlPlane kind and no InfraCluster
306306

307-
**This option is enabled when the changes documented in the [Contract Changes to Support Managed Kubernetes CAEP](./20230407-managed-k8s-capi-contract-changes) have been implemented.**
307+
**This option is enabled when the changes documented in the [Contract Changes to Support Managed Kubernetes CAEP](./20230407-flexible-managed-k8s-endpoints.md) have been implemented.**
308308

309309
This option introduces 1 new resource kind:
310310

@@ -400,7 +400,7 @@ type GCPManagedClusterSpec struct {
400400
}
401401
```
402402

403-
When the changes documented in the [Contract Changes to Support Managed Kubernetes CAEP](./20230407-managed-k8s-capi-contract-changes) have been implemented there is the option to return the control plane endpoint directly from the ControlPlane instead of passing it via the Infracluster.
403+
When the changes documented in the [Contract Changes to Support Managed Kubernetes CAEP](./20230407-flexible-managed-k8s-endpoints.md) have been implemented there is the option to return the control plane endpoint directly from the ControlPlane instead of passing it via the Infracluster.
404404

405405
**Pros**
406406

@@ -429,7 +429,7 @@ The reasons for this recommendation are as follows:
429429

430430
If the managed Kubernetes services does not require any base infrastructure to be setup before creating the instance of the service then option 2 (Just a ControlPlane kind (and no InfraCluster) is the recommendation.
431431

432-
This recommendation assumes that the changes documented in the [Contract Changes to Support Managed Kubernetes CAEP](./20230407-managed-k8s-capi-contract-changes) have been implemented. Until that point option 1 (Two kinds with a ControlPlane and a pass-through InfraCluster) will have to be used.
432+
This recommendation assumes that the changes documented in the [Contract Changes to Support Managed Kubernetes CAEP](./20230407-flexible-managed-k8s-endpoints.md) have been implemented. Until that point option 1 (Two kinds with a ControlPlane and a pass-through InfraCluster) will have to be used.
433433

434434
### Existing Managed Kubernetes Implementations
435435

@@ -484,7 +484,7 @@ Some of the areas of change (this is not an exhaustive list):
484484
- Update the [Provider contracts documentation](../book/src/developer/providers/contracts.md) to state that the same kind should not be used to satisfy 2 different provider contracts.
485485
- Update the [Cluster Infrastructure documentation](../book/src/developer/providers/cluster-infrastructure.md) to provide guidance on how to populate the `controlPlaneEndpoint` in the scenario where the control plane creates the api server load balancer. We should include sample code.
486486
- Update the [Control Plane Controller](../book/src/developer/architecture/controllers/control-plane.md) diagram for managed k8s services case. The Control Plane reconcile needs to start when `InfrastructureReady` is true.
487-
- Updates based on the changes documented in the [Contract Changes to Support Managed Kubernetes CAEP](./20230407-managed-k8s-capi-contract-changes).
487+
- Updates based on the changes documented in the [Contract Changes to Support Managed Kubernetes CAEP](./20230407-flexible-managed-k8s-endpoints.md).
488488

489489
## Other Considerations for CAPI
490490

@@ -606,4 +606,4 @@ As mentioned in the goals section, it is up to providers with existing implement
606606
- [x] 03/17/2022: Compile a Google Doc following the CAEP template ([link](https://docs.google.com/document/d/1dMN4-KppBkA51sxXPSQhYpqETp2AG_kHzByXTmznxFA/edit?usp=sharing))
607607
- [x] 04/20/2022: Present proposal at a community meeting
608608
- [x] 07/27/2022: Move the proposal to a PR in CAPI repo
609-
- [x] 06/15/2023: Updates as a result of the [Contract Changes to Support Managed Kubernetes CAEP](./20230407-managed-k8s-capi-contract-changes.md) and also updates as a result of the current state of managed k8s in CAPI.
609+
- [x] 06/15/2023: Updates as a result of the [Contract Changes to Support Managed Kubernetes CAEP](./20230407-flexible-managed-k8s-endpoints.md) and also updates as a result of the current state of managed k8s in CAPI.

0 commit comments

Comments
 (0)