can't evaluate field global in type interface {} Prometheus-community stack helm chart


uek67

New Member
Hallo Forum,
ich habe eben versucht das prometheus-values.yaml von github auszuführen :


helm install prometheus-stack --version 35.3.1 -f prometheus-values.yaml prometheus-community/kube-prometheus-stack

coalesce.go:286: warning: cannot overwrite table with non table for kube-prometheus-stack.grafana.sidecar.dashboards.multicluster (map[etcd:map[enabled:false] global:map[enabled:false]])
coalesce.go:286: warning: cannot overwrite table with non table for kube-prometheus-stack.grafana.sidecar.dashboards.multicluster (map[etcd:map[enabled:false] global:map[enabled:false]])
Error: INSTALLATION FAILED: template: kube-prometheus-stack/templates/grafana/dashboards-1.14/workload-total.yaml:1206:41: executing "kube-prometheus-stack/templates/grafana/dashboards-1.14/workload-total.yaml" at <.Values.grafana.sidecar.dashboards.multicluster.global.enabled>: can't evaluate field global in type interface {}


Wie kann ich diesen Fehler fixen?

DANKE

Uli
 
Hallo Uli,


Der Fehler kommt daher, dass deine prometheus-values.yaml sehr wahrscheinlich nicht zur Chart-Version 35.3.1 passt . Konkret erwartet kube-prometheus-stack bei grafana.sidecar.dashboards.multicluster inzwischen ein Objekt bzw. eine Map mit Unterfeldern wie global.enabled und etcd.enabled. In älteren Beispielen oder fremden Values-Dateien ist Multicluster aber oft noch als einfacher Wert hinterlegt. Genau das sieht man auch an der Warnung „cannot overwrite table with non table“ und an der eigentlichen Fehlermeldung, dass global nicht ausgewertet werden kann. Das ist in einer bekannten Ausgabe des Charts genau so beschrieben.


Die Lösung besteht darin, in Ihrer prometheus-values.yaml den Abschnitt grafana.sidecar.dashboards.multicluster entweder ganz zu entfernen, wenn Sie ihn nicht benötigen, oder ihn auf die neue Struktur umzustellen. Korrekt wäre zum Beispiel:

grafana:
Beiwagen:
Dashboards:
Multicluster:
global:
aktiviert: false
etcd:
aktiviert: false

Wenn in Ihrer Datei stattdessen etwas wie multicluster: false, multicluster: true oder ein anderer Nicht-Map-Wert steht, müssen Sie das ersetzen. Der Fehler entsteht auch nicht beim eigentlichen Helm-Befehl, sondern durch einen Schema-Konflikt in den Values . Das passt auch zu der offiziellen Multi-Cluster-Konfiguration, bei der der Multicluster genau mit global.enabled und etcd.enabled aufgebaut wird.


Am einfachsten ist es am meisten, dir die Values.yaml genau für Version 35.3.1 zu nehmen und deine Anpassungen dort sauber einzupflegen, statt eine ältere oder fremde Datei weiterzuverwenden. Dann verschwinden solche Typfehler normalerweise sofort.

Viele Grüße! ;)
 
Back
Top