diff --git a/cluster/apps/ersatztv/ersatztv-pv.yml b/cluster/apps/ersatztv/ersatztv-pv.yml new file mode 100644 index 0000000..cd40452 --- /dev/null +++ b/cluster/apps/ersatztv/ersatztv-pv.yml @@ -0,0 +1,23 @@ +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: jellyfin-intel-pv + namespace: default +spec: + capacity: + storage: 10Gi + accessModes: + - ReadOnlyMany + storageClassName: jellyfin-intel-pv + hostPath: + path: "/dev/dri/renderD128" + nodeAffinity: + required: + nodeSelectorTerms: + - matchExpressions: + - key: gpu + operator: In + values: + - intel + diff --git a/cluster/apps/ersatztv/ersatztv-pvc.yml b/cluster/apps/ersatztv/ersatztv-pvc.yml new file mode 100644 index 0000000..ead2f9c --- /dev/null +++ b/cluster/apps/ersatztv/ersatztv-pvc.yml @@ -0,0 +1,27 @@ +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: jellyfin-intel-pvc + namespace: default +spec: + storageClassName: jellyfin-intel-pv + resources: + requests: + storage: 10Gi + accessModes: + - ReadOnlyMany + +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: longhorn-ersatztv + namespace: default +spec: + accessModes: + - ReadWriteMany + storageClassName: longhorn + resources: + requests: + storage: 1Gi \ No newline at end of file diff --git a/cluster/apps/ersatztv/ersatztv-svc.yml b/cluster/apps/ersatztv/ersatztv-svc.yml new file mode 100644 index 0000000..fa24695 --- /dev/null +++ b/cluster/apps/ersatztv/ersatztv-svc.yml @@ -0,0 +1,16 @@ +--- +apiVersion: v1 +kind: Service +metadata: + name: ersatztv-service + namespace: default +spec: + type: NodePort + selector: + app: ersatztv + ports: + - port: 8409 + targetPort: 8409 + nodePort: 8409 + protocol: TCP + diff --git a/cluster/apps/ersatztv/ersatztv.yml b/cluster/apps/ersatztv/ersatztv.yml new file mode 100644 index 0000000..c4ae93e --- /dev/null +++ b/cluster/apps/ersatztv/ersatztv.yml @@ -0,0 +1,46 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ersatztv + namespace: default +spec: + replicas: 1 + selector: + matchLabels: + app: ersatztv + template: + metadata: + labels: + app: ersatztv + spec: + securityContext: + runAsGroup: 0 + runAsUser: 0 + supplementalGroups: + - 128 + - 226 + - 106 + containers: + - name: ersatztv + image: jasongdove/ersatztv:v25.1.0-vaapi + ports: + - containerPort: 8409 + volumeMounts: + - name: data + mountPath: /root/.local/share/ersatztv + - name: intel + mountPath: /dev/dri/renderD128 + - name: transcode + mountPath: /root/.local/share/etv-transcode + securityContext: + privileged: true + volumes: + - name: data + persistentVolumeClaim: + claimName: longhorn-ersatztv + - name: transcode + emptyDir: {} + - name: intel + persistentVolumeClaim: + claimName: jellyfin-intel-pvc