{{- if .Values.longhorn.enabled }} # Tenant data StorageClass. Tower's instance overlays don't pin a # storageClassName today (they let the cluster default decide). Phase # 1 of ADR 0003 just defines this class so Phase 2/3 can flip new # instances to bind here without further chart changes. # # `replicaCount` comes from values; Standalone tier ships replicas=1 # (durability is hourly S3, not local mirrors). apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: longhorn-tenants annotations: # Not the cluster default in Phase 1 — explicit opt-in only. storageclass.kubernetes.io/is-default-class: "false" provisioner: driver.longhorn.io allowVolumeExpansion: true reclaimPolicy: Delete volumeBindingMode: Immediate parameters: numberOfReplicas: "{{ .Values.longhorn.replicas }}" staleReplicaTimeout: "30" fromBackup: "" # fsType: ext4 is the default; explicit so the contract is in Git. fsType: "ext4" {{- end }} # NOTE: The CSI VolumeSnapshotClass (snapshot.storage.k8s.io/v1) lives # in Phase 3 of ADR 0003, alongside the Tower code that consumes it. # It depends on the external-snapshotter CRDs which Longhorn does not # ship — they're a separate install. Adding it here would fail the # initial sync on a fresh cluster. Phase 3 will land both together # (snapshotter CRDs + VolumeSnapshotClass + Tower VolumeClone path).