Snapshot CRD Upgrade Contract
The snapshot CRDs are shared cluster-scoped API objects. They must be installed once per cluster, even when multiple zcblock CSI driver instances are installed to simulate regions.
Current contract:
- External snapshotter release:
v8.3.0 - Snapshot CRD API group:
snapshot.storage.k8s.io - Current required storage version:
v1 - Current supported storage versions:
v1 - Stair-step upgrades are required before any future storage-version change.
The installer annotates each snapshot CRD with:
zcutils.io/snapshotter-versionzcutils.io/snapshot-crd-storage-versionzcutils.io/snapshot-crd-supported-versionszcutils.io/snapshot-crd-n-minus-1zcutils.io/snapshot-crd-stair-step-required=true
When a future CRD storage version appears, zcblock releases must follow this path:
- Ship release
Nthat supports both the currently installed CRD storage version and the next storage version. - Roll release
Neverywhere while the CRD still stores objects at the old version. - Apply the new CRDs and run any required Kubernetes storage-version migration.
- Confirm every cluster stores the new version.
- Only in release
N+1may support forN-1be removed.
The practical rule is: a release that changes the expected CRD storage version must also support the previous storage version. If the installer sees an installed snapshot CRD storage version outside its supported set, it stops instead of applying the CRD so operators can upgrade through an intermediate release.