vmware-tanzu / velero

Backup and migrate Kubernetes applications and their persistent volumes
https://velero.io
Apache License 2.0
8.79k stars 1.41k forks source link

Add Support for Volume Group Snapshots in Velero #8447

Open shubham-pampattiwar opened 3 days ago

shubham-pampattiwar commented 3 days ago

Describe the problem/challenge you have

Velero currently supports volume snapshots for individual Persistent Volumes (PVs) through CSI drivers. However, as stateful applications increasingly rely on multiple volumes for data, logs, and backups, there is a growing need for consistent, group-level snapshots. Kubernetes introduces Volume Group Snapshots, enabling simultaneous, consistent snapshots across multiple PVs in a logical group.

Describe the solution you'd like

This feature would significantly enhance Velero’s capabilities for disaster recovery, backup, and restore processes for complex, multi-volume applications such as databases and analytics workloads.

Anything else you would like to add:

Reference Links:

Environment:

Vote on this issue!

This is an invitation to the Velero community to vote on issues, you can see the project's top voted issues listed here.
Use the "reaction smiley face" up to the right of this comment to vote.

kaovilai commented 3 days ago

Closing this issue also closes https://github.com/vmware-tanzu/velero/issues/6020 and PVC requirements for https://github.com/vmware-tanzu/velero/issues/2888

reasonerjt commented 1 day ago

@shubham-pampattiwar Are you suggesting we deliver the e2e support in v1.16? I was thinking we would do it in v1.17 when the work for Itemblock is fully done.

sseago commented 15 hours ago

@reasonerjt The ItemBlock model that this depends on was delivered in 1.15. The 1.16 changes use the ItemBlock work to enable parallel backup of ItemBlocks, but no ItemBlock model changes are anticipated. Nothing I'm doing in 1.16 is necessary for VolumeGroupSnapshot support.

With that being said, whether this makes sense for 1.16 or not is more a question of whether there's enough time to get the design and implementation done with time to test. In addition to the already-implemented ItemBlock work on the backup side, this functionality will probably require a similar ItemBlock design on the restore (similar to BackupItemBlock containing the base ItemBlock struct, I anticipate that we'll need a RestoreItemBlock struct that also contains ItemBlock) with similar changes to restore logic. Note that we do not intend to implement parallel ItemBlock restore at this time. The ItemBlock work on restore would be to facilitate making sure that all PVCs involved in the group snapshot (and their related pods) will be restored together.

shubham-pampattiwar commented 14 hours ago

@reasonerjt @sseago No e2e support in 1.16. I was thinking we can work on the design encapsulating whats needed and the relevant steps needed for enabling VGS in velero 1.16. Implementation to be followed in 1.17.