{{- define "openstack-cluster.kube-prometheus-stack.hookScript" -}} # Ensure that the dashboard configmaps belong to the Helm release for the manifest object helm-adopt \ kube-prometheus-stack-dashboards \ {{ .Values.addons.monitoring.kubePrometheusStack.release.namespace }} \ configmap/nvidia-dcgm-exporter-dashboard \ --namespace {{ .Values.addons.monitoring.kubePrometheusStack.release.namespace }} # With the version bump to 40.x, kube-prometheus-stack picks up prometheus-node-exporter 4.x # This changes the selector labels on the daemonset, which is an immutable field, so we remove # the daemonset with the old labels before upgrading # NOTE: Once the upgrade to 40.x has occurred, this will be a no-op # https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack#from-39x-to-40x kubectl delete daemonset \ -l release=kube-prometheus-stack,app=prometheus-node-exporter \ -n {{ .Values.addons.monitoring.kubePrometheusStack.release.namespace }} {{- end }} {{- if and .Values.addons.enabled .Values.addons.monitoring.enabled }} --- apiVersion: v1 kind: Secret metadata: name: {{ include "openstack-cluster.componentName" (list . "kube-prometheus-stack") }}-config labels: {{- include "openstack-cluster.componentLabels" (list . "kube-prometheus-stack") | nindent 4 }} {{ .Values.addons.watchLabel }}: "" stringData: values: | {{- toYaml .Values.addons.monitoring.kubePrometheusStack.release.values | nindent 4 }} --- apiVersion: addons.stackhpc.com/v1alpha1 kind: HelmRelease metadata: name: {{ include "openstack-cluster.componentName" (list . "kube-prometheus-stack") }} labels: {{ include "openstack-cluster.componentLabels" (list . "kube-prometheus-stack") | nindent 4 }} spec: clusterName: {{ include "openstack-cluster.clusterName" . }} bootstrap: true chart: {{ toYaml .Values.addons.monitoring.kubePrometheusStack.chart | nindent 4 }} targetNamespace: {{ .Values.addons.monitoring.kubePrometheusStack.release.namespace }} releaseName: kube-prometheus-stack valuesSources: - secret: name: {{ include "openstack-cluster.componentName" (list . "kube-prometheus-stack") }}-config key: values --- {{- include "openstack-cluster.hookJob" (list . "pre-upgrade" "kube-prometheus-stack-migrate" "openstack-cluster.kube-prometheus-stack.hookScript" ) }} --- apiVersion: addons.stackhpc.com/v1alpha1 kind: Manifests metadata: name: {{ include "openstack-cluster.componentName" (list . "kube-prometheus-stack") }}-dashboards labels: {{ include "openstack-cluster.componentLabels" (list . "kube-prometheus-stack") | nindent 4 }} spec: clusterName: {{ include "openstack-cluster.clusterName" . }} bootstrap: true targetNamespace: {{ .Values.addons.monitoring.kubePrometheusStack.release.namespace }} releaseName: kube-prometheus-stack-dashboards manifestSources: - template: | apiVersion: v1 kind: ConfigMap metadata: name: nvidia-dcgm-exporter-dashboard labels: grafana_dashboard: "1" data: nvidia-dcgm-exporter-dashboard.json: | {{- .Files.Get "grafana-dashboards/nvidia-dcgm-exporter-dashboard_rev2.json" | nindent 12 }} {{- end }}