Deprecate the module and hand CSI snapshots over to storage-foundation, keeping it standalone (v0.2.0)#103
Open
github-actions[bot] wants to merge 5 commits into
Open
Deprecate the module and hand CSI snapshots over to storage-foundation, keeping it standalone (v0.2.0)#103github-actions[bot] wants to merge 5 commits into
github-actions[bot] wants to merge 5 commits into
Conversation
Remove the OnAfterDeleteHelm hook that stripped finalizers from VolumeSnapshot, VolumeSnapshotContent and VolumeSnapshotClass resources when the module was disabled. Disabling the module must no longer touch these cluster-wide resources so that snapshot support can be safely handed over to the storage-foundation module. Also drop the unused snapshot-validation-webhook certificate hook and its values schema, and tidy the hooks Go module. Signed-off-by: Aleksandr Zimin <alexandr.zimin@flant.com> (cherry picked from commit cbaa0a1) Signed-off-by: Aleksandr Zimin <alexandr.zimin@flant.com>
v0.2.0 handoff of CSI snapshot support to the storage-foundation module. - module.yaml: stage Deprecated; drop enabledInBundles (no longer auto-enabled, still explicitly enable-able); require the storage-foundation module present (requirements.modules.storage-foundation ">= 0.0.0" — sf ships from main, no v1.0.0 tag; dev builds do not enforce requirements anyway). - crds/: replace the three snapshot.storage.k8s.io CRDs (+doc-ru) with byte-for-byte copies from storage-foundation (extended VolumeSnapshot with spec.mode), so both modules apply identical definitions without conflict during the handover. crds/ stays in the bundle for now; removal is v0.3.0. - templates/deprecation-alert.yaml: D8SnapshotControllerModuleDeprecated (severity 9, vector(1)) in d8-monitoring, UNGUARDED — fires whenever the module is enabled (incl. when storage-foundation is on and this module renders nothing else) to nudge disabling it. - docs: deprecated banner (README + .ru). Stacked on feat/cut-remove-finalizers-hook (v0.1.21) so the destructive on-delete hook removal is included; rebase onto main after v0.1.21 merges. Signed-off-by: Aleksandr Zimin <alexandr.zimin@flant.com> (cherry picked from commit a43cb0a) Signed-off-by: Aleksandr Zimin <alexandr.zimin@flant.com>
…76, no sf requirement Collapse the former v0.1.21 (remove destructive on-delete hook) and v0.2.0 (deprecate + CRD handover + alert) into ONE release, and drop v0.3.0 (crds/ stay). Key change vs the earlier handoff design: NO requirements.modules.storage-foundation. The module must stay independently installable — a cluster that does not enable storage-foundation still gets a working snapshot-controller (templates render while sf is absent) plus the deprecation alert, instead of losing snapshot support. requirements.deckhouse bumped to >= 1.76 (new d8 baseline). The bundled controller is upstream external-snapshotter (vanilla); it keeps working against the byte-for-byte storage-foundation CRDs because the fork is a backward- compatible superset — spec.mode is defaulted (Capture)/immutable and dropped by the typed client, VolumeSnapshotContent.volumeSnapshotRef is relaxed to optional, and the required/CEL constraints all hold for Capture-mode snapshots. CHANGELOG consolidated into v0.2.0 (v0.1.21 removed). Signed-off-by: Aleksandr Zimin <alexandr.zimin@flant.com>
…use >= 1.76 snapshot-controller stays INDEPENDENTLY installable (no requirements.modules. storage-foundation): a cluster that does not enable storage-foundation still gets a working snapshot-controller plus the deprecation alert instead of losing snapshot support. requirements.deckhouse -> >= 1.76. CHANGELOG folded into v0.2.0. Signed-off-by: Aleksandr Zimin <alexandr.zimin@flant.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Single deprecated release (v0.2.0) that consolidates snapshot support into the
storage-foundationmodule. It merges the two previously separate changes(destructive-hook removal + deprecation/CRD-handover) into one PR and does not
remove the CRDs from the bundle.
Changes:
storage-foundationrequirement — the module stays INDEPENDENTLY installable.A cluster that does not enable
storage-foundationstill gets a workingsnapshot-controller (its templates render while
storage-foundationis absent) plus thedeprecation alert, instead of losing snapshot support. When
storage-foundationISenabled, the existing guard empties this module down to just the alert and
storage-foundationowns the (byte-for-byte identical) CRDs.requirements.deckhouse: ">= 1.76"(new d8 baseline).snapshot.storage.k8s.ioCRDs as byte-for-byte copies of thestorage-foundation ones (extended
VolumeSnapshotwithspec.mode), so both modules canapply identical definitions without conflict. The bundled controller is upstream (vanilla)
external-snapshotter; it keeps reconciling snapshots against the extended CRDs because the
fork is a backward-compatible superset (
spec.modeis defaultedCapture/immutable anddropped by the typed client;
VolumeSnapshotContent.volumeSnapshotRefis relaxed to optional;all required/CEL constraints hold for Capture-mode snapshots).
VolumeSnapshot,VolumeSnapshotContentandVolumeSnapshotClasswhen the module was disabled (these objectsare now shared with
storage-foundation; disabling the module must not touch them). Alsoremoved the unused snapshot-validation-webhook certificate hook and its values schema.
D8SnapshotControllerModuleDeprecatedalert (PrometheusRule ind8-monitoring,severity_level: "9",expr: vector(1)), unguarded so it fires whenever the module is enabled.Impact on critical cluster components: no control-plane / ingress / Prometheus restarts. The
module is no longer auto-enabled, but any cluster with it explicitly enabled keeps its
snapshot-controller workload (while
storage-foundationis absent). Operators of an enabledmodule will see the deprecation alert (severity 9). Disabling the module no longer removes
finalizers from snapshot objects.
Why do we need it, and what problem does it solve?
storage-foundationis the owner of CSI snapshot support in the unified-snapshots architecture,so
snapshot-controlleris being deprecated. It must be handed over safely: no cluster may losesnapshot functionality, and existing snapshot objects must not break when the module is disabled.
Dropping the
storage-foundationrequirement (vs the earlier handoff design) is deliberate — acluster that has not enabled
storage-foundationmust still receive a functioningsnapshot-controller plus a migration nudge, not an inactive module and no snapshots.
What is the expected result?
storage-foundation: full snapshot-controller workload isrendered and CSI snapshots work against the extended CRDs; the deprecation alert fires.
storage-foundation: the guard leaves only the deprecation alert; noworkload/RBAC/webhook resources are rendered;
storage-foundationserves snapshots and owns theCRDs.
VolumeSnapshot/VolumeSnapshotContent/VolumeSnapshotClass.existing
VolumeSnapshotobjects keep their UID and ready/bound state.Checklist