--- apiVersion: v1 kind: Namespace metadata: name: plex --- apiVersion: apps/v1 kind: Deployment metadata: name: jellyfin namespace: plex spec: selector: matchLabels: app: jellyfin replicas: 1 template: metadata: labels: app: jellyfin annotations: backup.velero.io/backup-volumes-excludes: media,tmpfs spec: containers: - name: jellyfin image: jellyfin/jellyfin:10.8.5 ports: - containerPort: 8096 name: http-web-svc volumeMounts: - mountPath: "/config" name: config - mountPath: "/media" name: media - mountPath: "/transcodes" name: tmpfs env: - name: PUID value: "1000" - name: PGID value: "1000" - name: NVIDIA_DRIVER_CAPABILITIES value: "all" livenessProbe: httpGet: path: /web/index.html port: 8096 failureThreshold: 5 initialDelaySeconds: 10 periodSeconds: 30 timeoutSeconds: 10 resources: limits: nvidia.com/gpu: 1 affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: gpu-node operator: In values: - "true" volumes: - name: config persistentVolumeClaim: claimName: jellyfin-config-pvc - name: media persistentVolumeClaim: claimName: media2-pvc - name: tmpfs emptyDir: medium: Memory sizeLimit: 12Gi --- apiVersion: v1 kind: Service metadata: name: jellyfin-service namespace: plex spec: selector: app: jellyfin type: ClusterIP ports: - name: jellyfin-web-port protocol: TCP port: 8096 targetPort: http-web-svc --- apiVersion: traefik.containo.us/v1alpha1 kind: IngressRoute metadata: name: jellyfin namespace: plex spec: entryPoints: - websecure routes: - kind: Rule match: Host(`jellyfin.jibby.org`) services: - kind: Service name: jellyfin-service port: 8096