Skip to content

Commit e271c70

Browse files
Update Release Signoff Checklist for KEP-3751 before GA
1 parent b11e3cb commit e271c70

File tree

3 files changed

+42
-24
lines changed

3 files changed

+42
-24
lines changed

keps/prod-readiness/sig-storage/3751.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,5 @@ alpha:
66
approver: "@johnbelamaric"
77
beta:
88
approver: "@johnbelamaric"
9+
stable:
10+
approver: "@johnbelamaric"

keps/sig-storage/3751-volume-attributes-class/README.md

+35-19
Original file line numberDiff line numberDiff line change
@@ -82,15 +82,15 @@
8282
Items marked with (R) are required *prior to targeting to a milestone / release*.
8383

8484
- [X] (R) Enhancement issue in release milestone, which links to KEP dir in [kubernetes/enhancements] (not the initial KEP PR)
85-
- [ ] (R) KEP approvers have approved the KEP status as `implementable`
85+
- [X] (R) KEP approvers have approved the KEP status as `implementable`
8686
- [X] (R) Design details are appropriately documented
87-
- [ ] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input (including test refactors)
88-
- [ ] e2e Tests for all Beta API Operations (endpoints)
89-
- [ ] (R) Ensure GA e2e tests for meet requirements for [Conformance Tests](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/conformance-tests.md)
87+
- [X] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input (including test refactors)
88+
- [X] e2e Tests for all Beta API Operations (endpoints) - [dashboard](https://testgrid.k8s.io/sig-storage-kubernetes#kind-storage-alpha-beta-features&include-filter-by-regex=%5BFeature%3AVolumeAttributesClass%5D&include-filter-by-regex=%5BFeature%3AVolumeAttributesClass%5D&include-filter-by-regex=%5C%5BFeature%3AVolumeAttributesClass%5C%5D)
89+
- [X] (R) Ensure GA e2e tests for meet requirements for [Conformance Tests](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/conformance-tests.md)
9090
- [ ] (R) Minimum Two Week Window for GA e2e tests to prove flake free
9191
- [ ] (R) Graduation criteria is in place
9292
- [ ] (R) [all GA Endpoints](https://github.com/kubernetes/community/pull/1806) must be hit by [Conformance Tests](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/conformance-tests.md)
93-
- [ ] (R) Production readiness review completed
93+
- [X] (R) Production readiness review completed
9494
- [ ] (R) Production readiness review approved
9595
- [X] "Implementation History" section is up-to-date for milestone
9696
- [X] User-facing documentation has been created in [kubernetes/website], for publication to [kubernetes.io]
@@ -694,10 +694,7 @@ VolumeAttributesClass parameters can be considered as best-effort parameters, th
694694

695695
* Basic unit tests for performance and quota system.
696696
* API conformance tests
697-
* E2E tests with happy tests in the [K8s storage framework](https://github.com/kubernetes/kubernetes/tree/master/test/e2e/storage/testsuites) for different drivers testing
698-
* E2E tests using mock driver to cause failure on create, update and recovering cases
699-
* [K8s storage framework](https://github.com/kubernetes/kubernetes/tree/master/test/e2e/storage/testsuites)
700-
* [csi-tes](https://github.com/kubernetes-csi/csi-test)
697+
* E2E tests: https://github.com/kubernetes/kubernetes/blob/master/test/e2e/storage/volumeattributesclass.go
701698
* Test coverage of quota usage with ResourceQuota and LimitRange
702699
* Measure latency impact to CreateVolume during beta and provide feedback to operators
703700
* Upgrade and rollback test when the feature gate changes to beta
@@ -717,12 +714,7 @@ For Alpha, describe what tests will be added to ensure proper quality of the enh
717714
For Beta and GA, add links to added tests together with links to k8s-triage for those tests:
718715
https://storage.googleapis.com/k8s-triage/index.html
719716
-->
720-
721-
- The behavior with feature gate and API turned on/off and mix match
722-
- The happy path with creating and modifying volume successfully with VolumeAttributesClass
723-
- [E2E CSI Test PR](https://github.com/kubernetes/kubernetes/pull/124151/)
724-
- [k8s-triage](https://storage.googleapis.com/k8s-triage/index.html?sig=storage&test=%5C%5BFeature%3AVolumeAttributesClass%5C%5D)
725-
- [Testgrid](https://testgrid.k8s.io/sig-storage-kubernetes#kind-alpha-features&include-filter-by-regex=%5BFeature%3AVolumeAttributesClass%5D&include-filter-by-regex=%5BFeature%3AVolumeAttributesClass%5D&include-filter-by-regex=%5C%5BFeature%3AVolumeAttributesClass%5C%5D)
717+
N/A. Please see e2e tests session below.
726718

727719
##### e2e tests
728720

@@ -736,6 +728,7 @@ https://storage.googleapis.com/k8s-triage/index.html
736728
We expect no non-infra related flakes in the last month as a GA graduation criteria.
737729
-->
738730

731+
- The behavior with feature gate and API turned on/off and mix match
739732
- Create VolumeAttributesClass successfully
740733
- Delete VolumeAttributesClass with finalizer fails
741734
- Delete VolumeAttributesClass without finalizer succeeds
@@ -744,7 +737,10 @@ We expect no non-infra related flakes in the last month as a GA graduation crite
744737
- Give a driver that does not ControllerModifyVolume, CSI volume should not be modified.
745738
- If ControllerModifyVolume fails, PVC should have appropriate events.
746739

747-
[API Conformance Test PR](https://github.com/kubernetes/kubernetes/pull/121849)
740+
- [API Conformance Test PR](https://github.com/kubernetes/kubernetes/pull/121849)
741+
- [E2E CSI Test PR](https://github.com/kubernetes/kubernetes/pull/124151/)
742+
- [k8s-triage](https://storage.googleapis.com/k8s-triage/index.html?sig=storage&test=%5C%5BFeature%3AVolumeAttributesClass%5C%5D)
743+
- [Testgrid](https://testgrid.k8s.io/sig-storage-kubernetes#kind-alpha-features&include-filter-by-regex=%5BFeature%3AVolumeAttributesClass%5D&include-filter-by-regex=%5BFeature%3AVolumeAttributesClass%5D&include-filter-by-regex=%5C%5BFeature%3AVolumeAttributesClass%5C%5D)
748744

749745
##### Stress tests
750746

@@ -843,7 +839,27 @@ A metric `controller_modify_volume_errors_total` will indicate a problem with th
843839

844840
###### Were upgrade and rollback tested? Was the upgrade->downgrade->upgrade path tested?
845841

846-
TODO Upgrade and rollback will be tested when the feature gate will change to beta.
842+
Tested in Beta:
843+
844+
1. Enable both feature flag and beta API in api-server, create PVC with VAC1, and then modify to VAC2
845+
2. Turn off the feature flag first, and then try to modify PVC back to VAC1, got error:
846+
847+
```
848+
The PersistentVolumeClaim "test-pvc" is invalid: spec.volumeAttributesClassName: Forbidden: update
849+
is forbidden when the VolumeAttributesClass feature gate is disabled
850+
```
851+
The pod and volume are both up and running.
852+
853+
3. Turn off the beta API, this time ``kubectl get vac`` got error:
854+
```
855+
Error from server (NotFound): Unable to list "storage.k8s.io/v1beta1, Resource=volumeattributesclasses":
856+
the server could not find the requested resource
857+
```
858+
859+
The pod and volume are both up and running.
860+
861+
4. Turn on both feature flag and beta API in api-server again. ``kubectl get vac`` shows the VACs again. Change PVC back to VAC1, modify is applied.
862+
847863

848864
###### Is the rollout accompanied by any deprecations and/or removals of features, APIs, fields of API types, flags, etc.?
849865

@@ -922,7 +938,7 @@ previous answers based on experience in the field.
922938

923939
###### Will enabling / using this feature result in any new API calls?
924940

925-
Yes. The VAC protection controller will be expensive because it needs to LIST PVCs/PVs but the call volume should be low.
941+
Yes. The VAC protection controller will be expensive because it needs to LIST PVCs/PVs but the call rate should be low because it is user triggered by changing VAC in the PVC.
926942

927943
- API call type: PATCH PVC
928944
- estimated throughput: low, only once for PVCs that have
@@ -953,7 +969,7 @@ Using this feature may result in non-negligible increase of resource usage IF cu
953969
- external-resizer CPU and memory will see a non-negligible increase if users increased the number of concurrent operations via the `--workers` flag. We follow the strategy of sharing that limit between `ControllerExpandVolume` and `ControllerModifyVolume` RPCs, similar to how external-provisioner functions.
954970
- The API-Server may see a spike of CPU when processing relevant changes.
955971

956-
Stress tests will determine increase in resource usage at varying amounts of concurrent volume modifications.
972+
Stress tests will determine increase in resource usage at varying amounts of concurrent volume modifications. Before promoting to Beta in 1.29, 250 modifications at a rate of 4 patches per second was tested on AWS and the bottle-neck is AWS limits.
957973

958974
### Troubleshooting
959975

keps/sig-storage/3751-volume-attributes-class/kep.yaml

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
title: Kubernetes Volume Provisioned IO
1+
title: Kubernetes VolumeAttributesClass and ModifyVolume
22
kep-number: 3751
33
authors:
44
- "@mattcarry"
55
- "@sunnylovestiramisu"
66
owning-sig: sig-storage
77
participating-sigs:
88
status: implementable
9-
creation-date: 2023-01-24
9+
creation-date: 2024-01-22
1010
reviewers:
1111
- "@msau42"
1212
- "@gnufied"
@@ -18,18 +18,18 @@ see-also:
1818
replaces:
1919

2020
# The target maturity stage in the current dev cycle for this KEP.
21-
stage: beta
21+
stage: stable
2222

2323
# The most recent milestone for which work toward delivery of this KEP has been
2424
# done. This can be the current (upcoming) milestone, if it is being actively
2525
# worked on.
26-
latest-milestone: "1.31"
26+
latest-milestone: "1.33"
2727

2828
# The milestone at which this feature was, or is targeted to be, at each stage.
2929
milestone:
3030
alpha: "v1.29"
3131
beta: "v1.31"
32-
stable:
32+
stable: "v1.33"
3333

3434
# The following PRR answers are required at alpha release
3535
# List the feature gate name and the components for which it must be enabled

0 commit comments

Comments
 (0)