Files
home-server/clusters/noble/bootstrap/csi-snapshot-controller

CSI Volume Snapshot (external-snapshotter)

Installs the Volume Snapshot CRDs and the snapshot-controller so CSI drivers (e.g. Longhorn) and Velero can use VolumeSnapshot / VolumeSnapshotContent / VolumeSnapshotClass.

Order: apply before relying on volume snapshots (e.g. before or early with Longhorn; Ansible runs this after Cilium, before metrics-server / Longhorn).

kubectl apply -k clusters/noble/bootstrap/csi-snapshot-controller/crd
kubectl apply -k clusters/noble/bootstrap/csi-snapshot-controller/controller
kubectl -n kube-system rollout status deploy/snapshot-controller --timeout=120s

After this, create or label a VolumeSnapshotClass for Longhorn (velero.io/csi-volumesnapshot-class: "true") per clusters/noble/bootstrap/velero/README.md.

Troubleshooting

If snapshot-controller is CrashLoopBackOff with exit 255 / 1, check previous logs:

kubectl -n kube-system logs deploy/snapshot-controller --previous --tail=80

Typical causes:

  1. Volume Snapshot CRDs missing or wrong version — re-apply: kubectl apply -k clusters/noble/bootstrap/csi-snapshot-controller/crd
  2. Volume group snapshot APIs — this repo installs GA VolumeSnapshot* CRDs only. The controller overlay sets --feature-gates=CSIVolumeGroupSnapshot=false so the binary does not expect VolumeGroupSnapshot* CRDs.
  3. RBAC — re-apply the controller kustomize (includes rbac-snapshot-controller.yaml).