mirror of
https://github.com/michaelthomson0797/fleet-infra.git
synced 2026-02-04 13:09:53 +00:00
media again
This commit is contained in:
43
media/jellyfin/deployment.yaml
Normal file
43
media/jellyfin/deployment.yaml
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: jellyfin
|
||||||
|
namespace: media
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: jellyfin
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: jellyfin
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: jellyfin
|
||||||
|
image: lscr.io/linuxserver/jellyfin:latest
|
||||||
|
securityContext:
|
||||||
|
privileged: true
|
||||||
|
ports:
|
||||||
|
- containerPort: 8096
|
||||||
|
name: http
|
||||||
|
protocol: TCP
|
||||||
|
volumeMounts:
|
||||||
|
- name: config
|
||||||
|
mountPath: /config
|
||||||
|
- mountPath: /data/media
|
||||||
|
name: data
|
||||||
|
subPath: media
|
||||||
|
- name: dev-dri
|
||||||
|
mountPath: /dev/dri
|
||||||
|
volumes:
|
||||||
|
- name: config
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: jellyfin-config
|
||||||
|
- name: data
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: media-data
|
||||||
|
- name: dev-dri
|
||||||
|
hostPath:
|
||||||
|
path: /dev/dri
|
||||||
|
|
||||||
|
|
||||||
12
media/jellyfin/dns-endpoint.yaml
Normal file
12
media/jellyfin/dns-endpoint.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: externaldns.k8s.io/v1alpha1
|
||||||
|
kind: DNSEndpoint
|
||||||
|
metadata:
|
||||||
|
name: jellyfin.michaelthomson.dev
|
||||||
|
namespace: media
|
||||||
|
spec:
|
||||||
|
endpoints:
|
||||||
|
- dnsName: jellyfin.michaelthomson.dev
|
||||||
|
recordTTL: 180
|
||||||
|
recordType: CNAME
|
||||||
|
targets:
|
||||||
|
- server.michaelthomson.dev
|
||||||
25
media/jellyfin/ingress.yaml
Normal file
25
media/jellyfin/ingress.yaml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: jellyfin
|
||||||
|
namespace: media
|
||||||
|
annotations:
|
||||||
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
|
# traefik.ingress.kubernetes.io/router.middlewares: traefik-authentik@kubernetescrd
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- host: jellyfin.michaelthomson.dev
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- pathType: ImplementationSpecific
|
||||||
|
path: /
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: jellyfin
|
||||||
|
port:
|
||||||
|
name: http
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- jellyfin.michaelthomson.dev
|
||||||
|
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
|
||||||
12
media/jellyfin/pvc-config.yaml
Normal file
12
media/jellyfin/pvc-config.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: jellyfin-config
|
||||||
|
namespace: media
|
||||||
|
spec:
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 60Gi
|
||||||
|
storageClassName: longhorn
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
12
media/jellyfin/service.yaml
Normal file
12
media/jellyfin/service.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: jellyfin
|
||||||
|
namespace: media
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: jellyfin
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
targetPort: http
|
||||||
|
name: http
|
||||||
12
media/pvc-data.yaml
Normal file
12
media/pvc-data.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: media-data
|
||||||
|
namespace: media
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
storageClassName: longhorn
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 230Gi
|
||||||
8
media/radarr/config.yaml
Normal file
8
media/radarr/config.yaml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: radarr-config
|
||||||
|
namespace: media
|
||||||
|
data:
|
||||||
|
PUID: "1000"
|
||||||
|
PGID: "1000"
|
||||||
39
media/radarr/deployment.yaml
Normal file
39
media/radarr/deployment.yaml
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: radarr
|
||||||
|
namespace: media
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: radarr
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: radarr
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: radarr
|
||||||
|
image: lscr.io/linuxserver/radarr:latest
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: radarr-config
|
||||||
|
optional: false
|
||||||
|
ports:
|
||||||
|
- containerPort: 7878
|
||||||
|
name: http
|
||||||
|
protocol: TCP
|
||||||
|
volumeMounts:
|
||||||
|
- name: config
|
||||||
|
mountPath: /config
|
||||||
|
- mountPath: /data
|
||||||
|
name: data
|
||||||
|
volumes:
|
||||||
|
- name: config
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: radarr-config
|
||||||
|
- name: data
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: media-data
|
||||||
|
|
||||||
|
|
||||||
12
media/radarr/dns-endpoint.yaml
Normal file
12
media/radarr/dns-endpoint.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: externaldns.k8s.io/v1alpha1
|
||||||
|
kind: DNSEndpoint
|
||||||
|
metadata:
|
||||||
|
name: radarr.michaelthomson.dev
|
||||||
|
namespace: media
|
||||||
|
spec:
|
||||||
|
endpoints:
|
||||||
|
- dnsName: radarr.michaelthomson.dev
|
||||||
|
recordTTL: 180
|
||||||
|
recordType: CNAME
|
||||||
|
targets:
|
||||||
|
- server.michaelthomson.dev
|
||||||
25
media/radarr/ingress.yaml
Normal file
25
media/radarr/ingress.yaml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: radarr
|
||||||
|
namespace: media
|
||||||
|
annotations:
|
||||||
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
|
traefik.ingress.kubernetes.io/router.middlewares: traefik-authentik@kubernetescrd
|
||||||
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- host: radarr.michaelthomson.dev
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- pathType: ImplementationSpecific
|
||||||
|
path: /
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: radarr
|
||||||
|
port:
|
||||||
|
name: http
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- radarr.michaelthomson.dev
|
||||||
|
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
|
||||||
12
media/radarr/pvc-config.yaml
Normal file
12
media/radarr/pvc-config.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: radarr-config
|
||||||
|
namespace: media
|
||||||
|
spec:
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 1Gi
|
||||||
|
storageClassName: longhorn
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
12
media/radarr/service.yaml
Normal file
12
media/radarr/service.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: radarr
|
||||||
|
namespace: media
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: radarr
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
targetPort: http
|
||||||
|
name: http
|
||||||
8
media/readarr/config.yaml
Normal file
8
media/readarr/config.yaml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: readarr-config
|
||||||
|
namespace: media
|
||||||
|
data:
|
||||||
|
PUID: "1000"
|
||||||
|
PGID: "1000"
|
||||||
39
media/readarr/deployment.yaml
Normal file
39
media/readarr/deployment.yaml
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: readarr
|
||||||
|
namespace: media
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: readarr
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: readarr
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: readarr
|
||||||
|
image: lscr.io/linuxserver/readarr:nightly
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: readarr-config
|
||||||
|
optional: false
|
||||||
|
ports:
|
||||||
|
- containerPort: 8787
|
||||||
|
name: http
|
||||||
|
protocol: TCP
|
||||||
|
volumeMounts:
|
||||||
|
- name: config
|
||||||
|
mountPath: /config
|
||||||
|
- mountPath: /data
|
||||||
|
name: data
|
||||||
|
volumes:
|
||||||
|
- name: config
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: readarr-config
|
||||||
|
- name: data
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: media-data
|
||||||
|
|
||||||
|
|
||||||
12
media/readarr/dns-endpoint.yaml
Normal file
12
media/readarr/dns-endpoint.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: externaldns.k8s.io/v1alpha1
|
||||||
|
kind: DNSEndpoint
|
||||||
|
metadata:
|
||||||
|
name: readarr.michaelthomson.dev
|
||||||
|
namespace: media
|
||||||
|
spec:
|
||||||
|
endpoints:
|
||||||
|
- dnsName: readarr.michaelthomson.dev
|
||||||
|
recordTTL: 180
|
||||||
|
recordType: CNAME
|
||||||
|
targets:
|
||||||
|
- server.michaelthomson.dev
|
||||||
25
media/readarr/ingress.yaml
Normal file
25
media/readarr/ingress.yaml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: readarr
|
||||||
|
namespace: media
|
||||||
|
annotations:
|
||||||
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
|
traefik.ingress.kubernetes.io/router.middlewares: traefik-authentik@kubernetescrd
|
||||||
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- host: readarr.michaelthomson.dev
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- pathType: ImplementationSpecific
|
||||||
|
path: /
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: readarr
|
||||||
|
port:
|
||||||
|
name: http
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- readarr.michaelthomson.dev
|
||||||
|
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
|
||||||
12
media/readarr/pvc-config.yaml
Normal file
12
media/readarr/pvc-config.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: readarr-config
|
||||||
|
namespace: media
|
||||||
|
spec:
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 1Gi
|
||||||
|
storageClassName: longhorn
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
12
media/readarr/service.yaml
Normal file
12
media/readarr/service.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: readarr
|
||||||
|
namespace: media
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: readarr
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
targetPort: http
|
||||||
|
name: http
|
||||||
8
media/sonarr/config.yaml
Normal file
8
media/sonarr/config.yaml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: sonarr-config
|
||||||
|
namespace: media
|
||||||
|
data:
|
||||||
|
PUID: "1000"
|
||||||
|
PGID: "1000"
|
||||||
39
media/sonarr/deployment.yaml
Normal file
39
media/sonarr/deployment.yaml
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: sonarr
|
||||||
|
namespace: media
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: sonarr
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: sonarr
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: sonarr
|
||||||
|
image: lscr.io/linuxserver/sonarr:latest
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: sonarr-config
|
||||||
|
optional: false
|
||||||
|
ports:
|
||||||
|
- containerPort: 8989
|
||||||
|
name: http
|
||||||
|
protocol: TCP
|
||||||
|
volumeMounts:
|
||||||
|
- name: config
|
||||||
|
mountPath: /config
|
||||||
|
- mountPath: /data
|
||||||
|
name: data
|
||||||
|
volumes:
|
||||||
|
- name: config
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: sonarr-config
|
||||||
|
- name: data
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: media-data
|
||||||
|
|
||||||
|
|
||||||
12
media/sonarr/dns-endpoint.yaml
Normal file
12
media/sonarr/dns-endpoint.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: externaldns.k8s.io/v1alpha1
|
||||||
|
kind: DNSEndpoint
|
||||||
|
metadata:
|
||||||
|
name: sonarr.michaelthomson.dev
|
||||||
|
namespace: media
|
||||||
|
spec:
|
||||||
|
endpoints:
|
||||||
|
- dnsName: sonarr.michaelthomson.dev
|
||||||
|
recordTTL: 180
|
||||||
|
recordType: CNAME
|
||||||
|
targets:
|
||||||
|
- server.michaelthomson.dev
|
||||||
25
media/sonarr/ingress.yaml
Normal file
25
media/sonarr/ingress.yaml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: sonarr
|
||||||
|
namespace: media
|
||||||
|
annotations:
|
||||||
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
|
traefik.ingress.kubernetes.io/router.middlewares: traefik-authentik@kubernetescrd
|
||||||
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- host: sonarr.michaelthomson.dev
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- pathType: ImplementationSpecific
|
||||||
|
path: /
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: sonarr
|
||||||
|
port:
|
||||||
|
name: http
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- sonarr.michaelthomson.dev
|
||||||
|
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
|
||||||
12
media/sonarr/pvc-config.yaml
Normal file
12
media/sonarr/pvc-config.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: sonarr-config
|
||||||
|
namespace: media
|
||||||
|
spec:
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 1Gi
|
||||||
|
storageClassName: longhorn
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
12
media/sonarr/service.yaml
Normal file
12
media/sonarr/service.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: sonarr
|
||||||
|
namespace: media
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: sonarr
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
targetPort: http
|
||||||
|
name: http
|
||||||
16
media/transmission/config.yaml
Normal file
16
media/transmission/config.yaml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: transmission-config
|
||||||
|
namespace: media
|
||||||
|
data:
|
||||||
|
PUID: "1000"
|
||||||
|
PGID: "1000"
|
||||||
|
OPENVPN_PROVIDER: PROTONVPN
|
||||||
|
OPENVPN_CONFIG: node-ca-13.protonvpn.net.tcp
|
||||||
|
LOCAL_NETWORK: 10.0.0.0/8
|
||||||
|
OPENVPN_OPTS: --inactive 3600 --ping 10 --ping-exit 60
|
||||||
|
DISABLE_PORT_FORWARDER: "true"
|
||||||
|
DISABLE_PORT_UPDATER: "true"
|
||||||
|
GITHUB_CONFIG_SOURCE_REPO: michaelthomson0797/vpn-configs-contrib
|
||||||
|
TRANSMISSION_DOWNLOAD_DIR: /data/downloads
|
||||||
80
media/transmission/deployment.yaml
Normal file
80
media/transmission/deployment.yaml
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: transmission
|
||||||
|
namespace: media
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: transmission
|
||||||
|
strategy:
|
||||||
|
type: Recreate
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: transmission
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- image: haugene/transmission-openvpn:dev
|
||||||
|
name: transmission
|
||||||
|
imagePullPolicy: Always
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: transmission-config
|
||||||
|
optional: false
|
||||||
|
- secretRef:
|
||||||
|
name: transmission-secret
|
||||||
|
livenessProbe:
|
||||||
|
failureThreshold: 3
|
||||||
|
initialDelaySeconds: 10
|
||||||
|
periodSeconds: 2
|
||||||
|
successThreshold: 1
|
||||||
|
tcpSocket:
|
||||||
|
port: 9091
|
||||||
|
timeoutSeconds: 2
|
||||||
|
readinessProbe:
|
||||||
|
failureThreshold: 3
|
||||||
|
initialDelaySeconds: 10
|
||||||
|
periodSeconds: 2
|
||||||
|
successThreshold: 2
|
||||||
|
tcpSocket:
|
||||||
|
port: 9091
|
||||||
|
timeoutSeconds: 2
|
||||||
|
securityContext:
|
||||||
|
capabilities:
|
||||||
|
add:
|
||||||
|
- NET_ADMIN
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /data/downloads
|
||||||
|
name: data
|
||||||
|
subPath: downloads
|
||||||
|
- mountPath: /config
|
||||||
|
name: config
|
||||||
|
initContainers:
|
||||||
|
- name: init-media-filesystem
|
||||||
|
image: busybox
|
||||||
|
command:
|
||||||
|
- mkdir
|
||||||
|
- -p
|
||||||
|
- -v
|
||||||
|
- /data/downloads/movies
|
||||||
|
- /data/downloads/tv
|
||||||
|
- /data/downloads/books
|
||||||
|
- /data/downloads/audiobooks
|
||||||
|
- /data/media/movies
|
||||||
|
- /data/media/tv
|
||||||
|
- /data/media/books
|
||||||
|
- /data/media/audiobooks
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /data
|
||||||
|
name: data
|
||||||
|
restartPolicy: Always
|
||||||
|
terminationGracePeriodSeconds: 30
|
||||||
|
volumes:
|
||||||
|
- name: data
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: media-data
|
||||||
|
- name: config
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: transmission-config
|
||||||
12
media/transmission/dns-endpoint.yaml
Normal file
12
media/transmission/dns-endpoint.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: externaldns.k8s.io/v1alpha1
|
||||||
|
kind: DNSEndpoint
|
||||||
|
metadata:
|
||||||
|
name: transmission.michaelthomson.dev
|
||||||
|
namespace: media
|
||||||
|
spec:
|
||||||
|
endpoints:
|
||||||
|
- dnsName: transmission.michaelthomson.dev
|
||||||
|
recordTTL: 180
|
||||||
|
recordType: CNAME
|
||||||
|
targets:
|
||||||
|
- server.michaelthomson.dev
|
||||||
26
media/transmission/ingress.yaml
Normal file
26
media/transmission/ingress.yaml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: transmission
|
||||||
|
namespace: media
|
||||||
|
annotations:
|
||||||
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
|
traefik.ingress.kubernetes.io/router.middlewares: traefik-authentik@kubernetescrd
|
||||||
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
|
spec:
|
||||||
|
ingressClassName: traefik
|
||||||
|
rules:
|
||||||
|
- host: transmission.michaelthomson.dev
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- backend:
|
||||||
|
service:
|
||||||
|
name: transmission
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
path: /
|
||||||
|
pathType: ImplementationSpecific
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- transmission.michaelthomson.dev
|
||||||
|
secretName: letsencrypt-wildcard-cert-michaelthomson.dev
|
||||||
12
media/transmission/pvc-config.yaml
Normal file
12
media/transmission/pvc-config.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: transmission-config
|
||||||
|
namespace: media
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
storageClassName: longhorn
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 1Gi
|
||||||
15
media/transmission/secret.yaml
Normal file
15
media/transmission/secret.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
kind: SealedSecret
|
||||||
|
apiVersion: bitnami.com/v1alpha1
|
||||||
|
metadata:
|
||||||
|
name: transmission-secret
|
||||||
|
namespace: media
|
||||||
|
creationTimestamp:
|
||||||
|
spec:
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
name: transmission-secret
|
||||||
|
namespace: media
|
||||||
|
creationTimestamp:
|
||||||
|
encryptedData:
|
||||||
|
OPENVPN_PASSWORD: AgBYLwbZCo8elG5weUpoYEwJvcZiOQr/mGhORWV7Qt+fe810IzY8dMSLDNb82ob/mp9lFTWmcMCeVTNd05HiYgFCc1K/BFzUvU/KT1TLgf05ze8noyoDh8Ot5PZ8U2p4VE1b54mvTJrXthZ9ckoyOJuCWjymssBOAUfBJdQYnohbLOEpw5GiSvPsp5r7QMK7FCnou4oNNivZJBn53c9Q4YNftJ96YFWAj1ydXPPY8E8n6JH+txeDjPRM42RTZm2GzPqbprdyATJzgcDg27jJPTkGD3iDWmfy/QaEoFsUVi4ZrL+KWAJ6oYOx0pf0heiW043Gc0Xhkbcsca/t6bk7Jyd3OUbv90zJZrzvJd37uax6zzAhO6eEA19OzWK7LD/rKU7XD8CEyIsw7z8Xby4ZusbfzkZJjRDPVQhIHMK+kDFKGkBMccBZaYepNJdTd+f/iBiJ06zfPln8FlLAoEmK8/74WphHjXspIt9el+lCcs3+FBd/SRO96s7+CoWNMvwq4RIl5fF+0QxEIce9w0FwpN3heiFl8l7LyCWWAH+0Zud+rCQZaPctlccCOP5t95eLcIhP6XBhHyqIElWUNaGulpruIFwpoD1qgHt/hz3opBIoUi3VwnyoYPDlW/JU6ECzmMXvBaOtnvXU08ygRjWxry0RvzXq7x15j8Jn0RI/09W52bkQGb9KHCGebkt0Z5vx+YKBrhCOxiAhDKzWTceX3OTamx4ofJsoF2IlSTLjCQueAA==
|
||||||
|
OPENVPN_USERNAME: AgA/DHbUeCestT6mZjfwJ/JbUJ3wfhD3M5q2XP8xM6708uSxG+B6EDlcrIkM5+QAxioZCfeRtuv8pxCgb9qgc685ogOv+/C6k3S9hgtTlAmUMxCCLqgCG+HhSwVBj1YNpGcBrnpsbTbvM3NlaRJbMf+fFtYqYHS8WelqEZisAECIAuYkswxX/0wcViMlgTUk+vsd8KtM4z4AeH3d6u6ZczQTHnBxxbiOni8nwXepPo+aN5PcAsAuUVvp4g/gL0Uum3WxkjBnYA3C1+ez1liHXA36pqd/LVafLEcBNQyo45nhCi/Oy8QyGI7M4voU3A2dOJddn0Gssc99HyHEj6QjVr1sAE2K2gyFlqB90Hk/RkhbWSVnkJtJwgG0hFgD5NHLh+H0GcvOqUMOEVcYyL//k2Hw3dRvtQkvDdYZ16Kddpcueu8Q5Yi5k0cBs6c/cc7+iHVioKiJaT8OO1MiYGwR1FhwkILMvSt7ozkOsAFpqYxETwYpSeTYxoPyNyc0LfLdXdJ4aDzgZyW9cV7gc4yg7sOjM0wqv/FlGz8RQv+/iQLhoYh5kkm2zA68Of0ytIgitpBWecmuEnCFC9gR9llx+M3qkoQB3Dfvwom8DR7Xs4NOyvx8YzR9adPArc9jHIvqZfW7LVLubCS7PhhMsaKaF7brixPLNija0hCFv6JDn247MJ97KK+1byA9ZpCgKlINO+DyxJqA3Ljq/Vea9asgy9vA
|
||||||
23
media/transmission/service.yaml
Normal file
23
media/transmission/service.yaml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: transmission
|
||||||
|
namespace: media
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: transmission
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 9091
|
||||||
|
name: transmission-ui
|
||||||
|
- protocol: TCP
|
||||||
|
port: 51413
|
||||||
|
targetPort: 51413
|
||||||
|
name: transmission-tcp
|
||||||
|
- protocol: UDP
|
||||||
|
port: 51413
|
||||||
|
targetPort: 51413
|
||||||
|
name: transmission-udp
|
||||||
|
sessionAffinity: None
|
||||||
|
type: ClusterIP
|
||||||
Reference in New Issue
Block a user