diff --git a/apps/charts/coder/values.yaml b/apps/charts/coder/values.yaml index 9930b97..ca5c202 100644 --- a/apps/charts/coder/values.yaml +++ b/apps/charts/coder/values.yaml @@ -23,7 +23,7 @@ container: service: port: 80 type: ClusterIP - # + # OIDC client oidc: enabled: true diff --git a/apps/charts/jellyfin/Chart.yaml b/apps/charts/jellyfin/Chart.yaml index 333b29f..a881d2c 100644 --- a/apps/charts/jellyfin/Chart.yaml +++ b/apps/charts/jellyfin/Chart.yaml @@ -1,3 +1,7 @@ apiVersion: v2 version: 1.0.0 -name: Jellyfin +name: jellyfin +dependencies: + - name: common + version: 1.0.0 + repository: file://../../common diff --git a/apps/charts/jellyfin/notes.md b/apps/charts/jellyfin/notes.md deleted file mode 100644 index 41b4c17..0000000 --- a/apps/charts/jellyfin/notes.md +++ /dev/null @@ -1 +0,0 @@ -https://www.authelia.com/integration/openid-connect/clients/jellyfin/ diff --git a/apps/charts/jellyfin/templates/client.yaml b/apps/charts/jellyfin/templates/client.yaml deleted file mode 100644 index a8509cb..0000000 --- a/apps/charts/jellyfin/templates/client.yaml +++ /dev/null @@ -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 diff --git a/apps/charts/jellyfin/templates/config-pvc.yaml b/apps/charts/jellyfin/templates/config-pvc.yaml index 8cbd0b4..379bad9 100644 --- a/apps/charts/jellyfin/templates/config-pvc.yaml +++ b/apps/charts/jellyfin/templates/config-pvc.yaml @@ -1,11 +1 @@ -kind: PersistentVolumeClaim -apiVersion: v1 -metadata: - name: "{{ .Release.Name }}-config" -spec: - accessModes: - - "ReadWriteOnce" - resources: - requests: - storage: "1Gi" - storageClassName: "{{ .Values.globals.environment }}" +{{ include "common.pvc" . }} diff --git a/apps/charts/jellyfin/templates/deployment.yaml b/apps/charts/jellyfin/templates/deployment.yaml index d7472dd..4508e33 100644 --- a/apps/charts/jellyfin/templates/deployment.yaml +++ b/apps/charts/jellyfin/templates/deployment.yaml @@ -1,58 +1 @@ -apiVersion: apps/v1 -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 +{{ include "common.deployment" . }} diff --git a/apps/charts/jellyfin/templates/oidc.yaml b/apps/charts/jellyfin/templates/oidc.yaml new file mode 100644 index 0000000..c13745f --- /dev/null +++ b/apps/charts/jellyfin/templates/oidc.yaml @@ -0,0 +1 @@ +{{ include "common.oidc" . }} diff --git a/apps/charts/jellyfin/templates/service.yaml b/apps/charts/jellyfin/templates/service.yaml index 99905f3..f024c64 100644 --- a/apps/charts/jellyfin/templates/service.yaml +++ b/apps/charts/jellyfin/templates/service.yaml @@ -1,15 +1 @@ -apiVersion: v1 -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 }}' +{{ include "common.service" . }} diff --git a/apps/charts/jellyfin/templates/virtual-service.yaml b/apps/charts/jellyfin/templates/virtual-service.yaml index 36e9d43..766f6b9 100644 --- a/apps/charts/jellyfin/templates/virtual-service.yaml +++ b/apps/charts/jellyfin/templates/virtual-service.yaml @@ -1,39 +1 @@ -apiVersion: networking.istio.io/v1 -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 - +{{ include "common.virtualService" . }} diff --git a/apps/charts/jellyfin/values.yaml b/apps/charts/jellyfin/values.yaml index 29cc6ba..3e62b1a 100644 --- a/apps/charts/jellyfin/values.yaml +++ b/apps/charts/jellyfin/values.yaml @@ -2,4 +2,60 @@ image: repository: docker.io/jellyfin/jellyfin tag: latest@sha256:6d819e9ab067efcf712993b23455cc100ee5585919bb297ea5a109ac00cb626e pullPolicy: IfNotPresent + 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