|
23 | 23 | - [Pre-provisioned VolumeGroupSnapshot](#pre-provisioned-volumegroupsnapshot)
|
24 | 24 | - [Delete VolumeGroupSnapshot](#delete-volumegroupsnapshot)
|
25 | 25 | - [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) |
26 | 40 | - [API Definitions](#api-definitions)
|
27 | 41 | - [VolumeGroupClass](#volumegroupclass)
|
28 | 42 | - [VolumeGroup](#volumegroup)
|
|
53 | 67 | - [Alternatives](#alternatives)
|
54 | 68 | - [Immutable VolumeGroup](#immutable-volumegroup)
|
55 | 69 | - [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) |
63 | 70 | - [Production Readiness Review Questionnaire](#production-readiness-review-questionnaire)
|
64 | 71 | - [Feature enablement and rollback](#feature-enablement-and-rollback)
|
65 | 72 | - [Rollout, Upgrade and Rollback Planning](#rollout-upgrade-and-rollback-planning)
|
@@ -281,6 +288,84 @@ Phase 2:
|
281 | 288 |
|
282 | 289 | * 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`.
|
283 | 290 |
|
| 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`. |
284 | 369 |
|
285 | 370 | ### API Definitions
|
286 | 371 |
|
@@ -1377,32 +1462,6 @@ message ModifyVolumeRequest {
|
1377 | 1462 | ```
|
1378 | 1463 | 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.
|
1379 | 1464 |
|
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 |
| - |
1406 | 1465 | ## Production Readiness Review Questionnaire
|
1407 | 1466 |
|
1408 | 1467 | ### Feature enablement and rollback
|
|
0 commit comments