migrate jellyfin

This commit is contained in:
Morten Olsen
2026-01-01 21:08:11 +01:00
parent 6bf0048f5b
commit 432607dfe8
10 changed files with 67 additions and 136 deletions

View File

@@ -23,7 +23,7 @@ container:
service: service:
port: 80 port: 80
type: ClusterIP type: ClusterIP
#
# OIDC client # OIDC client
oidc: oidc:
enabled: true enabled: true

View File

@@ -1,3 +1,7 @@
apiVersion: v2 apiVersion: v2
version: 1.0.0 version: 1.0.0
name: Jellyfin name: jellyfin
dependencies:
- name: common
version: 1.0.0
repository: file://../../common

View File

@@ -1 +0,0 @@
https://www.authelia.com/integration/openid-connect/clients/jellyfin/

View File

@@ -1,10 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: OidcClient
metadata:
name: '{{ .Release.Name }}'
spec:
environment: '{{ .Values.environment }}'
redirectUris:
- path: /sso/OID/redirect/Authentik
subdomain: '{{ .Values.globals.subdomain }}'
matchingMode: strict

View File

@@ -1,11 +1 @@
kind: PersistentVolumeClaim {{ include "common.pvc" . }}
apiVersion: v1
metadata:
name: "{{ .Release.Name }}-config"
spec:
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: "1Gi"
storageClassName: "{{ .Values.globals.environment }}"

View File

@@ -1,58 +1 @@
apiVersion: apps/v1 {{ include "common.deployment" . }}
kind: Deployment
metadata:
name: "{{ .Release.Name }}"
spec:
strategy:
type: Recreate
replicas: 1
revisionHistoryLimit: 0
selector:
matchLabels:
app: "{{ .Release.Name }}"
template:
metadata:
labels:
app: "{{ .Release.Name }}"
spec:
containers:
- name: "{{ .Release.Name }}"
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: "{{ .Values.image.pullPolicy }}"
ports:
- name: http
containerPort: 8096
protocol: TCP
livenessProbe:
tcpSocket:
port: http
readinessProbe:
tcpSocket:
port: http
volumeMounts:
- mountPath: /config
name: config
- mountPath: /media/movies
name: movies
- mountPath: /media/tv-shows
name: tvshows
- mountPath: /media/music
name: music
- mountPath: /media/kids-music
name: kidsmusic
volumes:
- name: config
persistentVolumeClaim:
claimName: "{{ .Release.Name }}-config"
- name: movies
persistentVolumeClaim:
claimName: movies
- name: tvshows
persistentVolumeClaim:
claimName: tvshows
- name: music
persistentVolumeClaim:
claimName: music
- name: kidsmusic
persistentVolumeClaim:
claimName: kidsmusic

View File

@@ -0,0 +1 @@
{{ include "common.oidc" . }}

View File

@@ -1,15 +1 @@
apiVersion: v1 {{ include "common.service" . }}
kind: Service
metadata:
name: '{{ .Release.Name }}'
labels:
app: '{{ .Release.Name }}'
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8096
protocol: TCP
name: http
selector:
app: '{{ .Release.Name }}'

View File

@@ -1,39 +1 @@
apiVersion: networking.istio.io/v1 {{ include "common.virtualService" . }}
kind: VirtualService
metadata:
name: "{{ .Release.Name }}-public"
namespace: "{{ .Release.Namespace }}"
spec:
gateways:
- "{{ .Values.globals.istio.gateways.public }}"
- mesh
hosts:
- "{{ .Values.subdomain }}.{{ .Values.globals.domain }}"
- mesh
http:
- route:
- destination:
host: "{{ .Release.Name }}"
port:
number: 80
---
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
name: "{{ .Release.Name }}-private"
namespace: "{{ .Release.Namespace }}"
spec:
gateways:
- "{{ .Values.globals.istio.gateways.private }}"
- mesh
hosts:
- "{{ .Values.subdomain }}.{{ .Values.globals.domain }}"
- mesh
http:
- route:
- destination:
host: "{{ .Release.Name }}"
port:
number: 80

View File

@@ -2,4 +2,60 @@ image:
repository: docker.io/jellyfin/jellyfin repository: docker.io/jellyfin/jellyfin
tag: latest@sha256:6d819e9ab067efcf712993b23455cc100ee5585919bb297ea5a109ac00cb626e tag: latest@sha256:6d819e9ab067efcf712993b23455cc100ee5585919bb297ea5a109ac00cb626e
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
subdomain: jellyfin subdomain: jellyfin
# Deployment configuration
deployment:
strategy: Recreate
replicas: 1
revisionHistoryLimit: 0
# Container configuration
container:
port: 8096
healthProbe:
type: tcpSocket
port: http # Use named port
# Service configuration
service:
port: 80
targetPort: 8096
type: ClusterIP
# OIDC client
oidc:
enabled: true
redirectUris:
- "/sso/OID/redirect/Authentik"
# Volume configuration
volumes:
- name: config
mountPath: /config
persistentVolumeClaim: config
- name: movies
mountPath: /media/movies
persistentVolumeClaim: movies # External PVC (not prefixed)
- name: tvshows
mountPath: /media/tv-shows
persistentVolumeClaim: tvshows # External PVC (not prefixed)
- name: music
mountPath: /media/music
persistentVolumeClaim: music # External PVC (not prefixed)
- name: kidsmusic
mountPath: /media/kids-music
persistentVolumeClaim: kidsmusic # External PVC (not prefixed)
# Persistent volume claims
persistentVolumeClaims:
- name: config
size: 1Gi
# VirtualService configuration
virtualService:
enabled: true
gateways:
public: true
private: true