add the media stack

This commit is contained in:
tsvetkov
2026-02-27 00:55:03 +00:00
commit 179dca7339
18 changed files with 1689 additions and 0 deletions

105
base/jellyfin.yaml Normal file
View File

@@ -0,0 +1,105 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: jellyfin
namespace: media
labels:
app: jellyfin
app.kubernetes.io/name: jellyfin
app.kubernetes.io/component: media-server
spec:
replicas: 1
strategy:
type: Recreate # Required for single-instance apps with persistent storage
selector:
matchLabels:
app: jellyfin
template:
metadata:
labels:
app: jellyfin
spec:
containers:
- name: jellyfin
image: jellyfin/jellyfin:10.11.5
ports:
- name: http
containerPort: 8096
protocol: TCP
- name: discovery
containerPort: 7359
protocol: UDP
- name: dlna
containerPort: 1900
protocol: UDP
env:
- name: JELLYFIN_PublishedServerUrl
value: "http://jellyfin:8096"
envFrom:
- configMapRef:
name: media-config
volumeMounts:
- name: config
mountPath: /config
subPath: jellyfin
- name: media
mountPath: /media
readOnly: true
- name: transcode
mountPath: /config/transcodes
resources:
requests:
memory: "1Gi"
cpu: "500m"
limits:
memory: "4Gi"
cpu: "4000m"
livenessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 30
periodSeconds: 30
timeoutSeconds: 10
readinessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 15
periodSeconds: 10
timeoutSeconds: 5
volumes:
- name: config
persistentVolumeClaim:
claimName: media-config
- name: media
persistentVolumeClaim:
claimName: media-library
- name: transcode
persistentVolumeClaim:
claimName: media-transcode
---
apiVersion: v1
kind: Service
metadata:
name: jellyfin
namespace: media
labels:
app: jellyfin
spec:
type: NodePort
selector:
app: jellyfin
ports:
- name: http
port: 8096
targetPort: 8096
nodePort: 30096
protocol: TCP
- name: discovery
port: 7359
targetPort: 7359
nodePort: 30359
protocol: UDP