Not every volume is an EBS or GCP PD. This episode covers backing up CSI-based volumes via VolumeSnapshotClass, the CSI support stable since Velero 1.14, and cross-provider strategies: moving volumes between clouds with file-level backup or snapshot conversion.

In episode 8, we covered cloud snapshots only as "native" EBS/PD snapshots handled by the provider plugin. But the modern storage world doesn't stop there: CSI (Container Storage Interface) lets volumes from dozens of providers — from Rook Ceph and Portworx to NFS drivers — be used as persistent volumes in Kubernetes. Velero must be able to back up all of them. Episode 19 covers how: CSI snapshots.
Imagine backing up the contents of archive shelves in different buildings (EBS, PD, Azure Disk, Ceph). Old provider plugins only know specific buildings. A CSI snapshot is the "standard container" that can pull out shelf contents in any building — as long as that building has a standard door (VolumeSnapshotClass).
Since Velero 1.14, CSI support is stable. The flow: Velero creates a VolumeSnapshot object (a Kubernetes CRD from external-snapshotter), then the CSI driver — not Velero — creates the actual snapshot. This moves the snapshot work from the Velero plugin to the established CSI ecosystem.
Cluster prerequisites:
volumesnapshotclasses, volumesnapshots, volumecontentsnapshots CRDs) is installed.Create/check the VolumeSnapshotClass for the storage your PVC uses:
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
name: csi-snapclass
driver: rbd.csi.ceph.com
deletionPolicy: RetaindeletionPolicy: Retain is important: the snapshot survives even if the VolumeSnapshot object is deleted — protecting against accidental deletion.
velero plugin add velero/velero-plugin-for-csi:v0.10.0velero backup create csi-backup \
--include-namespaces app \
--snapshot-volumes=trueVelero processes every PVC with an available VolumeSnapshotClass, creates the VolumeSnapshot, and records it in the backup. On restore, Velero creates new PVCs and restores the snapshots via the CSI driver.
Note
Key difference: a regular cloud snapshot needs a VSL (region, provider credentials); a CSI snapshot doesn't — it uses the CSI infrastructure already in the cluster. This is what makes CSI snapshots work for non-cloud storage like Ceph.
Not every CSI driver provides a compatible VolumeSnapshotClass. If none exists, the safe path is file-level backup (kopia) — completely independent of the driver's snapshot features:
velero backup create csi-fs-backup \
--include-namespaces app \
--default-volumes-to-fs-backupFile-level backup copies the volume's file contents to the BSL. Slower, but it works for all volume types.
Snapshots are cloud-specific: an EBS snapshot can't become a GCP PD. Cross-cloud, you must use a path both sides can read — and the only portable one is file-level backup on a shared BSL.
# On the AWS cluster: file-level backup
velero backup create cross-migrate --include-namespaces app --default-volumes-to-fs-backup
# On the GCP cluster: restore with the same BSL (S3 bucket read via interop)
velero restore create cross-restore --from-backup cross-migrate \
--storage-class-mappings gp2:standard-rwoThe volume data moves as plain files. --storage-class-mappings adapts the destination storage class (episodes 10-11).
For certain cases (very large data, limited time), you can combine: snapshot in the source cloud → create a volume → file-level backup → restore in the destination cloud. In practice this is "snapshot as an intermediary" to speed up reading, not carrying the snapshot itself.
Warning
The iron rule of cross-cloud migration: file-level backup, not snapshots. Relying on an EBS snapshot when moving to GCP is a recipe for a failed restore in the final minutes. Test one volume first before the whole workload.
Key takeaways:
--snapshot-volumes=true.--storage-class-mappings when storage classes differ.In episode 20 next, we measure and optimize: Performance & Data Management — tuning parallelism, Velero pod resource limits and node-agent scaling, plus analyzing and exporting backup sizes.