Dynamia ppu-vgpu-device-plugin Chart 0.0.4
Release date: 2026-09-30
| Version | Previous | This release |
|---|---|---|
| Chart | 0.0.3 | 0.0.4 |
| appVersion | 1.0.5 | 1.0.5 |
This release changes only the Chart's default resource names and monitoring Service labels. The default images for both the plugin and monitor remain ghcr.io/dynamia-ai/ppu-device-plugin:v1.0.5, and the bundled PPU-HAMi-core is unchanged. During an upgrade of an existing deployment, preserve both resource names and DaemonSet selectors; adopting the new defaults changes both.
HAMi Enterprise compatibility
If PPU scheduling, memory/compute partitioning, and authorization already work with Chart 0.0.3, upgrading to 0.0.4 does not require upgrading HAMi Enterprise. The following are existing compatibility requirements for default application 1.0.5; this release does not raise the version floor.
| Feature or use case | Minimum usable HAMi Enterprise version | Compatibility requirements and upgrade conclusion |
|---|---|---|
| PPU scheduling, memory/compute partitioning, and authorization delivery and renewal with legacy UUID- or model-based licenses | v2.9.0-rc2 | Retain a scheduler that recognizes the existing authorization and publishes a valid hami.io/alibaba-license; this Chart upgrade does not require changing authorization or upgrading Enterprise. |
Instance authorization using the deviceInstances format | v2.10.0-r0 | The existing version requirement for this format is unchanged. If the current authorization works, retain the existing Enterprise and authorization. |
The new monitoring Service labels do not require an Enterprise upgrade and do not automatically configure Prometheus scraping. The scraper still needs a matching Service-discovery rule. These version floors are based on checks of released artifacts and interface implementations; they do not mean that physical PPU hardware was tested with every compatible version.
Changes
Chart changes
- The defaults for
nameOverrideandfullnameOverrideboth change from an empty string toppu-device-plugin. Unless explicitly overridden, this renames the plugin, monitor, bundled ConfigMap, ServiceAccounts, and RBAC resources. Theapp.kubernetes.io/namelabel and related selectors also change toppu-device-plugin. Existing resource names and selectors are not migrated automatically. - The monitoring Service adds
app: ppu-vgpu-monitorandcomponent: vgpu-monitorlabels for scrapers that discover Services using these labels. The new labels are Service metadata, not Pod labels or Service selectors. The port name remainsmetrics, the Service port and NodePort remain31992, and the target container port remains9394. Metric contents and listening ports do not change, and no ServiceMonitor is added.
The main name changes when each Chart uses its respective defaults are:
| Object or setting | Chart 0.0.3 | Chart 0.0.4 |
|---|---|---|
| Plugin DaemonSet | ppu-vgpu-device-plugin | ppu-device-plugin |
| Monitor DaemonSet and Service | ppu-vgpu-device-plugin-monitor | ppu-device-plugin-monitor |
| Bundled ConfigMap | ppu-vgpu-device-plugin-config | ppu-device-plugin-config |
| Plugin ServiceAccount, ClusterRole, and ClusterRoleBinding | ppu-vgpu-device-plugin | ppu-device-plugin |
| Monitor ServiceAccount, ClusterRole, and ClusterRoleBinding | ppu-vgpu-device-plugin-monitor | ppu-device-plugin-monitor |
app.kubernetes.io/name label and selector value | ppu-vgpu-device-plugin | ppu-device-plugin |
fullnameOverride controls resource names and takes precedence over nameOverride; nameOverride independently affects app.kubernetes.io/name. For a deployment using the previous default names, fixing only one value does not preserve both names and selectors.
Upgrade guidance
Preserve existing names during upgrade
For an existing deployment, we recommend retaining its resource names and selectors. If Chart 0.0.3 used the defaults, add the following to the existing upgrade values and retain the Helm release name and namespace:
nameOverride: ppu-vgpu-device-plugin
fullnameOverride: ppu-vgpu-device-plugin
In Chart 0.0.4, these settings preserve the previous resource names, DaemonSet selectors, monitor Service name, and ports while applying the new Service labels. If the previous release used custom names, supply the actual deployed names: nameOverride must match the existing app.kubernetes.io/name, and fullnameOverride must match the existing full resource-name prefix. Do not blindly use the default example.
Compare manifests rendered from the old and new values before upgrading. Confirm both DaemonSet names and spec.selector.matchLabels, Service names, ConfigMap references, and ServiceAccount references remain consistent. Do not set only fullnameOverride to the old name while leaving the new default nameOverride: the selector on the same-named DaemonSet would change and prevent an in-place update. Kubernetes does not allow DaemonSet selectors to be changed after creation.
Deployments adopting the new default names should plan for resource recreation and monitoring cutover rather than treating this as an in-place update of the same resources. Update external references to the old Service DNS name, ConfigMap, ServiceAccount, or labels as needed, and avoid having old and new plugins manage the same nodes simultaneously. The default monitoring NodePort is 31992; if the old Service still occupies it, the newly named Service cannot claim the same port. Schedule its release or use an unoccupied port. See Kubernetes NodePort allocation constraints.
Check monitoring discovery and upgrade results
- If the scraper discovers targets by Service labels, it can match
app=ppu-vgpu-monitorandcomponent=vgpu-monitor; the port name remainsmetrics. If it uses a Pod label selector, do not use these new Service labels as Pod match criteria. - If the scraper relies on a fixed Service name or
app.kubernetes.io/name, retain or update the rules to match the final naming plan. Check that the Service has the new labels, Endpoints or EndpointSlices point to monitor Pods, and the scraper target is healthy. Seeing Service labels alone does not prove that metrics are being scraped. - The default application version is unchanged; this Chart upgrade alone does not require replacing the runtime library, migrating authorization files, or recreating all workload Pods. Still check plugin and monitor DaemonSet rollouts, node resource registration, and existing monitoring targets. A Chart metadata update may roll Pods; it is not an application upgrade.
- Retain the existing
image.repository,image.tag, resource names, and device-split configuration. Custom images remain controlled by their existing overrides. This release adds no topology-scoring switch and does not require changing the scheduling policy.
See the Chart and appVersion mapping or the software center.
Values reference
The following parameter descriptions are taken from the README bundled with the Chart 0.0.4 release package and are preserved as published. Use this version's values.yaml as the source of default configuration.
Expand values table
| Key | Type | Default | Description |
|---|---|---|---|
| commonAnnotations | object | {} | |
| commonLabels | object | {} | |
| config.create | bool | true | |
| config.data.alibaba.defaultCores | int | 0 | |
| config.data.alibaba.defaultGPUNum | int | 1 | |
| config.data.alibaba.defaultMemory | int | 0 | |
| config.data.alibaba.deviceCoreScaling | float | 1 | |
| config.data.alibaba.deviceMemoryScaling | float | 1 | |
| config.data.alibaba.deviceSplitCount | int | 10 | |
| config.data.alibaba.gpuCorePolicy | string | "default" | |
| config.data.alibaba.memoryFactor | int | 1 | |
| config.data.alibaba.overwriteEnv | bool | false | |
| config.data.alibaba.resourceCoreName | string | "alibaba.com/gpu-core" | |
| config.data.alibaba.resourceCountName | string | "alibaba.com/ppu" | |
| config.data.alibaba.resourceMemoryName | string | "alibaba.com/ppu-memory" | |
| config.data.alibaba.resourceMemoryPercentageName | string | "alibaba.com/ppu-memory-percentage" | |
| config.data.alibaba.runtimeClassName | string | "" | |
| config.existingConfigMapName | string | "" | |
| fullnameOverride | string | "ppu-device-plugin" | |
| image.pullPolicy | string | "IfNotPresent" | |
| image.pullSecrets | list | [] | |
| image.repository | string | "ghcr.io/dynamia-ai/ppu-device-plugin" | |
| image.tag | string | "" | |
| monitor.enabled | bool | true | |
| monitor.resources | object | {} | |
| monitor.service.enabled | bool | true | |
| monitor.service.nodePort | int | 31992 | |
| monitor.service.port | int | 31992 | |
| monitor.service.type | string | "NodePort" | |
| nameOverride | string | "ppu-device-plugin" | |
| namespaceOverride | string | "hami-system" | |
| nodeSelector.alibabappu | string | "on" | |
| plugin.enabled | bool | true | |
| plugin.resources.limits.cpu | string | "500m" | |
| plugin.resources.limits.memory | string | "512Mi" | |
| plugin.resources.requests.cpu | string | "100m" | |
| plugin.resources.requests.memory | string | "128Mi" | |
| priorityClassName | string | "system-node-critical" | |
| tolerations[0].key | string | "CriticalAddonsOnly" | |
| tolerations[0].operator | string | "Exists" | |
| tolerations[1].effect | string | "NoSchedule" | |
| tolerations[1].operator | string | "Exists" |