a52a419dfd
Why: The media apps must serve and manage the actual media library, not empty volumes. That library already exists on the puppet-managed CephFS filesystem mediafs (mounted by the VM/incus instances at /shared/media) and is in active use, so the k8s apps must mount it in place rather than provision fresh storage. How: - Replace the two fresh movies/tvseries PVCs with one static CephFS PersistentVolume bound to mediafs and a single RWX media-library claim the whole stack shares. - Set the PV reclaim policy to Retain and mark it staticVolume so ceph-csi only mounts the pre-existing storage and can never provision or reclaim it; deleting the PVC or PV cannot destroy the underlying library. - Reuse the live csi-cephfs cluster parameters (clusterID cephfs_csi_ssd_ec_4_1 for mon discovery, csi-cephfs/csi-cephfs-secret node-stage secret) with fsName mediafs and rootPath / (the mediafs root that maps to /shared/media). - Mount the library into each app by subPath so the tree matches the VM layout: sonarr /mnt/tvseries (tvseries), radarr /mnt/movies (movies), jellyfin and nzbget both subtrees; prowlarr keeps no library mount. The jellyfin transcode PVC stays a fresh scratch volume. - Whitelist PersistentVolume in the media AppProject so the cluster-scoped PV can sync.
20 lines
522 B
YAML
20 lines
522 B
YAML
---
|
|
# Claim bound to the static mediafs PV. RWX so every app in the stack shares the
|
|
# one library. storageClassName "" + volumeName pin it to the static PV (no
|
|
# dynamic provisioning). Deleting this claim cannot reclaim the data (PV is
|
|
# Retain).
|
|
apiVersion: v1
|
|
kind: PersistentVolumeClaim
|
|
metadata:
|
|
name: media-library
|
|
namespace: media-apps
|
|
spec:
|
|
accessModes:
|
|
- ReadWriteMany
|
|
storageClassName: ""
|
|
volumeName: media-apps-media-library
|
|
resources:
|
|
requests:
|
|
storage: 10Ti
|
|
volumeMode: Filesystem
|