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

Kubernetes Secret返回Nil值,无法读取values.yaml配置问题

问题解决:Kubernetes Secret生成返回Nil值的修复方案

问题根源

Secret模板调用imagePullSecret模板时,错误传递了根上下文$,而非当前循环的imageCredentials条目。imagePullSecret模板依赖的.registry、.username等字段仅存在于单个imageCredentials项中,根上下文无这些字段,导致变量解析为nil,最终生成带%!s(<nil>)的无效Secret内容。

修复步骤

修改Secret生成模板中调用imagePullSecret的参数,将$替换为当前循环的.:

修改后的Secret生成模板

{{ range $index, $namespace := (lookup "v1" "Namespace" "" "").items }}
{{ range $.Values.imageCredentials }}
apiVersion: v1
kind: Secret
metadata:  
  name: {{ .name }}
  namespace: {{ $namespace.metadata.name }}
type: kubernetes.io/dockerconfigjson
data:
  .dockerconfigjson: {{ template "imagePullSecret" . }}  # 将此处的$替换为.
{{ end }}
{{ end }}

验证修复效果

重新部署Helm Chart后,执行命令查看Secret内容:

kubectl get secret cred2 -n service-b -o jsonpath='{.data.*}' | base64 -d

此时应正确输出values.yaml中配置的imageCredentials值:

{"auths":{"quay.io":{"username":"someone","password":"sillyness","email":"someone@host.com","auth":"c29tZW9uZTpzaWxsbHluZXM="}}}

额外说明

_helpers.tpl中的imagePullSecret模板逻辑无误,它通过printf格式化JSON并完成base64编码,只要传递正确的单条imageCredentials上下文,就能生成有效的dockerconfigjson内容。

内容的提问来源于stack exchange,提问作者D-bwoy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 19:40:57