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

如何在Helm中引用key包含点(.)的Kubernetes Secret的值?

问题根源

你的代码无法取值的核心原因是 Go 模板语法中.操作符会将标识符按.分割为多层嵌套属性,你写的$secret.data.user.password会被解析为:先取$secret.data下的user对象,再取user下的password属性。但你定义的 Secret 中 key 是完整的user.password字符串,属于data下的直接一级属性,不存在嵌套的user对象,因此无法匹配到对应值。


解决方法

使用 Go 模板内置的index函数来访问包含特殊字符的 key,直接传入完整的 key 字符串即可,示例代码如下:

{{- $secret := lookup "v1" "Secret" .Release.Namespace "secret" -}}
{{- if $secret -}}
    <!-- 取 base64 编码的原始值 -->
    {{- print (index $secret.data "user.password") }}

    <!-- 如果需要直接获取明文,加上 b64dec 解码即可 -->
    {{- print (index $secret.data "user.password" | b64dec) }}
{{- end -}}

补充说明

  • index函数是 Go 模板中专门用来按索引/键名访问集合元素的方法,支持传入包含特殊字符的字符串作为键名,不会被解析为嵌套路径。
  • 注意原代码缺少{{- end -}}来闭合if判断,使用时需要补充完整,避免模板渲染报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:24:04