Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
32 lines
1.5 KiB
Markdown
32 lines
1.5 KiB
Markdown
# platform/longhorn
|
|
|
|
**Longhorn** — distributed replicated block storage across the 3 nodes.
|
|
|
|
- **Governing ADR:** [ADR-0003 — Distributed storage: Longhorn (+ bulk tier + Velero)](../../../home-network-k3s/decisions/adr-0003-storage-longhorn.md)
|
|
- **Spec:** [docs/04 — Storage & State](../../../home-network-k3s/docs/04-storage-and-state.md)
|
|
- **Serves:** R-STATE-01..04
|
|
- **Owner:** WS-STORAGE
|
|
|
|
## What this stub is
|
|
|
|
Flux `HelmRelease` + two `StorageClass`es:
|
|
- **`longhorn`** — the **default**, **3-replica** replicated class (replica count is the
|
|
`${LONGHORN_DEFAULT_REPLICA_COUNT}` overlay knob). Durable home for app/config state and KubeVirt
|
|
VM disks (via CDI).
|
|
- **`bulk`** — non-replicated tier for large media (Plex library, download staging). **STUB**: its
|
|
backing store is **OQ-2 (unresolved)** — escalate before finalizing. Plex's metadata DB stays on
|
|
the 3-replica class regardless (ADR-0003).
|
|
|
|
## Contract (consumed by everyone with state)
|
|
|
|
Per `roadmap/workstreams.md`, WS-STORAGE exposes the `longhorn` (replicated) and `bulk` (media)
|
|
StorageClasses; WS-APPS/WS-VM/WS-OBS reference them from ServiceDefinitions. Do not place bulk media
|
|
on the replicated tier or app DBs on the bulk tier.
|
|
|
|
## TODO (later phases)
|
|
|
|
- **OQ-2 (human):** decide the bulk-tier backing (NAS/NFS vs dedicated disk). Blocks `bulk` finalize.
|
|
- **Phase 2 (WS-STORAGE):** dedicated Longhorn data disk path (docs/02); prove a PVC survives
|
|
pod destroy/rebuild (R-STATE-01, Phase-2 exit gate).
|
|
- **Phase 4 (WS-STORAGE):** wire off-cluster backup target with Velero (R-STATE-03).
|