fix(hami): clean up leftover hami-dra references and harden defaults

Remove broken hami-dra subchart dependency from vendored chart
(Chart.yaml, Chart.lock, values.yaml) and strip DRA condition guards
from all templates since the subchart was already deleted. Override
devicePlugin updateStrategy to OnDelete to prevent destructive rolling
updates of GPU workloads. Align gpu-operator template with project
pattern (unconditional values emission). Add nodeConfiguration format
documentation and test for conflicting valuesOverride scenario.

Signed-off-by: Arsolitt <arsolitt@gmail.com>
This commit is contained in:
Arsolitt committed 2026-04-24 14:00:48 +03:00
1 parent ab7deb2b05
commit 2734dc0bcb
33 files changed
+55 -92

No files matched your search

@@ -1,5 +1,5 @@
{{- define "cozystack.defaultGpuOperatorValues" -}}
{{- if and (hasKey .Values.addons "hami") .Values.addons.hami.enabled }}
{{- if .Values.addons.hami.enabled }}
gpu-operator:
devicePlugin:
enabled: false
@@ -40,10 +40,8 @@ spec:
{{- $defaults := fromYaml (include "cozystack.defaultGpuOperatorValues" .) }}
{{- $overrides := deepCopy (default (dict) .Values.addons.gpuOperator.valuesOverride) }}
{{- $merged := mergeOverwrite (default (dict) $defaults) $overrides }}
{{- with $merged }}
values:
{{- toYaml . | nindent 4 }}
{{- end }}
{{- if $merged }}{{ toYaml $merged | nindent 4 }}{{ end }}
dependsOn:
{{- if lookup "helm.toolkit.fluxcd.io/v2" "HelmRelease" .Release.Namespace .Release.Name }}
@@ -26,8 +26,9 @@ tests:
enabled: false
valuesOverride: {}
asserts:
- notExists:
- equal:
path: spec.values
value: null
- it: should allow user overrides to merge with hami defaults
set:
@@ -66,6 +67,28 @@ tests:
path: spec.values.gpu-operator.devicePlugin.enabled
value: true
- it: should let user explicitly override devicePlugin.enabled to true with hami enabled
set:
addons:
gpuOperator:
enabled: true
valuesOverride:
gpu-operator:
devicePlugin:
enabled: true
driver:
enabled: false
hami:
enabled: true
valuesOverride: {}
asserts:
- equal:
path: spec.values.gpu-operator.devicePlugin.enabled
value: true
- equal:
path: spec.values.gpu-operator.driver.enabled
value: false
- it: should not render when gpuOperator is disabled
set:
addons:
@@ -1,6 +0,0 @@
dependencies:
- name: hami-dra
repository: https://project-hami.github.io/HAMi-DRA/
version: 0.1.0
digest: sha256:374551539570bcee82c1c4dea93eac59e6f410b6d5967d188efd630e203d43bb
generated: "2026-04-17T04:06:47.689117678Z"
+1 -5
View File
@@ -1,10 +1,6 @@
apiVersion: v2
appVersion: 2.8.1
dependencies:
- condition: dra.enabled
name: hami-dra
repository: https://project-hami.github.io/HAMi-DRA/
version: 0.1.0
dependencies: []
description: Heterogeneous AI Computing Virtualization Middleware
keywords:
- vgpu
@@ -1,4 +1,4 @@
{{- if and .Values.devicePlugin.enabled (not .Values.devicePlugin.nodeConfiguration.externalConfigName) (not .Values.dra.enabled) -}}
{{- if and .Values.devicePlugin.enabled (not .Values.devicePlugin.nodeConfiguration.externalConfigName) -}}
apiVersion: v1
kind: ConfigMap
metadata:
@@ -1,4 +1,4 @@
{{- if and .Values.devicePlugin.enabled (not .Values.dra.enabled) }}
{{- if .Values.devicePlugin.enabled }}
apiVersion: apps/v1
kind: DaemonSet
metadata:
@@ -1,4 +1,4 @@
{{- if and .Values.devicePlugin.enabled (not .Values.dra.enabled) -}}
{{- if .Values.devicePlugin.enabled -}}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
@@ -1,4 +1,4 @@
{{- if and .Values.devicePlugin.enabled (not .Values.dra.enabled) -}}
{{- if .Values.devicePlugin.enabled -}}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
@@ -1,4 +1,4 @@
{{- if and .Values.devicePlugin.enabled (not .Values.dra.enabled) -}}
{{- if .Values.devicePlugin.enabled -}}
apiVersion: v1
kind: Service
metadata:
@@ -1,4 +1,4 @@
{{- if and .Values.devicePlugin.enabled (not .Values.dra.enabled) -}}
{{- if .Values.devicePlugin.enabled -}}
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -1,5 +1,4 @@
{{- if and .Values.devicePlugin.enabled (not .Values.dra.enabled) -}}
{{- if and .Values.devicePlugin.createRuntimeClass .Values.devicePlugin.runtimeClassName }}
{{- if and .Values.devicePlugin.enabled .Values.devicePlugin.createRuntimeClass .Values.devicePlugin.runtimeClassName -}}
apiVersion: node.k8s.io/v1
kind: RuntimeClass
metadata:
@@ -7,5 +6,4 @@ metadata:
annotations:
helm.sh/hook: pre-install,pre-upgrade
handler: nvidia
{{- end }}
{{- end -}}
@@ -1,4 +1,4 @@
{{- if and .Values.scheduler.admissionWebhook.enabled (not .Values.dra.enabled) -}}
{{- if .Values.scheduler.admissionWebhook.enabled -}}
{{- if .Values.scheduler.certManager.enabled }}
apiVersion: cert-manager.io/v1
kind: Certificate
@@ -1,4 +1,3 @@
{{- if not .Values.dra.enabled -}}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
@@ -33,4 +32,3 @@ rules:
resources: ["nodes"]
verbs: ["get", "update", "list", "patch"]
{{- end -}}
{{- end }}
@@ -1,4 +1,3 @@
{{- if not .Values.dra.enabled -}}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
@@ -45,5 +44,4 @@ roleRef:
subjects:
- kind: ServiceAccount
name: {{ include "hami-vgpu.scheduler" . }}
namespace: {{ include "hami-vgpu.namespace" . }}
{{- end }}
namespace: {{ include "hami-vgpu.namespace" . }}
@@ -1,4 +1,4 @@
{{- if and .Values.scheduler.kubeScheduler.enabled (not .Values.dra.enabled) -}}
{{- if .Values.scheduler.kubeScheduler.enabled -}}
apiVersion: v1
kind: ConfigMap
metadata:
@@ -1,4 +1,4 @@
{{- if and .Values.scheduler.kubeScheduler.enabled (not .Values.dra.enabled) -}}
{{- if .Values.scheduler.kubeScheduler.enabled -}}
apiVersion: v1
kind: ConfigMap
metadata:
@@ -1,4 +1,3 @@
{{- if not .Values.dra.enabled -}}
apiVersion: apps/v1
kind: Deployment
metadata:
@@ -223,5 +222,4 @@ spec:
{{- end }}
{{- if .Values.scheduler.nodeName }}
nodeName: {{ .Values.scheduler.nodeName }}
{{- end }}
{{- end }}
{{- end }}
@@ -1,4 +1,3 @@
{{- if not .Values.dra.enabled -}}
apiVersion: v1
kind: ConfigMap
metadata:
@@ -406,5 +405,4 @@ data:
memory: 12288
aiCore: 4
aiCPU: 4
{{ end }}
{{- end }}
{{ end }}
@@ -1,5 +1,4 @@
{{- if and .Values.scheduler.admissionWebhook.enabled (not .Values.dra.enabled) -}}
{{- if and (.Values.scheduler.patch.enabled) (not .Values.scheduler.certManager.enabled) }}
{{- if and .Values.scheduler.admissionWebhook.enabled (.Values.scheduler.patch.enabled) (not .Values.scheduler.certManager.enabled) -}}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
@@ -27,4 +26,3 @@ rules:
- {{ include "hami-vgpu.fullname" . }}-admission
{{- end }}
{{- end }}
{{- end }}
@@ -1,5 +1,4 @@
{{- if and .Values.scheduler.admissionWebhook.enabled (not .Values.dra.enabled) -}}
{{- if and (.Values.scheduler.patch.enabled) (not .Values.scheduler.certManager.enabled) }}
{{- if and .Values.scheduler.admissionWebhook.enabled (.Values.scheduler.patch.enabled) (not .Values.scheduler.certManager.enabled) -}}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
@@ -19,4 +18,3 @@ subjects:
name: {{ include "hami-vgpu.fullname" . }}-admission
namespace: {{ include "hami-vgpu.namespace" . }}
{{- end }}
{{- end }}
@@ -1,5 +1,4 @@
{{- if and .Values.scheduler.admissionWebhook.enabled (not .Values.dra.enabled) -}}
{{- if and (.Values.scheduler.patch.enabled) (not .Values.scheduler.certManager.enabled) }}
{{- if and .Values.scheduler.admissionWebhook.enabled (.Values.scheduler.patch.enabled) (not .Values.scheduler.certManager.enabled) -}}
apiVersion: batch/v1
kind: Job
metadata:
@@ -67,4 +66,3 @@ spec:
runAsNonRoot: true
runAsUser: {{ .Values.scheduler.patch.runAsUser }}
{{- end }}
{{- end }}
@@ -1,5 +1,4 @@
{{- if and .Values.scheduler.admissionWebhook.enabled (not .Values.dra.enabled) -}}
{{- if and (.Values.scheduler.patch.enabled) (not .Values.scheduler.certManager.enabled) }}
{{- if and .Values.scheduler.admissionWebhook.enabled (.Values.scheduler.patch.enabled) (not .Values.scheduler.certManager.enabled) -}}
apiVersion: batch/v1
kind: Job
metadata:
@@ -62,4 +61,3 @@ spec:
runAsNonRoot: true
runAsUser: {{ .Values.scheduler.patch.runAsUser }}
{{- end }}
{{- end }}
@@ -1,5 +1,4 @@
{{- if and .Values.scheduler.admissionWebhook.enabled (not .Values.dra.enabled) -}}
{{- if and (.Values.scheduler.patch.enabled) (not .Values.scheduler.certManager.enabled) }}
{{- if and .Values.scheduler.admissionWebhook.enabled (.Values.scheduler.patch.enabled) (not .Values.scheduler.certManager.enabled) -}}
{{- if .Values.podSecurityPolicy.enabled }}
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
@@ -37,4 +36,3 @@ spec:
- downwardAPI
{{- end }}
{{- end }}
{{- end }}
@@ -1,5 +1,4 @@
{{- if and .Values.scheduler.admissionWebhook.enabled (not .Values.dra.enabled) -}}
{{- if and (.Values.scheduler.patch.enabled) (not .Values.scheduler.certManager.enabled) }}
{{- if and .Values.scheduler.admissionWebhook.enabled (.Values.scheduler.patch.enabled) (not .Values.scheduler.certManager.enabled) -}}
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
@@ -20,4 +19,3 @@ rules:
- get
- create
{{- end }}
{{- end }}
@@ -1,5 +1,4 @@
{{- if and .Values.scheduler.admissionWebhook.enabled (not .Values.dra.enabled) -}}
{{- if and (.Values.scheduler.patch.enabled) (not .Values.scheduler.certManager.enabled) }}
{{- if and .Values.scheduler.admissionWebhook.enabled (.Values.scheduler.patch.enabled) (not .Values.scheduler.certManager.enabled) -}}
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
@@ -20,4 +19,3 @@ subjects:
name: {{ include "hami-vgpu.fullname" . }}-admission
namespace: {{ include "hami-vgpu.namespace" . }}
{{- end }}
{{- end }}
@@ -1,5 +1,4 @@
{{- if and .Values.scheduler.admissionWebhook.enabled (not .Values.dra.enabled) }}
{{- if and (.Values.scheduler.patch.enabled) (not .Values.scheduler.certManager.enabled) }}
{{- if and .Values.scheduler.admissionWebhook.enabled (.Values.scheduler.patch.enabled) (not .Values.scheduler.certManager.enabled) }}
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -12,4 +11,3 @@ metadata:
{{- include "hami-vgpu.labels" . | nindent 4 }}
app.kubernetes.io/component: admission-webhook
{{- end }}
{{- end }}
@@ -1,4 +1,3 @@
{{- if not .Values.dra.enabled -}}
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
@@ -10,5 +9,4 @@ metadata:
rules:
- apiGroups: ["coordination.k8s.io"]
resources: ["leases"]
verbs: ["create", "list", "watch", "get", "update", "patch"]
{{- end }}
verbs: ["create", "list", "watch", "get", "update", "patch"]
@@ -1,4 +1,3 @@
{{- if not .Values.dra.enabled -}}
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
@@ -30,4 +29,3 @@ subjects:
name: {{ include "hami-vgpu.mock-device-plugin" . }}
namespace: {{ include "hami-vgpu.namespace" . }}
{{- end -}}
{{- end }}
@@ -1,4 +1,3 @@
{{- if not .Values.dra.enabled }}
apiVersion: v1
kind: Service
metadata:
@@ -32,5 +31,4 @@ spec:
protocol: TCP
selector:
app.kubernetes.io/component: hami-scheduler
{{- include "hami-vgpu.selectorLabels" . | nindent 4 }}
{{- end }}
{{- include "hami-vgpu.selectorLabels" . | nindent 4 }}
@@ -1,4 +1,3 @@
{{- if not .Values.dra.enabled -}}
apiVersion: v1
kind: ServiceAccount
metadata:
@@ -15,4 +14,3 @@ metadata:
name: {{ include "hami-vgpu.mock-device-plugin" . }}
namespace: {{ include "hami-vgpu.namespace" . }}
{{- end -}}
{{- end }}
@@ -1,4 +1,4 @@
{{- if and .Values.scheduler.admissionWebhook.enabled (not .Values.dra.enabled) -}}
{{- if .Values.scheduler.admissionWebhook.enabled -}}
apiVersion: admissionregistration.k8s.io/v1
kind: MutatingWebhookConfiguration
metadata:
@@ -392,24 +392,6 @@ mockDevicePlugin:
## - myRegistryKeySecretName
##
pullSecrets: []
# If this option is enabled, the DRA will be installed and the scheduler extender will not be installed.
dra:
enabled: false
# Configuration for the hami-dra subchart, which includes DRA drivers.
# This is part of config for DRA, please refer to the DRA documentation for more details.
hami-dra:
monitor:
enabled: true
drivers:
nvidia:
enabled: true
# If you are using gpu driver on host, you need to set this to false
containerDriver: true
image:
repository: projecthami/k8s-dra-driver
tag: "v0.0.1-dev"
devices:
amd:
customresources:
+4
View File
@@ -1,6 +1,10 @@
hami:
devicePlugin:
runtimeClassName: nvidia
updateStrategy:
type: OnDelete
# See upstream charts/hami/values.yaml for nodeConfiguration format.
# Each entry: {"name": "node-name", "operatingmode": "hami-core", "devicesplitcount": N, ...}
nodeConfiguration:
config: |
{