Skip to content

Commit bb31ca2

Browse files
committed
Adds future goal for upgrade strategy
Signed-off-by: Sagar Muchhal <[email protected]>
1 parent 364db8f commit bb31ca2

File tree

1 file changed

+6
-33
lines changed

1 file changed

+6
-33
lines changed

docs/proposals/202105256-cluster-class-and-managed-topologies.md

+6-33
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ This method of provisioning the cluster would act as a single control point for
9898

9999
We are fully aware that in order to exploit the potential of ClusterClass and managed topologies, the following class of problems still needs to be addressed:
100100
- **Lifecycle of the ClusterClass**: Introduce mechanisms for allowing mutation of a ClusterClass, and the continuous reconciliation of the Cluster managed resources.
101+
- **Upgrade/rollback strategy**: Implement a strategy to upgrade and rollback the managed topologies.
101102
- **Extensibility/Transformation**: Introduce mechanism for allowing Cluster specific transformations of a ClusterClass (e.g. inject API Endpoint for CAPV, customize machine image by version etc.)
102103
- **Adoption**: Providing a way to convert existing clusters into managed topologies.
103104
- **Observability**: Build an SDK and enhance the Cluster object status to surface a summary of the status of managed topology.
@@ -440,8 +441,9 @@ With the introduction of ClusterClass, we are extending the repsonsibility of th
440441
The proposal calls for the implementation of an infrastructure cluster template to be referenced by the `ClusterClass` object. This is a required field for the `ClusterClass` object. This template would be used to create an infrastructure cluster object. Currently, this responsibility is assumed by the cluster operator/end user.
441442
442443
##### For Control plane providers
443-
A control plane provider should create a template for use of creation for the control plane objects. For instance, the kubeadm control plane provider should introduce the notion of a KubeadmControlPlaneTemplate for use by the cluster controller to create a managed Kubeadm Control plane object. The minimum set of parameters supported by the control plane template are:
444-
- infrastructure template reference
444+
Similarly, a control plane provider should also create a template for use of creation for the control plane objects. For instance, the kubeadm control plane provider should introduce the notion of a KubeadmControlPlaneTemplate for use by the cluster controller to create a managed Kubeadm Control plane object.
445+
446+
The CAPI Cluster Controller would use this template to instantiate a control plane object for the managed topology. The current CRD contract mandates that the control plane provider supports `replicas` in the `spec` fields. With the introduction of ClusterClass which is responsible for handling the kubernetes version too, the current contract needs to be expanded to include the support for `version` in the `spec` fields.
445447
446448
### Risks and Mitigations
447449
@@ -460,40 +462,11 @@ Existing clusters created without ClusterClass cannot switch over to using Clust
460462
461463
### Test Plan [optional]
462464
463-
**Note:** *Section not required until targeted at a release.*
464-
465-
Consider the following in developing a test plan for this enhancement:
466-
- Will there be e2e and integration tests, in addition to unit tests?
467-
- How will it be tested in isolation vs with other components?
468-
469-
No need to outline all of the test cases, just the general strategy.
470-
Anything that would count as tricky in the implementation and anything particularly challenging to test should be called out.
471-
472-
All code is expected to have adequate tests (eventually with coverage expectations).
473-
Please adhere to the [Kubernetes testing guidelines][testing-guidelines] when drafting this test plan.
474-
475-
[testing-guidelines]: https://git.k8s.io/community/contributors/devel/sig-testing/testing.md
465+
TBD
476466
477467
### Graduation Criteria [optional]
478468
479-
**Note:** *Section not required until targeted at a release.*
480-
481-
Define graduation milestones.
482-
483-
These may be defined in terms of API maturity, or as something else. Initial proposal should keep
484-
this high-level with a focus on what signals will be looked at to determine graduation.
485-
486-
Consider the following in developing the graduation criteria for this enhancement:
487-
- [Maturity levels (`alpha`, `beta`, `stable`)][maturity-levels]
488-
- [Deprecation policy][deprecation-policy]
489-
490-
Clearly define what graduation means by either linking to the [API doc definition](https://kubernetes.io/docs/concepts/overview/kubernetes-api/#api-versioning),
491-
or by redefining what graduation means.
492-
493-
In general, we try to use the same stages (alpha, beta, GA), regardless how the functionality is accessed.
494-
495-
[maturity-levels]: https://git.k8s.io/community/contributors/devel/sig-architecture/api_changes.md#alpha-beta-and-stable-versions
496-
[deprecation-policy]: https://kubernetes.io/docs/reference/using-api/deprecation-policy/
469+
The initial plan is to rollout Cluster Class and support for managed topologies under a feature flag which would be unset by default.
497470
498471
## Implementation History
499472

0 commit comments

Comments
 (0)