add media back
This commit is contained in:
		
							
								
								
									
										63
									
								
								apps/media/ingress.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								apps/media/ingress.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,63 @@ | ||||
| apiVersion: traefik.io/v1alpha1 | ||||
| kind: IngressRoute | ||||
| metadata: | ||||
|   name: jellyfin-vue-ingress | ||||
|   namespace: media | ||||
| spec: | ||||
|   entryPoints: | ||||
|     - websecure | ||||
|   routes: | ||||
|     - match: Host(`media.kluster.moll.re`) | ||||
|       middlewares: | ||||
|         - name: jellyfin-websocket | ||||
|       kind: Rule | ||||
|       services: | ||||
|         - name: jellyfin-web | ||||
|           port: 80 | ||||
|   tls: | ||||
|     certResolver: default-tls | ||||
| --- | ||||
| apiVersion: traefik.io/v1alpha1 | ||||
| kind: IngressRoute | ||||
| metadata: | ||||
|   name: jellyfin-backend-ingress | ||||
|   namespace: media | ||||
| spec: | ||||
|   entryPoints: | ||||
|     - websecure | ||||
|   routes: | ||||
|     - match: Host(`media-backend.kluster.moll.re`) && !Path(`/metrics`) | ||||
|       middlewares: | ||||
|         - name: jellyfin-websocket | ||||
|         - name: jellyfin-server-headers | ||||
|       kind: Rule | ||||
|       services: | ||||
|         - name: jellyfin-server | ||||
|           port: 8096 | ||||
|   tls: | ||||
|     certResolver: default-tls | ||||
| --- | ||||
| apiVersion: traefik.io/v1alpha1 | ||||
| kind: Middleware | ||||
| metadata: | ||||
|   name: jellyfin-websocket | ||||
|   namespace: media | ||||
| spec: | ||||
|   headers: | ||||
|     customRequestHeaders: | ||||
|       Connection: keep-alive, Upgrade | ||||
|       Upgrade: WebSocket | ||||
| --- | ||||
| apiVersion: traefik.io/v1alpha1 | ||||
| kind: Middleware | ||||
| metadata: | ||||
|   name: jellyfin-server-headers | ||||
|   namespace: media | ||||
| spec: | ||||
|   headers: | ||||
|     accessControlAllowCredentials: true | ||||
|     accessControlAllowHeaders: [ "Authorization","Content-Type" ] # "Accept","Origin" | ||||
|     accessControlAllowMethods: [ "GET","HEAD","OPTIONS" ] # "POST","PUT" | ||||
|     accessControlAllowOriginList: | ||||
|       - "*" | ||||
|     accessControlMaxAge: 100 | ||||
							
								
								
									
										17
									
								
								apps/media/jellyfin.servicemonitor.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								apps/media/jellyfin.servicemonitor.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | ||||
| apiVersion: monitoring.coreos.com/v1 | ||||
| kind: ServiceMonitor | ||||
| metadata: | ||||
|   name: jellyfin | ||||
|   labels: | ||||
|     metrics: prometheus | ||||
| spec: | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       app: jellyfin-server-service | ||||
|   endpoints: | ||||
|   - path: /metrics | ||||
|     targetPort: jellyfin | ||||
|  | ||||
| # this exposes metrics on port 8096 as enabled in the jellyfin config | ||||
| # https://jellyfin.org/docs/general/networking/monitoring/ | ||||
| # the metrics are available at /metrics but blocked by the ingress | ||||
							
								
								
									
										21
									
								
								apps/media/kustomization.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								apps/media/kustomization.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| apiVersion: kustomize.config.k8s.io/v1beta1 | ||||
| kind: Kustomization | ||||
| namespace: media | ||||
|  | ||||
| resources:  | ||||
|   - namespace.yaml | ||||
|   - pvc.yaml | ||||
|   - server.deployment.yaml | ||||
|   - server.service.yaml | ||||
|   - web.deployment.yaml | ||||
|   - web.service.yaml | ||||
|   - ingress.yaml | ||||
|   - jellyfin.servicemonitor.yaml | ||||
|  | ||||
| images: | ||||
|   - name: jellyfin/jellyfin | ||||
|     newName: jellyfin/jellyfin | ||||
|     newTag: 10.8.13 | ||||
|   - name: ghcr.io/jellyfin/jellyfin-vue | ||||
|     newName: ghcr.io/jellyfin/jellyfin-vue | ||||
|     newTag: stable-rc.0.3.1 | ||||
							
								
								
									
										4
									
								
								apps/media/namespace.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								apps/media/namespace.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| apiVersion: v1 | ||||
| kind: Namespace | ||||
| metadata: | ||||
|   name: placeholder | ||||
							
								
								
									
										58
									
								
								apps/media/pvc.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								apps/media/pvc.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,58 @@ | ||||
|  | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolume | ||||
| metadata: | ||||
|   namespace: media | ||||
|   name: jellyfin-config-nfs | ||||
| spec: | ||||
|   capacity: | ||||
|     storage: "1Gi" | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   nfs: | ||||
|     path: /export/kluster/jellyfin-config | ||||
|     server: 192.168.1.157 | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolumeClaim | ||||
| metadata: | ||||
|   namespace: media | ||||
|   name: jellyfin-config-nfs | ||||
| spec: | ||||
|   storageClassName: "" | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   resources: | ||||
|     requests: | ||||
|       storage: "1Gi" | ||||
|   volumeName: jellyfin-config-nfs | ||||
|  | ||||
| --- | ||||
|  | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolume | ||||
| metadata: | ||||
|   namespace: media | ||||
|   name: jellyfin-data-nfs | ||||
| spec: | ||||
|   capacity: | ||||
|     storage: "1Ti" | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   nfs: | ||||
|     path: /export/jellyfin-media | ||||
|     server: 192.168.1.157 | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: PersistentVolumeClaim | ||||
| metadata: | ||||
|   namespace: media | ||||
|   name: jellyfin-data-nfs | ||||
| spec: | ||||
|   storageClassName: "" | ||||
|   accessModes: | ||||
|     - ReadWriteOnce | ||||
|   resources: | ||||
|     requests: | ||||
|       storage: "1Ti" | ||||
|   volumeName: jellyfin-data-nfs | ||||
							
								
								
									
										45
									
								
								apps/media/server.deployment.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								apps/media/server.deployment.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | ||||
| apiVersion: apps/v1 | ||||
| kind: Deployment | ||||
| metadata: | ||||
|   name: jellyfin-server | ||||
| spec: | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       app: jellyfin-server | ||||
|   template: | ||||
|     metadata: | ||||
|       labels: | ||||
|         app: jellyfin-server | ||||
|     spec: | ||||
|       containers: | ||||
|       - name: jellyfin-server | ||||
|         image: jellyfin/jellyfin | ||||
|         resources: | ||||
|           limits: | ||||
|             memory: "2Gi" | ||||
|             cpu: "2" | ||||
|         ports: | ||||
|         - containerPort: 8096 | ||||
|           name: jellyfin | ||||
|         env: | ||||
|         - name: TZ | ||||
|           value: Europe/Berlin | ||||
|         volumeMounts: | ||||
|         - name: jellyfin-config | ||||
|           mountPath: /config | ||||
|         - name: jellyfin-data | ||||
|           mountPath: /media | ||||
|         livenessProbe: | ||||
|           httpGet: | ||||
|             path: /health | ||||
|             port: 8096 | ||||
|           initialDelaySeconds: 100 | ||||
|           periodSeconds: 15 | ||||
|       volumes: | ||||
|       - name: jellyfin-config | ||||
|         persistentVolumeClaim: | ||||
|           claimName: jellyfin-config-nfs | ||||
|       - name: jellyfin-data | ||||
|         persistentVolumeClaim: | ||||
|           claimName: jellyfin-data-nfs | ||||
|  | ||||
							
								
								
									
										14
									
								
								apps/media/server.service.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								apps/media/server.service.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | ||||
|  | ||||
| apiVersion: v1 | ||||
| kind: Service | ||||
| metadata: | ||||
|   name: jellyfin-server | ||||
|   labels: | ||||
|     app: jellyfin-server-service | ||||
| spec: | ||||
|   selector: | ||||
|     app: jellyfin-server | ||||
|   ports: | ||||
|     - protocol: TCP | ||||
|       port: 8096 | ||||
|       targetPort: 8096 | ||||
							
								
								
									
										27
									
								
								apps/media/web.deployment.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								apps/media/web.deployment.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| apiVersion: apps/v1 | ||||
| kind: Deployment | ||||
| metadata: | ||||
|   name: jellyfin-web | ||||
| spec: | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       app: jellyfin-web | ||||
|   template: | ||||
|     metadata: | ||||
|       labels: | ||||
|         app: jellyfin-web | ||||
|     spec: | ||||
|       containers: | ||||
|       - name: jellyfin-web | ||||
|         image: ghcr.io/jellyfin/jellyfin-vue | ||||
|         resources: | ||||
|           limits: | ||||
|             memory: "128Mi" | ||||
|             cpu: "30m" | ||||
|         ports: | ||||
|         - containerPort: 80 | ||||
|         env: | ||||
|         - name: TZ | ||||
|           value: Europe/Berlin | ||||
|         - name: DEFAULT_SERVERS | ||||
|           value: "https://media-backend.kluster.moll.re" | ||||
							
								
								
									
										12
									
								
								apps/media/web.service.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								apps/media/web.service.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
|  | ||||
| apiVersion: v1 | ||||
| kind: Service | ||||
| metadata: | ||||
|   name: jellyfin-web | ||||
| spec: | ||||
|   selector: | ||||
|     app: jellyfin-web | ||||
|   ports: | ||||
|     - protocol: TCP | ||||
|       port: 80 | ||||
|       targetPort: 80 | ||||
		Reference in New Issue
	
	Block a user