Define StorageClass, PersistentVolume, and data-protection conventions #6
Labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Blocks
Depends on
#4 Inventory application datasets on TrueNAS and prepare required NFS access
gitchegumi/homelab
Reference
gitchegumi/homelab#6
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Description
Define the storage, persistence, and data-protection conventions that application manifests and UDS packages must follow. These conventions are derived from the completed workload and dataset decisions in #4 rather than imposing one storage pattern on every application.
The application-specific placement decisions and migration order are documented in Mat Homelab Application Migration Plan.
Dependency
Blocked by #4. The workload inventory determines which data remains static on TrueNAS, moves into dynamically provisioned storage, remains node-local, or stays completely outside Kubernetes.
Dynamic provisioning was selected and validated under #5:
truenas-iscsifor block-backed RWO storagetruenas-nfsfor shared-file RWX storageConventions to formalize
Dynamic iSCSI RWO
Use for ordinary single-replica application state, SQLite data, and database volumes that require single-writer block storage. Applications must request the class explicitly unless a separate default-class decision is documented.
Dynamic NFS RWX
Use when an application requires shared file access across pods or nodes. Do not select RWX merely because it is convenient; the workload must actually tolerate shared filesystem semantics.
Static NFS for existing TrueNAS data
Use static PVs for large or pre-existing datasets that remain owned by TrueNAS, including:
Static PVs must not imply that Kubernetes owns or may delete the underlying dataset.
Node-local storage
Use local PVs plus node affinity for data that intentionally remains attached to a specific worker:
The workload is unavailable when that node is unavailable. Manifests must make this constraint obvious and must not claim transparent failover.
External TrueNAS services
MinIO, NocoDB, the UDS Keycloak PostgreSQL service, and the retained media automation stack remain external network services. Kubernetes workloads consume their endpoints; Kubernetes does not claim their datasets through PVCs.
Retention and migration rules
Documentation deliverables
Acceptance criteria
Migrated to new organization