jellyfin: back media PVCs with shared static CephFS PVs
ci/woodpecker/pr/vector-test Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/kubeconform Pipeline was successful

This commit is contained in:
2026-08-15 13:03:49 +10:00
parent 066dc41b55
commit f5a721cd0b
6 changed files with 80 additions and 10 deletions
+2
View File
@@ -13,6 +13,8 @@ resources:
- schedule.yaml
- pvc-config.yaml
- pvc-transcode.yaml
- pv-media-tv.yaml
- pv-media-movies.yaml
- pvc-media-tv.yaml
- pvc-media-movies.yaml
- statefulset.yaml
+30
View File
@@ -0,0 +1,30 @@
---
# Static PV for the shared MOVIES CephFS subvolume. Same rootPath as arrstack's
# movies PV so radarr writes and jellyfin reads the identical library tree; each
# namespace gets its own PV (unique name + volumeHandle) pinned by claimRef.
apiVersion: v1
kind: PersistentVolume
metadata:
name: jellyfin-media-movies
spec:
capacity:
storage: 1Ti
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
volumeMode: Filesystem
claimRef:
namespace: jellyfin
name: jellyfin-media-movies
csi:
driver: cephfs.csi.ceph.com
volumeHandle: jellyfin-media-movies-static
nodeStageSecretRef:
name: csi-cephfs-secret
namespace: csi-cephfs
volumeAttributes:
staticVolume: "true"
clusterID: cephfs_csi_ssd_ec_4_1
fsName: cephfs
rootPath: /volumes/csi_ssd_ec_4_1/media-movies/e95d8ace-c736-465a-acc3-0c3e46dcede9
+30
View File
@@ -0,0 +1,30 @@
---
# Static PV for the shared TV CephFS subvolume. Same rootPath as arrstack's
# TV PV so sonarr writes and jellyfin reads the identical library tree; each
# namespace gets its own PV (unique name + volumeHandle) pinned by claimRef.
apiVersion: v1
kind: PersistentVolume
metadata:
name: jellyfin-media-tv
spec:
capacity:
storage: 1Ti
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
volumeMode: Filesystem
claimRef:
namespace: jellyfin
name: jellyfin-media-tv
csi:
driver: cephfs.csi.ceph.com
volumeHandle: jellyfin-media-tv-static
nodeStageSecretRef:
name: csi-cephfs-secret
namespace: csi-cephfs
volumeAttributes:
staticVolume: "true"
clusterID: cephfs_csi_ssd_ec_4_1
fsName: cephfs
rootPath: /volumes/csi_ssd_ec_4_1/media-tv/4692957d-f5df-4f72-b9c9-56e4ee6d1333
+7 -5
View File
@@ -1,7 +1,8 @@
---
# Movie library, shared read-many across replicas. Split out from the old single
# media PVC so radarr can mount and manage movies independently. cephfs-raid5-delete
# supports RWX and allows volume expansion; size is a starting point.
# Movie library, shared read-many across replicas. Statically bound to the
# jellyfin-media-movies PV (shared CephFS subvolume also used by arrstack/radarr).
# storageClassName "" + volumeName disables dynamic provisioning and binds the
# pre-created static PV.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
@@ -17,6 +18,7 @@ spec:
- ReadWriteMany
resources:
requests:
storage: 500Gi
storageClassName: cephfs-raid5-delete
storage: 1Ti
storageClassName: ""
volumeName: jellyfin-media-movies
volumeMode: Filesystem
+7 -5
View File
@@ -1,7 +1,8 @@
---
# TV library, shared read-many across replicas. Split out from the old single
# media PVC so sonarr can mount and manage TV independently. cephfs-raid5-delete
# supports RWX and allows volume expansion; size is a starting point.
# TV library, shared read-many across replicas. Statically bound to the
# jellyfin-media-tv PV (shared CephFS subvolume also used by arrstack/sonarr).
# storageClassName "" + volumeName disables dynamic provisioning and binds the
# pre-created static PV.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
@@ -17,6 +18,7 @@ spec:
- ReadWriteMany
resources:
requests:
storage: 500Gi
storageClassName: cephfs-raid5-delete
storage: 1Ti
storageClassName: ""
volumeName: jellyfin-media-tv
volumeMode: Filesystem
+4
View File
@@ -11,9 +11,13 @@ spec:
destinations:
- namespace: 'jellyfin'
server: https://kubernetes.default.svc
- namespace: 'arrstack'
server: https://kubernetes.default.svc
clusterResourceWhitelist:
- group: ''
kind: Namespace
- group: ''
kind: PersistentVolume
namespaceResourceWhitelist:
- group: '*'
kind: '*'