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

通过Helm升级kube-prometheus-stack至v56.2.1时Grafana敏感密钥报错

解决kube-prometheus-stack v56.2.1升级时Grafana OAuth敏感密钥报错问题

问题原因

kube-prometheus-stack v56.x版本对Grafana子chart的敏感配置做了强制约束:禁止在values中显式定义auth.generic_oauth.client_secret这类敏感密钥,必须通过变量扩展或Kubernetes Secret引用传递。即便你没在本地values.yml中写该字段,也可能是以下情况导致报错:

  • Terraform的helm_release资源合并了chart默认值、旧state中的残留配置
  • 之前的部署通过其他方式(比如Terraform变量、环境变量)传递了明文密钥
  • 新版本chart默认启用了OAuth相关配置模板,触发了校验逻辑

解决步骤

1. 排查实际生效的Grafana配置

先确认最终传递给Helm的完整values中是否存在显式的client_secret:

helm template <你的发布名称> prometheus-community/kube-prometheus-stack --version 56.2.1 --values <你的values.yml路径> --output-dir ./rendered-config

查看./rendered-config目录下Grafana组件的ConfigMap或Deployment配置,定位grafana.ini部分,确认是否有auth.generic_oauth.client_secret的明文值。

2. 改用Kubernetes Secret存储敏感密钥

首先创建存储AzureAD客户端密钥的Secret:

kubectl create secret generic grafana-azuread-oauth -n <你的命名空间> --from-literal=client-secret="<你的AzureAD客户端密钥>"

然后在Terraform的helm_release配置中,修改Grafana的OAuth配置,通过Secret引用密钥:

resource "helm_release" "kube_prometheus_stack" {
  name       = "kube-prometheus-stack"
  repository = "https://prometheus-community.github.io/helm-charts"
  chart      = "kube-prometheus-stack"
  version    = "56.2.1"
  namespace  = "monitoring"

  set {
    name  = "grafana.auth.generic_oauth.enabled"
    value = "true"
  }

  set {
    name  = "grafana.auth.generic_oauth.client_id"
    value = "<你的AzureAD客户端ID>"
  }

  # 通过secretKeyRef引用K8s Secret中的密钥
  set {
    name  = "grafana.auth.generic_oauth.client_secret.secretKeyRef.name"
    value = "grafana-azuread-oauth"
  }

  set {
    name  = "grafana.auth.generic_oauth.client_secret.secretKeyRef.key"
    value = "client-secret"
  }

  # 确保启用Secret加载逻辑
  set {
    name  = "grafana.useSecrets"
    value = "true"
  }
}

3. 清理旧配置残留

如果Terraform state中存储了旧的明文密钥配置,执行以下命令查看当前state中的values:

terraform state show helm_release.kube_prometheus_stack

若发现有显式的client_secret字段,在Terraform配置中显式覆盖为上述Secret引用方式,或者设置为空值(确保不会继承旧配置)。

4. 校验chart默认值

查看kube-prometheus-stack v56.2.1的Grafana子chart默认values,确认是否有默认启用的OAuth配置。如果不需要的话,在你的values中显式关闭或覆盖:

set {
  name  = "grafana.auth.generic_oauth.enabled"
  value = "true" # 根据你的实际需求调整,若不需要可设为false
}

内容的提问来源于stack exchange,提问作者Abdullah Khawer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 21:58:35