# 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`. - Upstream: [kubernetes-csi/external-snapshotter](https://github.com/kubernetes-csi/external-snapshotter) **v8.5.0** - **Not** the per-driver **csi-snapshotter** sidecar — Longhorn ships that with its CSI components. **Order:** apply **before** relying on volume snapshots (e.g. before or early with **Longhorn**; **Ansible** runs this after **Cilium**, before **metrics-server** / **Longhorn**). ```bash 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: ```bash 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`).