This knowledge article advises of a scenario where in Tanzu Mission Control (TMC), for a particular vSphere with Tanzu (TKGs) cluster Data Protection (DP) is enabled with option 'Enable CSI Snapshot for volume backup' selected.
The Data Protection (DP) installation is advised as 'Data Protection is being enabled' message and never displays 'Data Protection is enabled' message.
The Data Protection (DP) installation becomes stuck / is not advised as enabled.
Tanzu Mission Control
vSphere with Tanzu (TKGs)
K8s cluster 1.26.5 or greater
The cluster you are enabling DP with CSI snapshot for volume backup does not have VolumeSnapshotClass configured per CSI driver.
To enable Data Protection without CSI snapshot for volume backup option, deselect CSI snapshot for volume backup when enabling Data Protection and just use FSB option instead.
or
If you require both FSB and CSI snapshot for volume backup
Then be sure the prerequisites for CSI snapshot for volume backup found here have been implemented.
Pay particular attention to the VolumeSnapshotClass where you must configure a yaml for each CSI driver that is associated to the persistent volumes you must backup.
When setting up VolumeSnapshotClass their yaml must look similar to below:
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
name: csi-azuredisk-vsc
labels:
velero.io/csi-volumesnapshot-class: "true"
driver: disk.csi.azure.com
deletionPolicy: Delete
If your VolumeSnapshotClass' are missing the label - velero.io/csi-volumesnapshot-class: "true" or label - velero.io/csi-volumesnapshot-class=true then make sure it is added.
After adding this label to your VolumeSnapshotClass' disable and reenable Data Protection with CSI snapshot for volume backup option.
Also be sure that the CSI driver added to your VolumeSnapshotClass must be the same as the persistent volumes you must backup.
A VolumeSnapshotClass per CSI is the requirement here.
You can check what CSI driver your persistent volumes are using by checking their 'kubectl describe' or 'kubectl get pv <pv_name> -oyaml' to view what storage class is in use, and then do a 'kubectl get storageclass' to view the CSI driver in use.
kubectl get storageclass
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
storage-policy-default (default) csi.vsphere.vmware.com Delete Immediate true 331d