add app jellyfin

This commit is contained in:
2024-08-05 00:10:14 +10:00
parent f92cbe0bbd
commit 9a290527ba
13 changed files with 359 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
helmCharts:
- name: jellyfin
repo: https://beluga-cloud.github.io/charts
version: 2.3.0
releaseName: jellyfin
valuesFile: values.yaml

View File

@@ -0,0 +1,148 @@
persistence:
config:
enabled: true
volumeClaimSpec:
accessModes:
- ReadWriteOnce
volumeName: jellyfin-config
storageClassName: local-path
data:
enabled: true
volumeClaimSpec:
accessModes:
- ReadWriteOnce
volumeName: jellyfin-data
storageClassName: local-path
jellyfin:
mediaVolumes:
- name: movies
readOnly: false
volumeSpec:
storageClassName: local-path
volumeMode: Filesystem
capacity:
storage: 256Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/os
operator: In
values:
- linux
claimRef:
apiVersion: v1
kind: PersistentVolumeClaim
name: jellyfin-mediavol-movies
namespace: jellyfin
hostPath:
path: "/mnt/nfs/AppData/jellyfin/media/movies"
type: "Directory"
- name: series
readOnly: false
volumeSpec:
storageClassName: local-path
volumeMode: Filesystem
capacity:
storage: 256Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/os
operator: In
values:
- linux
claimRef:
apiVersion: v1
kind: PersistentVolumeClaim
name: jellyfin-mediavol-series
namespace: jellyfin
hostPath:
path: "/mnt/nfs/AppData/jellyfin/media/series"
type: "Directory"
- name: music-videos
readOnly: false
volumeSpec:
storageClassName: local-path
volumeMode: Filesystem
capacity:
storage: 128Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/os
operator: In
values:
- linux
claimRef:
apiVersion: v1
kind: PersistentVolumeClaim
name: jellyfin-mediavol-music-videos
namespace: jellyfin
hostPath:
path: "/mnt/nfs/AppData/jellyfin/media/music-videos"
type: "Directory"
- name: short-videos
readOnly: false
volumeSpec:
storageClassName: local-path
volumeMode: Filesystem
capacity:
storage: 32Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/os
operator: In
values:
- linux
claimRef:
apiVersion: v1
kind: PersistentVolumeClaim
name: jellyfin-mediavol-short-videos
namespace: jellyfin
hostPath:
path: "/mnt/nfs/AppData/jellyfin/media/short-videos"
type: "Directory"
- name: gv
readOnly: false
volumeSpec:
storageClassName: local-path
volumeMode: Filesystem
capacity:
storage: 64Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/os
operator: In
values:
- linux
claimRef:
apiVersion: v1
kind: PersistentVolumeClaim
name: jellyfin-mediavol-gv
namespace: jellyfin
hostPath:
path: "/mnt/nfs/AppData/jellyfin/media/gv"
type: "Directory"
persistentTranscodes: true

View File

@@ -0,0 +1,12 @@
{
"appName": "jellyfin",
"userGivenName": "jellyfin",
"namespace": "jellyfin",
"destNamespace": "jellyfin",
"destServer": "https://kubernetes.default.svc",
"srcPath": "apps/jellyfin/env/k3s-cluster",
"srcRepoURL": "https://github.com/3dwardch3ng/home-cluster-ops.git",
"srcTargetRevision": "",
"labels": null,
"annotations": null
}

View File

@@ -0,0 +1,31 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: jellyfin-ingress
namespace: jellyfin
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
ingressClassName: nginx
rules:
- host: "jellyfin.cluster.local"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: jellyfin
port:
number: 8096
- host: "jellyfin.cluster.edward.sydney"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: jellyfin
port:
number: 8096

View File

@@ -0,0 +1,5 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base
- ./ingress.yaml

View File

@@ -0,0 +1,12 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources: []
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
helmCharts:
- name: XXX
repo: https://raw.githubusercontent.com/plexinc/pms-docker/gh-pages
version: 0.0.0
releaseName: XXX
valuesFile: values.yaml

View File

@@ -0,0 +1,55 @@
namespaceOverride: elasticsearch
clusterDomain: elasticsearch.cluster.edward.sydney
clusterName: k3s-cluster
security:
enabled: true
existingSecret: elasticsearch-secrets
service:
type: LoadBalancer
ingress:
enabled: true
hostname: elasticsearch.cluster.edward.sydney
ingressClassName: nginx
master:
podSecurityContext:
fsGroup: 1000
containerSecurityContext:
runAsUser: 1000
runAsGroup: 1000
persistent:
existingClaim: ""
existingVolume: ""
size: 32Gi
persistentVolumeClaimRetentionPolicy:
enabled: true
data:
podSecurityContext:
fsGroup: 1000
containerSecurityContext:
runAsUser: 1000
runAsGroup: 1000
persistent:
existingClaim: ""
existingVolume: ""
size: 32Gi
persistentVolumeClaimRetentionPolicy:
enabled: true
coordinating:
podSecurityContext:
fsGroup: 1000
containerSecurityContext:
runAsUser: 1000
runAsGroup: 1000
injest:
podSecurityContext:
fsGroup: 1000
containerSecurityContext:
runAsUser: 1000
runAsGroup: 1000
service:
type: LoadBalancer
ports:
restAPI: 19200
transport: 19300
ingress:

View File

@@ -0,0 +1,12 @@
{
"appName": "XXX",
"userGivenName": "XXX",
"namespace": "XXX",
"destNamespace": "XXX",
"destServer": "https://kubernetes.default.svc",
"srcPath": "XXX/XXX/env/k3s-cluster",
"srcRepoURL": "https://github.com/3dwardch3ng/home-cluster-ops.git",
"srcTargetRevision": "",
"labels": null,
"annotations": null
}

View File

@@ -0,0 +1,4 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base

View File

@@ -0,0 +1,13 @@
apiVersion: v1
kind: Secret
metadata:
annotations:
argocd.argoproj.io/sync-options: Prune=false
sealedsecrets.bitnami.com/cluster-wide: "true"
sealedsecrets.bitnami.com/managed: "true"
creationTimestamp: null
name: elasticsearch-secrets
namespace: elasticsearch
type: Opaque
stringData:
elasticsearch-password: ""

View File

@@ -0,0 +1,25 @@
apiVersion: v1
kind: PersistentVolume
metadata:
name: jellyfin-config
namespace: jellyfin
labels:
type: local
spec:
storageClassName: local-path
volumeMode: Filesystem
capacity:
storage: 250Mi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
local:
path: "/mnt/nfs/AppData/jellyfin/config"
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/os
operator: In
values:
- linux

View File

@@ -0,0 +1,25 @@
apiVersion: v1
kind: PersistentVolume
metadata:
name: jellyfin-data
namespace: jellyfin
labels:
type: local
spec:
storageClassName: local-path
volumeMode: Filesystem
capacity:
storage: 2Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
local:
path: "/mnt/nfs/AppData/jellyfin/data"
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/os
operator: In
values:
- linux

View File

@@ -0,0 +1,9 @@
apiVersion: v1
kind: Namespace
metadata:
annotations:
argocd.argoproj.io/sync-options: Prune=false
creationTimestamp: null
name: jellyfin
spec: {}
status: {}