Move media stack to tofu

This commit is contained in:
Antonin Ruan
2026-02-09 23:10:53 +01:00
parent f20172f6a4
commit c258a1d09e
17 changed files with 1211 additions and 502 deletions

View File

@@ -1,58 +0,0 @@
---
apiVersion: v1
kind: Service
metadata:
name: flarsolverr
spec:
selector:
app: flarsolverr
ports:
- name: web
port: 8191
#---
#apiVersion: networking.k8s.io/v1
#kind: Ingress
#metadata:
# name: flarsolverr
# annotations:
# spec.ingressClassName: "nginx"
# cert-manager.io/cluster-issuer: "letsencrypt"
#spec:
# tls:
# - hosts:
# - flarsolverr.{{.domain}}
# secretName: flarsolverr-tls
# rules:
# - host: flarsolverr.{{.domain}}
# http:
# paths:
# - path: /
# pathType: Prefix
# backend:
# service:
# name: flarsolverr
# port:
# number: 9696
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: flarsolverr
labels:
app: flarsolverr
spec:
replicas: 1
selector:
matchLabels:
app: flarsolverr
template:
metadata:
labels:
app: flarsolverr
spec:
containers:
- name: flarsolverr
image: ghcr.io/flaresolverr/flaresolverr:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8191

View File

@@ -1,104 +0,0 @@
---
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

View File

@@ -1,77 +0,0 @@
---
apiVersion: v1
kind: Service
metadata:
name: prowlarr
spec:
selector:
app: prowlarr
ports:
- name: web
port: 9696
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: prowlarr
annotations:
spec.ingressClassName: "nginx"
cert-manager.io/cluster-issuer: "letsencrypt"
spec:
tls:
- hosts:
- prowlarr.{{.domain}}
secretName: prowlarr-tls
rules:
- host: prowlarr.{{.domain}}
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: prowlarr
port:
number: 9696
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: prowlarr-config
spec:
storageClassName: local-path
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: prowlarr
labels:
app: prowlarr
spec:
replicas: 1
selector:
matchLabels:
app: prowlarr
template:
metadata:
labels:
app: prowlarr
spec:
containers:
- name: prowlarr
image: lscr.io/linuxserver/prowlarr:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8989
volumeMounts:
- name: prowlarr-config
mountPath: /config
volumes:
- name: prowlarr-config
persistentVolumeClaim:
claimName: prowlarr-config

View File

@@ -1,84 +0,0 @@
---
apiVersion: v1
kind: Service
metadata:
name: qbitorrent
spec:
selector:
app: qbitorrent
ports:
- name: web
port: 8080
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: qbitorrent
annotations:
spec.ingressClassName: "nginx"
cert-manager.io/cluster-issuer: "letsencrypt"
spec:
tls:
- hosts:
- torrent.{{.domain}}
secretName: qbitorrent-tls
rules:
- host: torrent.{{.domain}}
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: qbitorrent
port:
number: 8080
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: qbitorrent-config
spec:
storageClassName: local-path
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: qbitorrent
labels:
app: qbitorrent
spec:
replicas: 1
selector:
matchLabels:
app: qbitorrent
template:
metadata:
labels:
app: qbitorrent
spec:
containers:
- name: qbitorrent
image: lscr.io/linuxserver/qbittorrent:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
volumeMounts:
- name: qbitorrent-data
mountPath: /downloads
- name: qbitorrent-config
mountPath: /config
volumes:
- name: qbitorrent-data
nfs:
path: "/srv/nfs/torrent"
server: "10.42.0.1"
readOnly: false
- name: qbitorrent-config
persistentVolumeClaim:
claimName: qbitorrent-config

View File

@@ -1,89 +0,0 @@
---
apiVersion: v1
kind: Service
metadata:
name: radarr
spec:
selector:
app: radarr
ports:
- name: web
port: 7878
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: radarr
annotations:
spec.ingressClassName: "nginx"
cert-manager.io/cluster-issuer: "letsencrypt"
spec:
tls:
- hosts:
- radarr.{{.domain}}
secretName: radarr-tls
rules:
- host: radarr.{{.domain}}
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: radarr
port:
number: 7878
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: radarr-config
spec:
storageClassName: local-path
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: radarr
labels:
app: radarr
spec:
replicas: 1
selector:
matchLabels:
app: radarr
template:
metadata:
labels:
app: radarr
spec:
containers:
- name: radarr
image: lscr.io/linuxserver/radarr:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8989
volumeMounts:
- name: radarr-data
mountPath: /data
- name: radarr-config
mountPath: /config
env:
- name: PUID
value: "0"
- name: PGID
value: "0"
volumes:
- name: radarr-data
nfs:
path: "/srv/nfs"
server: "10.42.0.1"
readOnly: false
- name: radarr-config
persistentVolumeClaim:
claimName: radarr-config

View File

@@ -1,89 +0,0 @@
---
apiVersion: v1
kind: Service
metadata:
name: sonarr
spec:
selector:
app: sonarr
ports:
- name: web
port: 8989
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: sonarr
annotations:
spec.ingressClassName: "nginx"
cert-manager.io/cluster-issuer: "letsencrypt"
spec:
tls:
- hosts:
- sonarr.{{.domain}}
secretName: sonarr-tls
rules:
- host: sonarr.{{.domain}}
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: sonarr
port:
number: 8989
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: sonarr-config
spec:
storageClassName: local-path
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: sonarr
labels:
app: sonarr
spec:
replicas: 1
selector:
matchLabels:
app: sonarr
template:
metadata:
labels:
app: sonarr
spec:
containers:
- name: sonarr
image: lscr.io/linuxserver/sonarr:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8989
volumeMounts:
- name: sonarr-data
mountPath: /data
- name: sonarr-config
mountPath: /config
env:
- name: PUID
value: "0"
- name: PGID
value: "0"
volumes:
- name: sonarr-data
nfs:
path: "/srv/nfs"
server: "10.42.0.1"
readOnly: false
- name: sonarr-config
persistentVolumeClaim:
claimName: sonarr-config