diff --git a/kustomize/bases/jellyfin/jellyfin-deployment.yaml b/kustomize/bases/jellyfin/jellyfin-deployment.yaml new file mode 100644 index 0000000..c94cbcb --- /dev/null +++ b/kustomize/bases/jellyfin/jellyfin-deployment.yaml @@ -0,0 +1,94 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: server + labels: + app.kubernetes.io/name: jellyfin +spec: + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + app.kubernetes.io/name: jellyfin + template: + metadata: + labels: + app.kubernetes.io/name: jellyfin + spec: + securityContext: + runAsUser: 33 + runAsGroup: 33 + fsGroup: 33 + containers: + - image: jellyfin/jellyfin + name: jellyfin + env: + - name: JELLYFIN_PublishedServerUrl + value: ${JELLYFIN_EXTERNAL_URL} + - name: JELLYFIN_CONFIG_DIR + value: /config + - name: JELLYFIN_CACHE_DIR + value: /cache + ports: + - name: http + containerPort: 8096 + resources: + requests: + cpu: 2000m + memory: 2Gi + limits: + cpu: 3500m + memory: 2Gi + volumeMounts: + - name: jellyfin-config-pvc + mountPath: /config + - name: jellyfin-cache-pvc + mountPath: /cache + volumes: + - name: jellyfin-config-pvc + persistentVolumeClaim: + claimName: jellyfin-config-pvc + - name: jellyfin-cache-pvc + persistentVolumeClaim: + claimName: jellyfin-cache-pvc +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: jellyfin-config-pvc + labels: + app.kubernetes.io/name: jellyfin +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 5Gi +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: jellyfin-cache-pvc + labels: + app.kubernetes.io/name: jellyfin +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 5Gi +--- +apiVersion: v1 +kind: Service +metadata: + name: server + labels: + app.kubernetes.io/name: jellyfin +spec: + selector: + app.kubernetes.io/name: jellyfin + ports: + - name: http + port: 80 + targetPort: http \ No newline at end of file diff --git a/kustomize/bases/jellyfin/jellyfin-ingress.yaml b/kustomize/bases/jellyfin/jellyfin-ingress.yaml new file mode 100644 index 0000000..01d96fa --- /dev/null +++ b/kustomize/bases/jellyfin/jellyfin-ingress.yaml @@ -0,0 +1,19 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: server + labels: + app.kubernetes.io/name: jellyfin + probe: blackbox-http +spec: + rules: + - host: ${JELLYFIN_EXTERNAL_HOST} + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: server + port: + name: http \ No newline at end of file diff --git a/kustomize/bases/jellyfin/kustomization.yaml b/kustomize/bases/jellyfin/kustomization.yaml new file mode 100644 index 0000000..0bf1e57 --- /dev/null +++ b/kustomize/bases/jellyfin/kustomization.yaml @@ -0,0 +1,36 @@ +resources: + - jellyfin-deployment.yaml + - jellyfin-ingress.yaml + +namePrefix: jellyfin- + +commonLabels: + app.kubernetes.io/name: jellyfin + +configMapGenerator: + - name: kustomize-generated-config + literals: + - JELLYFIN_EXTERNAL_HOST=jellyfin.badjware.dev + - JELLYFIN_EXTERNAL_URL=https://jellyfin.badjware.dev + +replacements: + - source: + kind: ConfigMap + name: kustomize-generated-config + fieldPath: data.JELLYFIN_EXTERNAL_HOST + targets: + - select: + kind: Ingress + name: server + fieldPaths: + - spec.rules.0.host + - source: + kind: ConfigMap + name: kustomize-generated-config + fieldPath: data.JELLYFIN_EXTERNAL_URL + targets: + - select: + kind: Deployment + name: server + fieldPaths: + - spec.template.spec.containers.0.env.0.value diff --git a/kustomize/env/prod/kustomization.yaml b/kustomize/env/prod/kustomization.yaml index 977c51e..cf49b34 100644 --- a/kustomize/env/prod/kustomization.yaml +++ b/kustomize/env/prod/kustomization.yaml @@ -8,6 +8,7 @@ resources: - ../../overlays/monitoring - ../../overlays/nextcloud - ../../overlays/home-assistant + - ../../overlays/jellyfin # resources: # - probes/external-services-bobcat-miner.yaml @@ -37,6 +38,8 @@ images: newTag: 20230613_120442-latest-arm64 - name: homeassistant/home-assistant newTag: 2023.5.4 + - name: jellyfin/jellyfin + newTag: 10.8.10 - name: postgres newTag: 9.6.23 - name: redis @@ -69,6 +72,11 @@ patches: kind: Deployment name: nextcloud-server path: patches/nextcloud-deployment-patch.yaml + - target: + version: v1 + kind: Deployment + name: jellyfin-server + path: patches/jellyfin-deployment-patch.yaml # - target: # version: v1 # kind: Prometheus diff --git a/kustomize/env/prod/patches/jellyfin-deployment-patch.yaml b/kustomize/env/prod/patches/jellyfin-deployment-patch.yaml new file mode 100644 index 0000000..a361e7e --- /dev/null +++ b/kustomize/env/prod/patches/jellyfin-deployment-patch.yaml @@ -0,0 +1,13 @@ +- op: add + path: /spec/template/spec/containers/0/volumeMounts/- + value: + name: share-media-nfs + mountPath: /share/media + readOnly: true +- op: add + path: /spec/template/spec/volumes/- + value: + name: share-media-nfs + nfs: + server: 192.168.20.30 + path: /mnt/pool0/media \ No newline at end of file diff --git a/kustomize/overlays/jellyfin/kustomization.yaml b/kustomize/overlays/jellyfin/kustomization.yaml new file mode 100644 index 0000000..9f395a3 --- /dev/null +++ b/kustomize/overlays/jellyfin/kustomization.yaml @@ -0,0 +1,5 @@ +resources: + - namespace.yaml + - ../../bases/jellyfin + +namespace: jellyfin diff --git a/kustomize/overlays/jellyfin/namespace.yaml b/kustomize/overlays/jellyfin/namespace.yaml new file mode 100644 index 0000000..3afecf7 --- /dev/null +++ b/kustomize/overlays/jellyfin/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: jellyfin \ No newline at end of file