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
相关产品推荐
相关产品推荐

