Skip to content

Commit

Permalink
feat: migrate plex to k8s
Browse files Browse the repository at this point in the history
  • Loading branch information
sp3nx0r committed Dec 11, 2023
1 parent fa624a8 commit 07aee25
Show file tree
Hide file tree
Showing 9 changed files with 182 additions and 40 deletions.
2 changes: 1 addition & 1 deletion kubernetes/apps/kube-system/csi-driver-nfs/ks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: cluster-apps-csi-driver-nfs
name: csi-driver-nfs
namespace: flux-system
labels:
substitution.flux.home.arpa/disabled: "true"
Expand Down
9 changes: 9 additions & 0 deletions kubernetes/apps/media/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
# yaml-language-server: $schema=https://json.schemastore.org/kustomization
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
# Pre Flux-Kustomizations
- ./namespace.yaml
# Flux-Kustomizations
- ./plex/ks.yaml
7 changes: 7 additions & 0 deletions kubernetes/apps/media/namespace.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
apiVersion: v1
kind: Namespace
metadata:
name: media
labels:
kustomize.toolkit.fluxcd.io/prune: disabled
126 changes: 126 additions & 0 deletions kubernetes/apps/media/plex/app/helmrelease.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
---
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/helm.toolkit.fluxcd.io/helmrelease_v2beta1.json
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
name: plex
spec:
interval: 30m
chart:
spec:
chart: app-template
version: 2.4.0
sourceRef:
kind: HelmRepository
name: bjw-s
namespace: flux-system
maxHistory: 2
install:
remediation:
retries: 3
upgrade:
cleanupOnFail: true
remediation:
retries: 3
uninstall:
keepHistory: false
dependsOn:
# - name: intel-device-plugin-gpu
# namespace: kube-system
- name: csi-driver-nfs
namespace: kube-system
values:
controllers:
main:
annotations:
reloader.stakater.com/auto: "true"
containers:
main:
image:
repository: ghcr.io/onedr0p/plex
tag: 1.32.8.7639-fb6452ebf@sha256:637fe10cef736f249d96cb004c12f81646c81ca17ddce22374ea8782aa6646c2
env:
TZ: UTC
probes:
liveness: &probes
enabled: true
custom: true
spec:
httpGet:
path: /identity
port: 32400
initialDelaySeconds: 0
periodSeconds: 10
timeoutSeconds: 1
failureThreshold: 3
readiness: *probes
startup:
enabled: false
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities: { drop: ["ALL"] }
resources:
requests:
# gpu.intel.com/i915: 1
cpu: 200m
memory: 2Gi
limits:
# gpu.intel.com/i915: 1
memory: 6Gi
pod:
# affinity:
# podAntiAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# - labelSelector:
# matchExpressions:
# - key: app.kubernetes.io/name
# operator: In
# values: ["frigate"]
# topologyKey: kubernetes.io/hostname
# nodeSelector:
# intel.feature.node.kubernetes.io/gpu: "true"
securityContext:
runAsUser: 1001
runAsGroup: 1001
runAsNonRoot: true
fsGroup: 1001
fsGroupChangePolicy: OnRootMismatch
# supplementalGroups: [44, 105, 10000]
service:
main:
ports:
http:
port: 32400
ingress:
main:
enabled: true
className: external
annotations:
external-dns.alpha.kubernetes.io/target: external.${SECRET_DOMAIN}
nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
hosts:
- host: &host "{{ .Release.Name }}.${SECRET_DOMAIN}"
paths:
- path: /
service:
name: main
port: http
tls:
- hosts:
- *host
persistence:
config:
enabled: true
existingClaim: plex-config
tmp:
type: emptyDir
transcode:
type: emptyDir
media:
type: nfs
server: 192.168.5.10
path: /storage/plex-data/Media
globalMounts:
- path: /media
readOnly: true
7 changes: 7 additions & 0 deletions kubernetes/apps/media/plex/app/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
# yaml-language-server: $schema=https://json.schemastore.org/kustomization
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ./helmrelease.yaml
- ./pvc.yaml
11 changes: 11 additions & 0 deletions kubernetes/apps/media/plex/app/pvc.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: plex-config
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 100Gi
storageClassName: nfs-slow
21 changes: 21 additions & 0 deletions kubernetes/apps/media/plex/ks.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/kustomize.toolkit.fluxcd.io/kustomization_v1.json
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: &app plex
namespace: flux-system
spec:
targetNamespace: media
commonMetadata:
labels:
app.kubernetes.io/name: *app
path: ./kubernetes/apps/media/plex/app
prune: true
sourceRef:
kind: GitRepository
name: home-kubernetes
wait: false
interval: 30m
retryInterval: 1m
timeout: 5m
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: networking
resources:
- ./plex-docker.yaml
- ./proxmox.yaml
- ./pihole.yaml
- ./unifi.yaml
38 changes: 0 additions & 38 deletions kubernetes/apps/networking/external-services/plex-docker.yaml

This file was deleted.

0 comments on commit 07aee25

Please sign in to comment.