plex.yaml 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. ---
  2. apiVersion: v1
  3. kind: Namespace
  4. metadata:
  5. name: plex
  6. ---
  7. apiVersion: apps/v1
  8. kind: Deployment
  9. metadata:
  10. name: plex
  11. namespace: plex
  12. spec:
  13. selector:
  14. matchLabels:
  15. app: plex
  16. replicas: 1
  17. template:
  18. metadata:
  19. labels:
  20. app: plex
  21. annotations:
  22. backup.velero.io/backup-volumes-excludes: media,media-metadata,tmpfs
  23. spec:
  24. containers:
  25. - name: plex
  26. image: linuxserver/plex:version-1.40.1.8227-c0dd5a73e
  27. # for debugging
  28. # command: ["/bin/sh"]
  29. # args: ["-c", "sleep 3600"]
  30. ports:
  31. - containerPort: 32400
  32. name: http-web-svc
  33. volumeMounts:
  34. - mountPath: "/config"
  35. name: config
  36. - mountPath: "/config/Library/Application Support/Plex Media Server/Media"
  37. name: media-metadata
  38. - mountPath: "/media"
  39. name: media
  40. - mountPath: "/transcodes"
  41. name: tmpfs
  42. # Quicksync
  43. - name: "render-device"
  44. mountPath: "/dev/dri/renderD128"
  45. env:
  46. - name: PUID
  47. value: "1000"
  48. - name: PGID
  49. value: "1000"
  50. ## NVIDIA
  51. #- name: NVIDIA_DRIVER_CAPABILITIES
  52. # value: "all"
  53. # Quicksync
  54. securityContext:
  55. privileged: true
  56. livenessProbe:
  57. httpGet:
  58. path: /web/index.html
  59. port: 32400
  60. failureThreshold: 5
  61. initialDelaySeconds: 10
  62. periodSeconds: 30
  63. timeoutSeconds: 10
  64. ## NVIDIA
  65. #resources:
  66. # limits:
  67. # nvidia.com/gpu: 1
  68. affinity:
  69. nodeAffinity:
  70. requiredDuringSchedulingIgnoredDuringExecution:
  71. nodeSelectorTerms:
  72. - matchExpressions:
  73. - key: gpu-node
  74. operator: In
  75. values:
  76. - "true"
  77. volumes:
  78. - name: config
  79. persistentVolumeClaim:
  80. claimName: plex-config-pvc
  81. - name: media-metadata
  82. persistentVolumeClaim:
  83. claimName: plex-metadata-pvc
  84. - name: media
  85. persistentVolumeClaim:
  86. claimName: plex-pvc
  87. readOnly: true
  88. - name: tmpfs
  89. emptyDir:
  90. medium: Memory
  91. sizeLimit: 12Gi
  92. # Quicksync
  93. - name: "render-device"
  94. hostPath:
  95. path: "/dev/dri/renderD128"
  96. ---
  97. apiVersion: v1
  98. kind: Service
  99. metadata:
  100. name: plex-service
  101. namespace: plex
  102. spec:
  103. selector:
  104. app: plex
  105. type: ClusterIP
  106. ports:
  107. - name: plex-web-port
  108. protocol: TCP
  109. port: 32400
  110. targetPort: http-web-svc
  111. ---
  112. apiVersion: traefik.containo.us/v1alpha1
  113. kind: IngressRoute
  114. metadata:
  115. name: plex
  116. namespace: plex
  117. spec:
  118. entryPoints:
  119. - websecure
  120. routes:
  121. - kind: Rule
  122. match: Host(`plex.jibby.org`)
  123. services:
  124. - kind: Service
  125. name: plex-service
  126. port: 32400