What the error is actually saying (root cause)
```
can't evaluate field cluster_id in type interface {}
.Values.prometheus.server.global.external_labels.cluster_id
```
and
```
warning: cannot overwrite table with non table for cost-analyzer.prometheus.server.global.external_labels
```
-
Kubecost 2.9 expects prometheus.server.global.external_labels to be a map
-
You are overriding prometheus.server.global with {}, which wipes out the expected structure
-
Kubecost templates then try to read:
.Values.prometheus.server.global.external_labels.cluster_id
but global is now an empty object → Helm crashes
The exact breaking line in your values
prometheus:
server:
global: {} # disable default global scrape config
Here is a minimal, safe fix that will unblock your upgrade:
kubecostFrontend:
api:
fqdn: localhost:9001
model:
fqdn: localhost:9003
global:
clusterId: cluster-one
grafana:
fqdn: localhost
finopsagent:
enabled: false
podSecurityPolicy:
enabled: false
networkCosts:
podSecurityPolicy:
enabled: false
prometheus:
server:
global:
external_labels:
cluster_id: cluster-one
podSecurityPolicy:
enabled: false
grafana:
rbac:
pspEnabled: false
------------------------------
Fabian Nnamdi
------------------------------