You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在AWS EKS中用Helm安装Grafana时设置Service注解报错,如何解决?

问题

Grafana Helm Chart默认创建的Service使用经典负载均衡(Classic Load Balancer),我已经安装了AWS负载均衡webhook,想要覆盖Grafana Service的注解,于是执行了以下helm安装命令:

helm install grafana grafana/grafana \
--namespace grafana \
--set persistence.storageClassName="gp2" \
--set persistence.enabled=true \
--set adminPassword='abc' \
--values grafana.yaml \
--set service.type=LoadBalancer \
--set nodeSelector.app=prometheus \
--set nodeSelector.k8s-app=metrics-server \
--set service.annotations."service\.beta.kubernetes\.io/aws-load-balancer-nlb-target-type"=ip \
--set service.annotations."service\.beta.kubernetes\.io/aws-load-balancer-type"=external

但多次调整后仍持续报错:

Error: INSTALLATION FAILED: YAML parse error on grafana/templates/service.yaml: error unmarshaling JSON: while decoding JSON: json: cannot unmarshal object into Go struct field .metadata.annotations of type string
正确配置方式

这个错误的核心原因是你通过--set传递的注解是对象格式,但grafana.yaml里已经把service.annotations定义成了字符串类型,两者类型不匹配导致解析失败。

你可以用以下两种方法解决:

方法一:通过--set强制覆盖注解对象

如果不需要保留grafana.yaml里的原有注解,先清空原有注解定义,再添加新的注解:

helm install grafana grafana/grafana \
--namespace grafana \
--set persistence.storageClassName="gp2" \
--set persistence.enabled=true \
--set adminPassword='abc' \
--values grafana.yaml \
--set service.type=LoadBalancer \
--set nodeSelector.app=prometheus \
--set nodeSelector.k8s-app=metrics-server \
--set service.annotations={} \
--set service.annotations."service\.beta.kubernetes\.io/aws-load-balancer-nlb-target-type"=ip \
--set service.annotations."service\.beta.kubernetes\.io/aws-load-balancer-type"=external

关键是--set service.annotations={}这一步,它会把原有字符串类型的注解替换为空对象,之后再添加的注解键值对就能正常解析成对象类型。

方法二:在values文件中配置注解(推荐)

直接修改你的grafana.yaml,在其中添加Service的注解配置,这种方式更直观且不易出现类型冲突:

service:
  type: LoadBalancer
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: ip
    service.beta.kubernetes.io/aws-load-balancer-type: external

然后执行安装命令时,去掉命令里的--set service.annotations相关参数即可:

helm install grafana grafana/grafana \
--namespace grafana \
--set persistence.storageClassName="gp2" \
--set persistence.enabled=true \
--set adminPassword='abc' \
--values grafana.yaml \
--set nodeSelector.app=prometheus \
--set nodeSelector.k8s-app=metrics-server

内容的提问来源于stack exchange,提问作者Parity Bit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 09:09:23