如何在Helm的templates/deployment.yaml中设置Secret名称?
Helm部署报错:envFrom.secretRef.name缺失值的解决方法
问题原因
你在templates/deployment.yaml里用{{ .Values.secretName }}指定secret名称,但values.yaml里根本没定义secretName字段——你把配置写在了envFrom[0].secretRef.name路径下,变量引用和配置结构不匹配,导致模板渲染后secretRef.name是空值,触发Kubernetes必填字段校验错误。
两种解决办法
办法一:修改模板,适配values的配置结构
直接把values里的整个envFrom配置渲染到模板中,既匹配结构又方便后续扩展:
containers: - name: {{ .Chart.Name }} envFrom: {{ .Values.envFrom | toYaml | nindent 4 }}
如果只想单独引用该secret名称,也可以写:
containers: - name: {{ .Chart.Name }} envFrom: - secretRef: name: {{ .Values.envFrom.0.secretRef.name }}
办法二:修改values,适配模板的变量引用
在values.yaml中添加secretName字段,和模板里的引用对应:
secretName: secret1 envFrom: - secretRef: name: secret1
这样模板里的{{ .Values.secretName }}就能正确获取到secret1的值。
验证
修改完成后重新执行helm install或helm upgrade --install命令,即可通过Kubernetes的校验,完成部署。
内容的提问来源于stack exchange,提问作者Epic555
相关产品推荐
相关产品推荐

