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
This PR adds support for a VSC-only snapshot model in snapshot-controller and external-snapshotter sidecars.
With this change,
VolumeSnapshotContentobjects can be created and processed without a correspondingVolumeSnapshot.This enables internal controllers (e.g. storage-foundation) to perform CSI snapshot and restore operations using
service-level APIs without exposing
VolumeSnapshotresources to user namespaces.The implementation is backward-compatible and preserves existing behavior for legacy
VolumeSnapshot-based workflows.This change does not trigger restarts of control-plane components, ingress controllers,
or other critical cluster services.
Why do we need it, and what problem does it solve?
Some internal Deckhouse components (virtualization, managed services, backup infrastructure)
require the ability to:
without creating
VolumeSnapshotor temporary PVC objects in user namespaces.The standard CSI snapshot workflow enforces a strict
VolumeSnapshot ↔ VolumeSnapshotContentbinding, which makes it unsuitable for service-level, short-lived operations where:
This PR removes the hard requirement for
VolumeSnapshotRefinVolumeSnapshotContentand allows snapshot-controller and sidecar-controller to work directly with VSC as the
source of truth, enabling a clean, secure, and minimal service workflow.
What is the expected result?
After applying these changes:
VolumeSnapshotContentcan be created withoutspec.volumeSnapshotRef.VolumeSnapshotRefis present.CreateSnapshot/DeleteSnapshotfor VSC-only objects,VolumeSnapshotContent.UIDwhen noVolumeSnapshotexists.VolumeSnapshotobjects are created implicitly.VolumeSnapshot-based workflows continue to work unchanged.Correctness can be verified by:
VolumeSnapshotContentwithoutvolumeSnapshotRef,CreateSnapshotandReadyToUse=true,DeleteSnapshotexecution.Checklist