# longhorn-wffc — Longhorn StorageClass with WaitForFirstConsumer binding.
#
# The chart's default `longhorn` SC uses Immediate binding: the PV binds before
# the pod is scheduled, so on this single-storage-node topology (only talos-cp-1
# runs Longhorn) the scheduler often places the pod on cp-2/cp-3 where the volume
# can't attach ("CSINode does not contain driver driver.longhorn.io").
#
# WaitForFirstConsumer defers binding until the pod is scheduled, so the volume
# is provisioned on the node the pod lands on — and with a single Longhorn node
# that co-locates pod + volume on cp-1 automatically. This is the new default;
# the chart's `longhorn` SC is demoted (see longhorn-values default-class=false).
#
# volumeBindingMode is immutable, so this is a distinct SC (not an edit of the
# chart's). Existing volumes stay on `longhorn`; new PVCs use this.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: longhorn-wffc
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
provisioner: driver.longhorn.io
allowVolumeExpansion: true
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
parameters:
  numberOfReplicas: "1"
  staleReplicaTimeout: "30"
  fromBackup: ""
  dataLocality: "best-effort"
