Deploy jellyfin-ha as a true-HA StatefulSet under a new media project #237

Merged
benvin merged 10 commits from benvin/jellyfin-ha into main 2026-08-15 13:39:00 +10:00
5 changed files with 46 additions and 22 deletions
Showing only changes of commit 6769b5291e - Show all commits
+2 -1
View File
@@ -9,7 +9,8 @@ resources:
- cnpg_backup.yaml
- pvc-config.yaml
- pvc-transcode.yaml
- pvc-media.yaml
- pvc-media-tv.yaml
- pvc-media-movies.yaml
- statefulset.yaml
- pdb.yaml
- service.yaml
+17
View File
@@ -0,0 +1,17 @@
---
# 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.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jellyfin-media-movies
namespace: jellyfin
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 500Gi
storageClassName: cephfs-raid5-delete
volumeMode: Filesystem
+17
View File
@@ -0,0 +1,17 @@
---
# 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.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jellyfin-media-tv
namespace: jellyfin
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 500Gi
storageClassName: cephfs-raid5-delete
volumeMode: Filesystem
-17
View File
@@ -1,17 +0,0 @@
---
# Media library, shared read-many across replicas. Retain — this holds the
# actual media and must survive PVC deletion. Empty on first deploy; populating
# it is out of scope for this app.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jellyfin-media
namespace: jellyfin
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Ti
storageClassName: cephfs-raid6-retain
volumeMode: Filesystem
+10 -4
View File
@@ -207,8 +207,11 @@ spec:
mountPath: /config/transcodes
- name: cache
mountPath: /cache
- name: media
mountPath: /media
- name: media-tv
mountPath: /media/tv
readOnly: true
- name: media-movies
mountPath: /media/movies
readOnly: true
volumes:
- name: config
@@ -217,9 +220,12 @@ spec:
- name: transcode
persistentVolumeClaim:
claimName: jellyfin-transcode
- name: media
- name: media-tv
persistentVolumeClaim:
claimName: jellyfin-media
claimName: jellyfin-media-tv
- name: media-movies
persistentVolumeClaim:
claimName: jellyfin-media-movies
volumeClaimTemplates:
# Per-pod scratch cache — RWO, disposable, one PVC per replica.
- metadata: