Skip to content

Commit 129a5b2

Browse files
committed
Move the test plan under design details section
1 parent 37805c2 commit 129a5b2

File tree

1 file changed

+92
-33
lines changed

1 file changed

+92
-33
lines changed

keps/sig-storage/3476-volume-group/README.md

Lines changed: 92 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,20 @@
2323
- [Pre-provisioned VolumeGroupSnapshot](#pre-provisioned-volumegroupsnapshot)
2424
- [Delete VolumeGroupSnapshot](#delete-volumegroupsnapshot)
2525
- [Restore](#restore)
26+
- [Risks and Mitigations](#risks-and-mitigations)
27+
- [Design Details](#design-details)
28+
- [Test Plan](#test-plan)
29+
- [Prerequisite testing updates](#prerequisite-testing-updates)
30+
- [Unit tests](#unit-tests)
31+
- [Integration tests](#integration-tests)
32+
- [e2e tests](#e2e-tests)
33+
- [Graduation Criteria](#graduation-criteria)
34+
- [Alpha](#alpha)
35+
- [Alpha -> Beta](#alpha---beta)
36+
- [Beta -> GA](#beta---ga)
37+
- [Deprecation](#deprecation)
38+
- [Upgrade / Downgrade Strategy](#upgrade--downgrade-strategy)
39+
- [Version Skew Strategy](#version-skew-strategy)
2640
- [API Definitions](#api-definitions)
2741
- [VolumeGroupClass](#volumegroupclass)
2842
- [VolumeGroup](#volumegroup)
@@ -53,13 +67,6 @@
5367
- [Alternatives](#alternatives)
5468
- [Immutable VolumeGroup](#immutable-volumegroup)
5569
- [ModifyVolume](#modifyvolume)
56-
- [Graduation Criteria](#graduation-criteria)
57-
- [Alpha](#alpha)
58-
- [Alpha -> Beta](#alpha---beta)
59-
- [Beta -> GA](#beta---ga)
60-
- [Test Plan](#test-plan)
61-
- [Unit tests](#unit-tests)
62-
- [E2E tests](#e2e-tests)
6370
- [Production Readiness Review Questionnaire](#production-readiness-review-questionnaire)
6471
- [Feature enablement and rollback](#feature-enablement-and-rollback)
6572
- [Rollout, Upgrade and Rollback Planning](#rollout-upgrade-and-rollback-planning)
@@ -281,6 +288,84 @@ Phase 2:
281288

282289
* A VolumeGroup can be created from a VolumeGroupSnapshot or VolumeGroup source in one step. This is the same as what is described in the section `Create VolumeGroup from VolumeGroupSnapshot or another VolumeGroup`.
283290

291+
### Risks and Mitigations
292+
293+
This feature requires coordination between several controllers including the newly proposed volume group and group snapshot controller and existing external-provisioner and external-snapshotter components. We will introduce this feature as alpha and add tests to make sure it works properly.
294+
295+
## Design Details
296+
297+
### Test Plan
298+
299+
##### Prerequisite testing updates
300+
N/A
301+
302+
##### Unit tests
303+
* Unit tests for external volume group and group snapshot controller.
304+
* Unit tests for modified code path of external-provisioner and external-snapshotter.
305+
306+
##### Integration tests
307+
Integration tests are not needed.
308+
309+
##### e2e tests
310+
* e2e tests for external volume group and group snapshot controller.
311+
* e2e tests for modified code path of external-provisioner and external-snapshotter.
312+
* Add stress and scale tests before moving from beta to GA.
313+
314+
### Graduation Criteria
315+
#### Alpha
316+
* Initial feature implementation, including:
317+
* Volume group.
318+
* Volume group snapshot.
319+
* Sample implementation in the csi-driver-host-path.
320+
* Reviews from vendors whose storage systems can support this feature.
321+
* Add basic unit tests.
322+
323+
#### Alpha -> Beta
324+
* Unit tests and e2e tests outlined in design proposal implemented.
325+
326+
#### Beta -> GA
327+
* Volume group and group snapshot support is added to multiple CSI drivers.
328+
* Volume group and group snapshot feature deployed in production and have gone through at least one K8s upgrade.
329+
330+
#### Deprecation
331+
<!--
332+
- Announce deprecation and support policy of the existing flag
333+
- Two versions passed since introducing the functionality that deprecates the flag (to address version skew)
334+
- Address feedback on usage/changed behavior, provided on GitHub issues
335+
- Deprecate the flag
336+
-->
337+
No deprecation plan.
338+
339+
### Upgrade / Downgrade Strategy
340+
341+
<!--
342+
If applicable, how will the component be upgraded and downgraded? Make sure
343+
this is in the test plan.
344+
345+
Consider the following in developing an upgrade/downgrade strategy for this
346+
enhancement:
347+
- What changes (in invocations, configurations, API use, etc.) is an existing
348+
cluster required to make on upgrade, in order to maintain previous behavior?
349+
- What changes (in invocations, configurations, API use, etc.) is an existing
350+
cluster required to make on upgrade, in order to make use of the enhancement?
351+
-->
352+
External controllers handling volume group and group snapshot are additional sidecars deployed with the CSI driver. External-snapshotter and external-provisioner components will be updated to use the newer version that supports this feature. Upgrade should be fine as long as all the components are updated accordingly. Before downgrade, newly created volume groups and group snapshots which depend on the new CRDs should be deleted.
353+
354+
### Version Skew Strategy
355+
356+
<!--
357+
If applicable, how will the component handle version skew with other
358+
components? What are the guarantees? Make sure this is in the test plan.
359+
360+
Consider the following in developing a version skew strategy for this
361+
enhancement:
362+
- Does this enhancement involve coordinating behavior in the control plane and
363+
in the kubelet? How does an n-2 kubelet without this feature available behave
364+
when this feature is used?
365+
- Will any other components on the node change? For example, changes to CSI,
366+
CRI or CNI may require updating that component before the kubelet.
367+
-->
368+
The enhancement only affects the control plane but there are multiple components involved. If the controllers are updated to support this feature but the CSI driver itself does not support it, the `Ready` status of a new VolumeGroup API object will stay `false`.
284369

285370
### API Definitions
286371

@@ -1377,32 +1462,6 @@ message ModifyVolumeRequest {
13771462
```
13781463
External-provisioner will be modified so that modifying PVC by adding VolumeGroupName will trigger a ModifyVolume call (a new CSI controller RPC) to CSI driver.
13791464

1380-
## Graduation Criteria
1381-
### Alpha
1382-
* Initial feature implementation, including:
1383-
* Volume group.
1384-
* Volume group snapshot.
1385-
* Sample implementation in the csi-driver-host-path.
1386-
* Reviews from vendors whose storage systems can support this feature.
1387-
* Add basic unit tests.
1388-
1389-
### Alpha -> Beta
1390-
* Unit tests and e2e tests outlined in design proposal implemented.
1391-
1392-
### Beta -> GA
1393-
* Volume group and group snapshot support is added to multiple CSI drivers.
1394-
* Volume group and group snapshot feature deployed in production and have gone through at least one K8s upgrade.
1395-
1396-
## Test Plan
1397-
### Unit tests
1398-
* Unit tests for external volume group and group snapshot controller.
1399-
* Unit tests for modified code path of external-provisioner and external-snapshotter.
1400-
1401-
### E2E tests
1402-
* e2e tests for external volume group and group snapshot controller.
1403-
* e2e tests for modified code path of external-provisioner and external-snapshotter.
1404-
* Add stress and scale tests before moving from beta to GA.
1405-
14061465
## Production Readiness Review Questionnaire
14071466

14081467
### Feature enablement and rollback

0 commit comments

Comments
 (0)