diff --git a/README.md b/README.md index 177bb61..5cbb973 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,11 @@ ## TODO +### Media + +[ ] sabnzbd ini config map +[ ] tdarr + [x] private registry [x] secrets [x] ntr-cv static containers diff --git a/media/jellyfin-ingress.yaml b/media/jellyfin-ingress.yaml deleted file mode 100644 index 289c0b1..0000000 --- a/media/jellyfin-ingress.yaml +++ /dev/null @@ -1,50 +0,0 @@ ---- - -apiVersion: v1 -kind: Service -metadata: - labels: - app: jellyfin - name: jellyfin - namespace: media -spec: - ports: - - name: web - port: 8096 - protocol: TCP - targetPort: 8096 - selector: - app: jellyfin - type: ClusterIP - ---- - -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: jellyfin-ingress - namespace: media -spec: - ingressClassName: haproxy - rules: - - host: jellyfin.nightowl.strix.systems - http: - paths: - - backend: - service: - name: jellyfin - port: - name: web - path: / - pathType: Prefix - - host: jf.ntwl.xyz - http: - paths: - - backend: - service: - name: jellyfin - port: - name: web - path: / - pathType: Prefix - diff --git a/media/jellyfin.yaml b/media/jellyfin.yaml index b7ee15e..667bde6 100644 --- a/media/jellyfin.yaml +++ b/media/jellyfin.yaml @@ -1,12 +1,5 @@ --- -apiVersion: v1 -kind: Namespace -metadata: - name: media - ---- - apiVersion: apps/v1 kind: Deployment metadata: @@ -28,61 +21,38 @@ spec: restartPolicy: Always containers: - - image: jellyfin/jellyfin + - image: ghcr.io/hotio/jellyfin imagePullPolicy: Always name: jellyfin env: - - name: NODE_NAME - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: spec.nodeName - - name: POD_NAME - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.name - - name: POD_NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace + - name: TZ + value: Australia/Melbourne + - name: PUID + value: '1000' + - name: PGID + value: '1000' + - name: UMASK + value: '002' ports: - containerPort: 8096 protocol: TCP volumeMounts: - - mountPath: /media - name: jellyfin-media + - mountPath: /data + name: jellyfin-data readOnly: true - mountPath: /config name: jellyfin-config volumes: - - name: jellyfin-media + - name: jellyfin-data persistentVolumeClaim: - claimName: media + claimName: data - name: jellyfin-config persistentVolumeClaim: claimName: jellyfin-config --- - -kind: PersistentVolumeClaim -apiVersion: v1 -metadata: - name: media - namespace: media -spec: - storageClassName: slow - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 4Ti - ---- - kind: PersistentVolumeClaim apiVersion: v1 metadata: @@ -95,3 +65,44 @@ spec: resources: requests: storage: 8Gi + +--- + +apiVersion: v1 +kind: Service +metadata: + labels: + app: jellyfin + name: jellyfin + namespace: media +spec: + ports: + - name: web + port: 8096 + protocol: TCP + targetPort: 8096 + selector: + app: jellyfin + type: ClusterIP + +--- + +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: jellyfin-ingress + namespace: media +spec: + ingressClassName: haproxy + rules: + - host: jf.ntwl.xyz + http: + paths: + - backend: + service: + name: jellyfin + port: + name: web + path: / + pathType: Prefix + diff --git a/media/jellyseerr-ingress.yaml b/media/jellyseerr-ingress.yaml deleted file mode 100644 index c233c1b..0000000 --- a/media/jellyseerr-ingress.yaml +++ /dev/null @@ -1,50 +0,0 @@ ---- - -apiVersion: v1 -kind: Service -metadata: - labels: - app: jellyseerr - name: jellyseerr - namespace: media -spec: - ports: - - name: web - port: 5055 - protocol: TCP - targetPort: 5055 - selector: - app: jellyseerr - type: ClusterIP - ---- - -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: jellyseerr-ingress - namespace: media -spec: - ingressClassName: haproxy - rules: - - host: jellyseerr.nightowl.strix.systems - http: - paths: - - backend: - service: - name: jellyseerr - port: - name: web - path: / - pathType: Prefix - - - host: js.ntwl.xyz - http: - paths: - - backend: - service: - name: jellyseerr - port: - name: web - path: / - pathType: Prefix diff --git a/media/jellyseerr.yaml b/media/jellyseerr.yaml index 6b6873f..7fe7ff7 100644 --- a/media/jellyseerr.yaml +++ b/media/jellyseerr.yaml @@ -16,7 +16,7 @@ spec: spec: restartPolicy: Always containers: - - image: ghcr.io/fallenbagel/jellyseerr + - image: ghcr.io/hotio/jellyseerr imagePullPolicy: Always name: jellyseerr env: @@ -27,16 +27,10 @@ spec: name: web protocol: TCP volumeMounts: - # - mountPath: /media - # name: jellyseerr-media - # readOnly: true - mountPath: /app/config name: jellyseerr-config volumes: - # - name: jellyseerr-media - # persistentVolumeClaim: - # claimName: media - name: jellyseerr-config persistentVolumeClaim: claimName: jellyseerr-config @@ -55,3 +49,43 @@ spec: resources: requests: storage: 1Gi + +--- + +apiVersion: v1 +kind: Service +metadata: + labels: + app: jellyseerr + name: jellyseerr + namespace: media +spec: + ports: + - name: web + port: 5055 + protocol: TCP + targetPort: 5055 + selector: + app: jellyseerr + type: ClusterIP + +--- + +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: jellyseerr-ingress + namespace: media +spec: + ingressClassName: haproxy + rules: + - host: jellyseerr.ntwl.xyz + http: + paths: + - backend: + service: + name: jellyseerr + port: + name: web + path: / + pathType: Prefix diff --git a/media/media.yaml b/media/media.yaml new file mode 100644 index 0000000..46a95dd --- /dev/null +++ b/media/media.yaml @@ -0,0 +1,21 @@ +--- + +apiVersion: v1 +kind: Namespace +metadata: + name: media + +--- + +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: data + namespace: media +spec: + storageClassName: slow + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 4Ti diff --git a/media/nvidia.yaml b/media/nvidia.yaml index bb19e5f..bc08c73 100644 --- a/media/nvidia.yaml +++ b/media/nvidia.yaml @@ -20,23 +20,23 @@ spec: --- -apiVersion: v1 -kind: Pod -metadata: - name: nbody-gpu-benchmark - namespace: default -spec: - restartPolicy: OnFailure - runtimeClassName: nvidia - containers: - - name: cuda-container - image: nvcr.io/nvidia/k8s/cuda-sample:nbody - args: ["nbody", "-gpu", "-benchmark"] - resources: - limits: - nvidia.com/gpu: 1 - env: - - name: NVIDIA_VISIBLE_DEVICES - value: all - - name: NVIDIA_DRIVER_CAPABILITIES - value: all \ No newline at end of file +# apiVersion: v1 +# kind: Pod +# metadata: +# name: nbody-gpu-benchmark +# namespace: default +# spec: +# restartPolicy: OnFailure +# runtimeClassName: nvidia +# containers: +# - name: cuda-container +# image: nvcr.io/nvidia/k8s/cuda-sample:nbody +# args: ["nbody", "-gpu", "-benchmark"] +# resources: +# limits: +# nvidia.com/gpu: 1 +# env: +# - name: NVIDIA_VISIBLE_DEVICES +# value: all +# - name: NVIDIA_DRIVER_CAPABILITIES +# value: all \ No newline at end of file diff --git a/media/prowlarr.yaml b/media/prowlarr.yaml new file mode 100644 index 0000000..9b04507 --- /dev/null +++ b/media/prowlarr.yaml @@ -0,0 +1,95 @@ +--- + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: prowlarr + namespace: media +spec: + selector: + matchLabels: + app: prowlarr + template: + metadata: + labels: + app: prowlarr + spec: + restartPolicy: Always + containers: + - image: ghcr.io/hotio/prowlarr + imagePullPolicy: Always + name: prowlarr + env: + - name: TZ + value: Australia/Melbourne + - name: PUID + value: '1000' + - name: PGID + value: '1000' + - name: UMASK + value: '002' + ports: + - containerPort: 9696 + name: web + protocol: TCP + volumeMounts: + - mountPath: /config + name: prowlarr-config + volumes: + - name: prowlarr-config + persistentVolumeClaim: + claimName: prowlarr-config + +--- + +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: prowlarr-config + namespace: media +spec: + storageClassName: zfs-fast + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi +--- + +apiVersion: v1 +kind: Service +metadata: + labels: + app: prowlarr + name: prowlarr + namespace: media +spec: + ports: + - name: web + port: 9696 + protocol: TCP + targetPort: 9696 + selector: + app: prowlarr + type: ClusterIP + +--- + +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: prowlarr-ingress + namespace: media +spec: + ingressClassName: haproxy + rules: + - host: prowlarr.ntwl.xyz + http: + paths: + - backend: + service: + name: prowlarr + port: + name: web + path: / + pathType: Prefix diff --git a/media/radarr.yaml b/media/radarr.yaml new file mode 100644 index 0000000..0a7cac6 --- /dev/null +++ b/media/radarr.yaml @@ -0,0 +1,100 @@ +--- + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: radarr + namespace: media +spec: + selector: + matchLabels: + app: radarr + template: + metadata: + labels: + app: radarr + spec: + restartPolicy: Always + containers: + - image: ghcr.io/hotio/radarr + imagePullPolicy: Always + name: radarr + env: + - name: TZ + value: Australia/Melbourne + - name: PUID + value: '1000' + - name: PGID + value: '1000' + - name: UMASK + value: '002' + ports: + - containerPort: 7878 + name: web + protocol: TCP + volumeMounts: + - mountPath: /data + name: radarr-data + - mountPath: /config + name: radarr-config + volumes: + - name: radarr-data + persistentVolumeClaim: + claimName: data + - name: radarr-config + persistentVolumeClaim: + claimName: radarr-config + +--- + +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: radarr-config + namespace: media +spec: + storageClassName: zfs-fast + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi +--- + +apiVersion: v1 +kind: Service +metadata: + labels: + app: radarr + name: radarr + namespace: media +spec: + ports: + - name: web + port: 7878 + protocol: TCP + targetPort: 7878 + selector: + app: radarr + type: ClusterIP + +--- + +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: radarr-ingress + namespace: media +spec: + ingressClassName: haproxy + rules: + - host: radarr.ntwl.xyz + http: + paths: + - backend: + service: + name: radarr + port: + name: web + path: / + pathType: Prefix diff --git a/media/sabnzbd.yaml b/media/sabnzbd.yaml new file mode 100644 index 0000000..e7502f1 --- /dev/null +++ b/media/sabnzbd.yaml @@ -0,0 +1,109 @@ +--- + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: sabnzbd + namespace: media +spec: + selector: + matchLabels: + app: sabnzbd + template: + metadata: + labels: + app: sabnzbd + spec: + restartPolicy: Always + containers: + - image: ghcr.io/hotio/sabnzbd + imagePullPolicy: Always + name: sabnzbd + env: + - name: TZ + value: Australia/Melbourne + - name: PUID + value: '1000' + - name: PGID + value: '1000' + - name: UMASK + value: '002' + - name: WEBUI_PORTS + value: '8080/tcp,8080/udp' + - name: ARGS + value: '' + ports: + - containerPort: 8080 + name: web + protocol: TCP + volumeMounts: + - mountPath: /data + name: sabnzbd-data + - mountPath: /config + name: sabnzbd-config + volumes: + - name: sabnzbd-data + persistentVolumeClaim: + claimName: data + - name: sabnzbd-config + persistentVolumeClaim: + claimName: sabnzbd-config + +--- + +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: sabnzbd-config + namespace: media +spec: + storageClassName: zfs-fast + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + +--- + +apiVersion: v1 +kind: Service +metadata: + labels: + app: sabnzbd + name: sabnzbd + namespace: media +spec: + ports: + - name: web + port: 8080 + protocol: TCP + targetPort: 8080 + - name: web-udp + port: 8080 + protocol: UDP + targetPort: 8080 + selector: + app: sabnzbd + type: ClusterIP + +--- + +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: sabnzbd-ingress + namespace: media +spec: + ingressClassName: haproxy + rules: + - host: sabnzbd.ntwl.xyz + http: + paths: + - backend: + service: + name: sabnzbd + port: + name: web + path: / + pathType: Prefix diff --git a/media/sonarr.yaml b/media/sonarr.yaml new file mode 100644 index 0000000..3cb6403 --- /dev/null +++ b/media/sonarr.yaml @@ -0,0 +1,101 @@ +--- + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: sonarr + namespace: media +spec: + selector: + matchLabels: + app: sonarr + template: + metadata: + labels: + app: sonarr + spec: + restartPolicy: Always + containers: + - image: ghcr.io/hotio/sonarr + imagePullPolicy: Always + name: sonarr + env: + - name: TZ + value: Australia/Melbourne + - name: PUID + value: '1000' + - name: PGID + value: '1000' + - name: UMASK + value: '002' + ports: + - containerPort: 8989 + name: web + protocol: TCP + volumeMounts: + - mountPath: /data + name: sonarr-data + - mountPath: /config + name: sonarr-config + volumes: + - name: sonarr-data + persistentVolumeClaim: + claimName: data + - name: sonarr-config + persistentVolumeClaim: + claimName: sonarr-config + +--- + +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: sonarr-config + namespace: media +spec: + storageClassName: zfs-fast + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + +--- + +apiVersion: v1 +kind: Service +metadata: + labels: + app: sonarr + name: sonarr + namespace: media +spec: + ports: + - name: web + port: 8989 + protocol: TCP + targetPort: 8989 + selector: + app: sonarr + type: ClusterIP + +--- + +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: sonarr-ingress + namespace: media +spec: + ingressClassName: haproxy + rules: + - host: sonarr.ntwl.xyz + http: + paths: + - backend: + service: + name: sonarr + port: + name: web + path: / + pathType: Prefix