From 864fafcdd60ab9d545a3709019033945b72bdd34 Mon Sep 17 00:00:00 2001 From: Tobias Korf Date: Wed, 26 Nov 2025 11:12:53 +0000 Subject: [PATCH 1/7] Add support for custom NVIDIA GPU device selection and capabilities Allow users to specify custom GPU devices and driver capabilities for NVIDIA GPU workloads instead of using hardcoded defaults. Changes: - Add optional `pms.gpu.nvidia.devices` field (default: "all") Supports GPU indices, UUIDs, or "all" for all GPUs - Add optional `pms.gpu.nvidia.capabilities` field (default: "compute,video,utility") - Add documentation links to NVIDIA Container Toolkit docs - Use Helm default function for cleaner template syntax Users can now specify specific GPUs (e.g., "0,1" or by UUID) and customize driver capabilities (compute, video, utility, graphics, etc.) according to their workload requirements. References: - GPU enumeration: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/docker-specialized.html#gpu-enumeration - Driver capabilities: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/docker-specialized.html#driver-capabilities --- charts/plex-media-server/templates/statefulset.yaml | 4 ++-- charts/plex-media-server/values.yaml | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/charts/plex-media-server/templates/statefulset.yaml b/charts/plex-media-server/templates/statefulset.yaml index e3ba4af2..63498006 100644 --- a/charts/plex-media-server/templates/statefulset.yaml +++ b/charts/plex-media-server/templates/statefulset.yaml @@ -139,9 +139,9 @@ spec: {{- end }} {{- if .Values.pms.gpu.nvidia.enabled }} - name: NVIDIA_VISIBLE_DEVICES - value: all + value: {{ .Values.pms.gpu.nvidia.devices | default "all" | quote }} - name: NVIDIA_DRIVER_CAPABILITIES - value: compute,video,utility + value: {{ .Values.pms.gpu.nvidia.capabilities | default "compute,video,utility" | quote }} {{- end }} {{- with .Values.pms.livenessProbe }} livenessProbe: diff --git a/charts/plex-media-server/values.yaml b/charts/plex-media-server/values.yaml index f5bda93e..b58a9d6d 100644 --- a/charts/plex-media-server/values.yaml +++ b/charts/plex-media-server/values.yaml @@ -68,6 +68,15 @@ pms: gpu: nvidia: enabled: false + # Optional: Specify GPU devices by index, UUID, or use "all" (default) + # Examples: "0,1", "GPU-uuid1,GPU-uuid2", or "all" + # See: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/docker-specialized.html#gpu-enumeration + devices: "all" + + # Optional: Specify driver capabilities (default: compute,video,utility) + # Available: compute, compat32, graphics, utility, video, display + # See: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/docker-specialized.html#driver-capabilities + capabilities: "compute,video,utility" resources: {} # We usually recommend not to specify default resources and to leave this as a conscious From 882ce59763fac7f13db509b7c19b1992ab3594cf Mon Sep 17 00:00:00 2001 From: Tobias Korf Date: Wed, 26 Nov 2025 11:32:11 +0000 Subject: [PATCH 2/7] docs: add NVIDIA GPU configuration options to README Document new configurable fields for NVIDIA GPU support: - pms.gpu.nvidia.devices: GPU device selection - pms.gpu.nvidia.capabilities: Driver capabilities configuration Include links to official NVIDIA Container Toolkit documentation for GPU enumeration and driver capabilities. Bump chart version. --- charts/plex-media-server/Chart.yaml | 2 +- charts/plex-media-server/README.md | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/charts/plex-media-server/Chart.yaml b/charts/plex-media-server/Chart.yaml index 97ffb2a5..145c2dc8 100644 --- a/charts/plex-media-server/Chart.yaml +++ b/charts/plex-media-server/Chart.yaml @@ -22,7 +22,7 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 1.2.0 +version: 1.2.1 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to diff --git a/charts/plex-media-server/README.md b/charts/plex-media-server/README.md index bd44b8e3..9014f80b 100644 --- a/charts/plex-media-server/README.md +++ b/charts/plex-media-server/README.md @@ -1,6 +1,6 @@ # plex-media-server -![Version: 1.2.0](https://img.shields.io/badge/Version-1.2.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.42.2](https://img.shields.io/badge/AppVersion-1.42.2-informational?style=flat-square) +![Version: 1.2.1](https://img.shields.io/badge/Version-1.2.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.42.2](https://img.shields.io/badge/AppVersion-1.42.2-informational?style=flat-square) **Homepage:** @@ -130,6 +130,8 @@ Before contributing, please read the [Code of Conduct](../../CODE_OF_CONDUCT.md) | pms.configExistingClaim | string | `""` | Name of an existing `PersistentVolumeClaim` for the PMS database NOTE: When set, 'configStorage' and 'storageClassName' are ignored. | | pms.configStorage | string | `"2Gi"` | The volume size to provision for the PMS database | | pms.gpu.nvidia.enabled | bool | `false` | | +| pms.gpu.nvidia.capabilities | string | `"compute,video,utility"` | NVIDIA driver capabilities to enable. See [NVIDIA docs](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/docker-specialized.html#driver-capabilities) | +| pms.gpu.nvidia.devices | string | `"all"` | NVIDIA GPU device selection. Use "all", GPU indices (e.g., "0,1"), or UUIDs. See [NVIDIA docs](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/docker-specialized.html#gpu-enumeration) | | pms.livenessProbe | object | `{}` | Add kubernetes liveness probe to pms container. | | pms.readinessProbe | object | `{}` | Add kubernetes readiness probe to pms container. | | pms.resources | object | `{}` | | From f7e58c0c0da0f29616c89920b79c141c22e3d9a9 Mon Sep 17 00:00:00 2001 From: Tobias Korf Date: Thu, 27 Nov 2025 11:47:50 +0100 Subject: [PATCH 3/7] Update charts/plex-media-server/values.yaml Co-authored-by: Gaston Festari --- charts/plex-media-server/values.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/charts/plex-media-server/values.yaml b/charts/plex-media-server/values.yaml index b58a9d6d..90b404bb 100644 --- a/charts/plex-media-server/values.yaml +++ b/charts/plex-media-server/values.yaml @@ -72,7 +72,6 @@ pms: # Examples: "0,1", "GPU-uuid1,GPU-uuid2", or "all" # See: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/docker-specialized.html#gpu-enumeration devices: "all" - # Optional: Specify driver capabilities (default: compute,video,utility) # Available: compute, compat32, graphics, utility, video, display # See: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/docker-specialized.html#driver-capabilities From e0e2febc447417222a604d1eaab87e5e3da9af6d Mon Sep 17 00:00:00 2001 From: Tobias Korf Date: Thu, 27 Nov 2025 11:47:57 +0100 Subject: [PATCH 4/7] Update charts/plex-media-server/Chart.yaml Co-authored-by: Gaston Festari --- charts/plex-media-server/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/plex-media-server/Chart.yaml b/charts/plex-media-server/Chart.yaml index 145c2dc8..dadb7043 100644 --- a/charts/plex-media-server/Chart.yaml +++ b/charts/plex-media-server/Chart.yaml @@ -22,7 +22,7 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 1.2.1 +version: 1.3.0 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to From d5c70b9b760868907db715a0f6418b19934efe49 Mon Sep 17 00:00:00 2001 From: Tobias Korf Date: Thu, 27 Nov 2025 11:48:07 +0100 Subject: [PATCH 5/7] Update charts/plex-media-server/README.md Co-authored-by: Gaston Festari --- charts/plex-media-server/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/plex-media-server/README.md b/charts/plex-media-server/README.md index 9014f80b..bf0a5d92 100644 --- a/charts/plex-media-server/README.md +++ b/charts/plex-media-server/README.md @@ -1,6 +1,6 @@ # plex-media-server -![Version: 1.2.1](https://img.shields.io/badge/Version-1.2.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.42.2](https://img.shields.io/badge/AppVersion-1.42.2-informational?style=flat-square) +![Version: 1.3.0](https://img.shields.io/badge/Version-1.3.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.42.2](https://img.shields.io/badge/AppVersion-1.42.2-informational?style=flat-square) **Homepage:** From 9ef0d51345fee34fb0da82b07c1700996fbc0c61 Mon Sep 17 00:00:00 2001 From: Andrew Gemmel Date: Thu, 27 Nov 2025 15:17:02 -0400 Subject: [PATCH 6/7] fix: claimSecret.key reference check (#162) Rename claimSecret.value -> claimSecret.key conditional check in the `statefulset.yaml` template. --- charts/plex-media-server/templates/statefulset.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/plex-media-server/templates/statefulset.yaml b/charts/plex-media-server/templates/statefulset.yaml index 63498006..49c331b4 100644 --- a/charts/plex-media-server/templates/statefulset.yaml +++ b/charts/plex-media-server/templates/statefulset.yaml @@ -130,7 +130,7 @@ spec: value: {{ $value | quote }} {{- end }} {{- end }} - {{- if and .Values.pms.claimSecret.name .Values.pms.claimSecret.value }} + {{- if and .Values.pms.claimSecret.name .Values.pms.claimSecret.key }} - name: PLEX_CLAIM valueFrom: secretKeyRef: From 86e6a189455cff895667d29ddf6c2b35a5c03481 Mon Sep 17 00:00:00 2001 From: Gaston Festari Date: Thu, 27 Nov 2025 16:33:18 -0300 Subject: [PATCH 7/7] docs: update pms.nvidia values description Signed-off-by: Gaston Festari --- charts/plex-media-server/README.md | 4 ++-- charts/plex-media-server/values.yaml | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/charts/plex-media-server/README.md b/charts/plex-media-server/README.md index bf0a5d92..a33641d6 100644 --- a/charts/plex-media-server/README.md +++ b/charts/plex-media-server/README.md @@ -129,9 +129,9 @@ Before contributing, please read the [Code of Conduct](../../CODE_OF_CONDUCT.md) | pms.claimSecret.name | string | `""` | | | pms.configExistingClaim | string | `""` | Name of an existing `PersistentVolumeClaim` for the PMS database NOTE: When set, 'configStorage' and 'storageClassName' are ignored. | | pms.configStorage | string | `"2Gi"` | The volume size to provision for the PMS database | +| pms.gpu.nvidia.capabilities | string | `"compute,video,utility"` | Optional: NVIDIA driver capabilities. Available values are: `compute`, `compat32`, `graphics`, `utility`, `video`, `display`. See [NVIDIA docs](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/docker-specialized.html#driver-capabilities) | +| pms.gpu.nvidia.devices | string | `"all"` | Optional: NVIDIA GPU devices by index or UUID. Examples: "0,1", "GPU-uuid1,GPU-uuid2", or "all". See [NVIDIA docs](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/docker-specialized.html#gpu-enumeration) | | pms.gpu.nvidia.enabled | bool | `false` | | -| pms.gpu.nvidia.capabilities | string | `"compute,video,utility"` | NVIDIA driver capabilities to enable. See [NVIDIA docs](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/docker-specialized.html#driver-capabilities) | -| pms.gpu.nvidia.devices | string | `"all"` | NVIDIA GPU device selection. Use "all", GPU indices (e.g., "0,1"), or UUIDs. See [NVIDIA docs](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/docker-specialized.html#gpu-enumeration) | | pms.livenessProbe | object | `{}` | Add kubernetes liveness probe to pms container. | | pms.readinessProbe | object | `{}` | Add kubernetes readiness probe to pms container. | | pms.resources | object | `{}` | | diff --git a/charts/plex-media-server/values.yaml b/charts/plex-media-server/values.yaml index 90b404bb..4eb67e48 100644 --- a/charts/plex-media-server/values.yaml +++ b/charts/plex-media-server/values.yaml @@ -68,13 +68,13 @@ pms: gpu: nvidia: enabled: false - # Optional: Specify GPU devices by index, UUID, or use "all" (default) - # Examples: "0,1", "GPU-uuid1,GPU-uuid2", or "all" - # See: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/docker-specialized.html#gpu-enumeration + # -- Optional: NVIDIA GPU devices by index or UUID. + # Examples: "0,1", "GPU-uuid1,GPU-uuid2", or "all". + # See [NVIDIA docs](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/docker-specialized.html#gpu-enumeration) devices: "all" - # Optional: Specify driver capabilities (default: compute,video,utility) - # Available: compute, compat32, graphics, utility, video, display - # See: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/docker-specialized.html#driver-capabilities + # -- Optional: NVIDIA driver capabilities. + # Available values are: `compute`, `compat32`, `graphics`, `utility`, `video`, `display`. + # See [NVIDIA docs](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/docker-specialized.html#driver-capabilities) capabilities: "compute,video,utility" resources: {}