Skip to content

Commit d85894b

Browse files
authored
Merge pull request kubernetes#3036 from lauralorenz/clusterid-prr-review
KEP-2149: PRR questionnaire and artifact
2 parents 8bb2033 + 1045c95 commit d85894b

File tree

3 files changed

+40
-16
lines changed

3 files changed

+40
-16
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
kep-number: 2149
2+
alpha:
3+
approver: "@wojtek-t"

keps/sig-multicluster/2149-clusterid/README.md

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -501,7 +501,7 @@ One effect of that decision is related to the upgrade path. Implementing this re
501501
| Blockers | Official API review if using *.k8s.io | Official API review |
502502
| Conformance testing | Not possible now, and no easy path forward | Standard |
503503

504-
**In the end, SIG-Multicluster discussed this with SIG-Architecture and it was decided to stick with the plan to use a CRD.** Notes from this conversation are in the [SIG-Architecture meeting agenda](https://docs.google.com/document/d/1BlmHq5uPyBUDlppYqAAzslVbAO8hilgjqZUTaNXUhKM/preview) for 3/25/2021.
504+
**In the end, SIG-Multicluster discussed this with SIG-Architecture and it was decided to stick with the plan to use a CRD.** Notes from this conversation are in the [SIG-Architecture meeting agenda](https://docs.google.com/document/d/1BlmHq5uPyBUDlppYqAAzslVbAO8hilgjqZUTaNXUhKM/preview) for 3/25/2021. A graduation criteria set for Alpha->Beta stage to fully immortalize this decision is intended to be the last chance to consider including this design in k/k or not.
505505

506506

507507
### Test Plan
@@ -621,6 +621,10 @@ enhancement:
621621

622622
## Production Readiness Review Questionnaire
623623

624+
**NOTE: While this KEP represents only the schema of a CRD that will be implemented
625+
out-of-tree and maintained separately from core Kubernetes, a best effort on the PRR
626+
questionnaire is enclosed below.**
627+
624628
<!--
625629
626630
Production readiness reviews are intended to ensure that features merging into
@@ -652,30 +656,51 @@ _This section must be completed when targeting alpha to a release._
652656
- [ ] Feature gate (also fill in values in `kep.yaml`)
653657
- Feature gate name:
654658
- Components depending on the feature gate:
655-
- [ ] Other
659+
- [x] Other
656660
- Describe the mechanism:
661+
- This feature is independently installed via a CRD hosted on the kubernetes-sigs Github.
657662
- Will enabling / disabling the feature require downtime of the control
658663
plane?
664+
- No
659665
- Will enabling / disabling the feature require downtime or reprovisioning
660666
of a node? (Do not assume `Dynamic Kubelet Config` feature is enabled).
667+
- No
661668

662669
* **Does enabling the feature change any default behavior?**
663-
Any change of default behavior may be surprising to users or break existing
664-
automations, so be extremely careful here.
670+
_Any change of default behavior may be surprising to users or break existing
671+
automations, so be extremely careful here._
672+
- No default Kubernetes behavior is currently planned to be based on this feature; it is
673+
designed to be used by the separately installed, out-of-tree, MCS controller. That being said,
674+
we are of the opinion that future features (default or not) may want to use this CRD (as debated
675+
in "To CRD or Not to CRD" section, above) but we believe it is in the scope of those future features
676+
to assess the impact of requiring CRD bootstrapping has on their feature stability if they do.
665677

666678
* **Can the feature be disabled once it has been enabled (i.e. can we roll back
667679
the enablement)?**
668-
Also set `disable-supported` to `true` or `false` in `kep.yaml`.
680+
_Also set `disable-supported` to `true` or `false` in `kep.yaml`.
669681
Describe the consequences on existing workloads (e.g., if this is a runtime
670-
feature, can it break the existing applications?).
682+
feature, can it break the existing applications?)._
683+
- Yes, as this feature only describes a CRD, it can most directly be disabled by uninstalling the CRD.
684+
However in practice it is expected that the bootstrapping of this CRD and the management of the well known property CRs themselves will be managed
685+
by the mcs-controller, and the recommended way to disable this feature will be to disable the mcs-controller.
686+
It is expected the mcs-controller will be responsible for detecting the presence
687+
of this CRD to gracefully fail or otherwise raise error messages that can be acted on if the
688+
CRD has been disabled by a mechanism other than the mcs-controller's lifecycle management of the CRD.
671689

672690
* **What happens if we reenable the feature if it was previously rolled back?**
691+
- Purely from this KEP's standpoint, feature reenablement - namely, reinstallation of the CRD - will
692+
do no more than reinstall the CRD schema. In relation to the expected lifecycle manager of this CRD (the mcs-controller), it is expected that on reenablement of the mcs-controller it will reinstall the CRD, will reestablish lifecycle management of the well known properties it is dependent on, including re-creating any relevant CRs.
673693

674694
* **Are there any tests for feature enablement/disablement?**
675-
The e2e framework does not currently support enabling or disabling feature
695+
_The e2e framework does not currently support enabling or disabling feature
676696
gates. However, unit tests in each component dealing with managing data, created
677697
with and without the feature, are necessary. At the very least, think about
678-
conversion tests if API types are being modified.
698+
conversion tests if API types are being modified._
699+
- As a dependency only for an out-of-tree component, there will not be e2e tests for feature enablement/disablement of
700+
this CRD in core Kubernetes, but e2e tests for this can be implemented in the
701+
[kubernetes-sigs/mcs-api repo](https://github.com/kubernetes-sigs/mcs-api) where a basic mcs-controller
702+
implementation lives. In reality, multiple mcs-controller implementations are expected to be produced outside of core
703+
and these production-ready mcs-controllers are responsible for their own e2e testing.
679704

680705
### Rollout, Upgrade and Rollback Planning
681706

keps/sig-multicluster/2149-clusterid/kep.yaml

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ reviewers:
1313
- "@mikedanese"
1414
approvers:
1515
- "@pmorie"
16-
#prr-approvers:
17-
# - N/A -- out of tree
16+
prr-approvers:
17+
- "@wojtek-t"
1818
see-also:
1919
- "/keps/sig-multicluster/1645-multi-cluster-services-api"
2020
#replaces:
@@ -36,12 +36,8 @@ latest-milestone: "v1.23"
3636

3737
# The following PRR answers are required at alpha release
3838
# List the feature gate name and the components for which it must be enabled
39-
# feature-gates:
40-
# - name: MyFeature
41-
# components:
42-
# - kube-apiserver
43-
# - kube-controller-manager
44-
# disable-supported: true
39+
feature-gates:
40+
disable-supported: true
4541

4642
# The following PRR answers are required at beta release
4743
# metrics:

0 commit comments

Comments
 (0)