diff --git a/k8s/jellyfin.yaml.in b/k8s/jellyfin.yaml.in new file mode 100644 index 0000000..4b770bd --- /dev/null +++ b/k8s/jellyfin.yaml.in @@ -0,0 +1,104 @@ +--- +apiVersion: v1 +kind: Service +metadata: + name: jellyfin +spec: + selector: + app: jellyfin + ports: + - name: web + port: 8096 + - name: client-discovery + port: 7359 +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: jellyfin + annotations: + spec.ingressClassName: "nginx" + cert-manager.io/cluster-issuer: "letsencrypt" +spec: + tls: + - hosts: + - media.{{.domain}} + secretName: jellyfin-tls + rules: + - host: media.{{.domain}} + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: jellyfin + port: + number: 8096 +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: jellyfin-cache +spec: + storageClassName: local-path + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 20Gi +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: jellyfin-config +spec: + storageClassName: local-path + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: jellyfin + labels: + app: jellyfin +spec: + replicas: 1 + selector: + matchLabels: + app: jellyfin + template: + metadata: + labels: + app: jellyfin + spec: + containers: + - name: jellyfin + image: jellyfin/jellyfin:latest + imagePullPolicy: IfNotPresent + ports: + - containerPort: 8096 + - containerPort: 7359 + volumeMounts: + - name: jellyfin-data + mountPath: /media + - name: jellyfin-config + mountPath: /config + - name: jellyfin-cache + mountPath: /cache + volumes: + - name: jellyfin-data + nfs: + path: "/srv/nfs/jellyfin" + server: "10.42.0.1" + readOnly: false + - name: jellyfin-config + persistentVolumeClaim: + claimName: jellyfin-config + - name: jellyfin-cache + persistentVolumeClaim: + claimName: jellyfin-cache