the only point to note for a successful CSI backup using Velero is that the PVC(which uses the CSI provisioner) must be in a "BOUND" state, Velero Server needs to be installed with the CSI flag enabled and Velero's BackupStorageLocation defined.
1. Create a Kubernetes cluster
2. Create StorageClass for the CSI provisioner that is available. Before that, ensure the CSI drivers(CSI Provisioner) are deployed and Snapshotter CRD's (VolumeSnapshot, VolumeSnapshotContent, and VolumeSnapshotclass) are available in the cluster.
3. Create the necessary PVC and pods. Ensure the POD, which is using the PVC, is in a running state.
4. Create VolumeSnapshotClass for the same CSI provisioner
5. Install Velero server with EnableCSI=true flag set. Add GCP and CSI plugins either during Velero server install, or later, but before initiating the backup. Configure the default backup storage location during install or create one later, again, before initiating the backup. (This step can also be done after Step 2 mentioned above)
6. Define/Create the necessary backup.
Hope this helps.
Regards,
Swanand