Files
homelab-v/apps/plex/00-plex.yaml
T

228 lines
4.7 KiB
YAML

---
## Namespace
apiVersion: v1
kind: Namespace
metadata:
name: plex
labels:
name: plex
---
### StorageClass for config
#apiVersion: storage.k8s.io/v1
#kind: StorageClass
#metadata:
# name: plex-config
#provisioner: kubernetes.io/no-provisioner
#volumeBindingMode: WaitForFirstConsumer
#---
### Config
#apiVersion: v1
#kind: PersistentVolume
#metadata:
# name: plex-config-pv
#spec:
# capacity:
# storage: 2Gi
# volumeMode: Filesystem
# accessModes:
# - ReadWriteOnce
# persistentVolumeReclaimPolicy: Retain
# storageClassName: plex-config
# local:
# path: "/mnt/sdb1/homelab/config/plex"
# nodeAffinity:
# required:
# nodeSelectorTerms:
# - matchExpressions:
# - key: kubernetes.io/hostname
# operator: In
# values:
# - ratatoskr
#---
### Persistent Volume Claim for config
#apiVersion: v1
#kind: PersistentVolumeClaim
#metadata:
# name: plex-config
#spec:
# storageClassName: plex-config
# accessModes:
# - ReadWriteOnce
# resources:
# requests:
# storage: 2Gi
#---
### StorageClass for media-data
#apiVersion: storage.k8s.io/v1
#kind: StorageClass
#metadata:
# name: media-data
#provisioner: kubernetes.io/no-provisioner
#volumeBindingMode: WaitForFirstConsumer
#---
### PersistentVolume for media-data
#apiVersion: v1
#kind: PersistentVolume
#metadata:
# name: media-data-pv
#spec:
# capacity:
# storage: 1.8Ti
# volumeMode: Filesystem
# accessModes:
# - ReadWriteOnce
# persistentVolumeReclaimPolicy: Retain
# storageClassName: media-data
# local:
# path: "/mnt/sdb1/data"
# nodeAffinity:
# required:
# nodeSelectorTerms:
# - matchExpressions:
# - key: kubernetes.io/hostname
# operator: In
# values:
# - ratatoskr
#---
### Persistent Volume Claim for media-data
#apiVersion: v1
#kind: PersistentVolumeClaim
#metadata:
# name: media-data
#spec:
# storageClassName: media-data
# accessModes:
# - ReadWriteOnce
# resources:
# requests:
# storage: 1.8Ti
---
## Service for exposing Plex
apiVersion: v1
kind: Service
metadata:
namespace: plex
name: plex
spec:
type: LoadBalancer
ports:
- name: web
port: 32400
- name: a
port: 1900
protocol: UDP
- name: b
port: 3005
- name: c
port: 8324
- name: d
port: 32410
protocol: UDP
- name: e
port: 32412
protocol: UDP
- name: f
port: 32413
protocol: UDP
- name: g
port: 32414
protocol: UDP
- name: h
port: 32469
selector:
app: plex
---
## Deployment for Plex
kind: Deployment
apiVersion: apps/v1
metadata:
namespace: plex
name: plex
labels:
app: plex
spec:
replicas: 1
selector:
matchLabels:
app: plex
template:
metadata:
labels:
app: plex
spec:
volumes:
- name: plex-config
hostPath:
path: "/mnt/sdb1/homelab/config/plex"
- name: media-data
hostPath:
path: "/mnt/sdb1/data"
#- name: plex-config-pv
# persistentVolumeClaim:
# claimName: plex-config
#- name: media-data-pv
# persistentVolumeClaim:
# claimName: media-data
containers:
- name: plex
image: lscr.io/linuxserver/plex
volumeMounts:
- mountPath: "/config"
name: plex-config
- mountPath: "/app/data"
name: media-data
#- mountPath: "/config"
# name: plex-config-pv
#- mountPath: "/app/data"
# name: media-data-pv
env:
- name: PUID
value: "1000"
- name: PGID
value: "1000"
- name: TZ
value: Europe/Oslo
ports:
- name: web
containerPort: 32400
- name: a
containerPort: 1900
protocol: UDP
- name: b
containerPort: 3005
- name: c
containerPort: 8324
- name: d
containerPort: 32410
protocol: UDP
- name: e
containerPort: 32412
protocol: UDP
- name: f
containerPort: 32413
protocol: UDP
- name: g
containerPort: 32414
protocol: UDP
- name: h
containerPort: 32469
---
## IngressRoute for Plex
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: ingressroute-plex
namespace: plex
spec:
entryPoints:
- websecure
routes:
- match: Host(`plex.stonegarden.dev`)
kind: Rule
services:
- name: plex
port: 32400
tls:
certResolver: letsencrypt