From 83298c2dac714c13752d9bdd31c0805414fe2897 Mon Sep 17 00:00:00 2001 From: Roman Bednar Date: Mon, 6 Jun 2022 12:14:51 +0200 Subject: [PATCH] Add PRR --- .../README.md | 151 ++++-------------- .../kep.yaml | 1 + 2 files changed, 34 insertions(+), 118 deletions(-) diff --git a/keps/sig-storage/3333-reconcile-default-storage-class/README.md b/keps/sig-storage/3333-reconcile-default-storage-class/README.md index b5a831e300f0..6e8dee438c80 100644 --- a/keps/sig-storage/3333-reconcile-default-storage-class/README.md +++ b/keps/sig-storage/3333-reconcile-default-storage-class/README.md @@ -334,7 +334,7 @@ No change in cluster upgrade / downgrade process. This feature is implemented only in the API server and KCM and controlled by `RetroactiveDefaultStorageClass` feature gate. Following cases may happen: -| API server | KCM | behavior | +| API server | KCM | Behavior | |------------|-----|----------------------------------------------------------------------------------------------------------------------------------| | off | off | Existing Kubernetes behavior. | | on | off| Existing Kubernetes behavior, only users can change `pvc.spec.storageClassName=nil` to a SC name. | @@ -348,48 +348,14 @@ support. ## Production Readiness Review Questionnaire - - ### Feature Enablement and Rollback - - ###### How can this feature be enabled / disabled in a live cluster? - - -- [ ] Feature gate (also fill in values in `kep.yaml`) - - Feature gate name: - - Components depending on the feature gate: +- [X] Feature gate (also fill in values in `kep.yaml`) + - Feature gate name: RetroactiveDefaultStorageClass + - Components depending on the feature gate: kube-apiserver, + kube-controller-manager - [ ] Other - Describe the mechanism: - Will enabling / disabling the feature require downtime of the control @@ -399,43 +365,27 @@ well as the [existing list] of feature gates. ###### Does enabling the feature change any default behavior? - +Yes. See "Behavior change" section above for details. ###### Can the feature be disabled once it has been enabled (i.e. can we roll back the enablement)? - +Yes. It has to be disabled in a reverse order of enabling the feature - +first disable the feature in KCM then in API server. See "Version Skew +Strategy" section above for more details. ###### What happens if we reenable the feature if it was previously rolled back? +No issues are expected. The case is exactly the same as when the feature is +enabled for the first time. + ###### Are there any tests for feature enablement/disablement? - +Unit tests will cover feature enablement/disablement. ### Rollout, Upgrade and Rollback Planning +Will be provided when graduating to beta. + @@ -583,67 +533,37 @@ previous answers based on experience in the field. ###### Will enabling / using this feature result in any new API calls? - +Yes. + +- API call type: PATCH PVC +- estimated throughput: low, only once for PVCs that have + `pvc.spec.storageClassName=nil` +- originating component(s): kube-controller-manager ###### Will enabling / using this feature result in introducing new API types? - +No. ###### Will enabling / using this feature result in any new calls to the cloud provider? - +No. ###### Will enabling / using this feature result in increasing size or count of the existing API objects? - +No. ###### Will enabling / using this feature result in increasing time taken by any operations covered by existing SLIs/SLOs? - +With current behavior the PVC state would be stuck in `Pending` state so the +pod would not be scheduled at all. ###### Will enabling / using this feature result in non-negligible increase of resource usage (CPU, RAM, disk, IO, ...) in any components? - +PV controller already has all the informers it will need for this change to +be implemented. ### Troubleshooting @@ -689,12 +609,11 @@ Major milestones might include: - the version of Kubernetes where the KEP graduated to general availability - when the KEP was retired or superseded --> +- 1.25: initial version ## Drawbacks - +See "Behavior change" section above. ## Alternatives @@ -733,8 +652,4 @@ regardless when the SC or PVC is created, is more robust user experience. ## Infrastructure Needed (Optional) - \ No newline at end of file +Not needed. \ No newline at end of file diff --git a/keps/sig-storage/3333-reconcile-default-storage-class/kep.yaml b/keps/sig-storage/3333-reconcile-default-storage-class/kep.yaml index 572e899d9356..b0911d35059c 100644 --- a/keps/sig-storage/3333-reconcile-default-storage-class/kep.yaml +++ b/keps/sig-storage/3333-reconcile-default-storage-class/kep.yaml @@ -41,6 +41,7 @@ feature-gates: - name: RetroactiveDefaultStorageClass components: - kube-controller-manager + - kube-apiserver disable-supported: true # The following PRR answers are required at beta release