This commit is contained in:
Nathan Rashleigh 2025-03-11 00:47:21 +11:00
parent 2b2296cc2e
commit 0bc67f0fdc
11 changed files with 546 additions and 170 deletions

View File

@ -2,6 +2,11 @@
## TODO
### Media
[ ] sabnzbd ini config map
[ ] tdarr
[x] private registry
[x] secrets
[x] ntr-cv static containers

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

21
media/media.yaml Normal file
View File

@ -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

View File

@ -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
# 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

95
media/prowlarr.yaml Normal file
View File

@ -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

100
media/radarr.yaml Normal file
View File

@ -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

109
media/sabnzbd.yaml Normal file
View File

@ -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

101
media/sonarr.yaml Normal file
View File

@ -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