mirror of
https://github.com/outbackdingo/homelab-v.git
synced 2026-08-25 14:53:19 +00:00
228 lines
4.7 KiB
YAML
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
|