这是values.yaml文件。它包含以下内容,当我尝试将其添加到_helper.tpl中时,我会Helm template failed. Error: render error in "windows/templates/ingresses/windows.yaml": template: windows/templates/_helpers.tpl:38:18: executing "windows.certificate" at <.Values.ingress.enab...>: can't evaluate field ingress in type interface {} : exit status 1
values.yaml
ingress:
enabled: true
tls: true
certificate: ''
issuer:
name: letsencrypt-staging
hosts:
windows:
- name: ''
path: /
_helpers.tpl
{{/*
Calculate certificate
*/}}
{{- define "windows.certificate" }}
{{- printf .Values.ingress.enabled }} // error line is this. line no 38
{{- end }}
在windows.yaml中
- secretName: {{ template "windows.certificate" . }} // calling the helper method.
答案 0 :(得分:1)
问题是缩进尝试
values.yaml
ingress:
enabled: true
tls: true
certificate: ''
issuer:
name: letsencrypt-staging
hosts:
windows:
- name: ''
path: /
在辅助程序上也进行了一些更改,以控制定义块的输出
_helpers.tpl
{{/*
Calculate certificate
*/}}
{{- define "windows.certificate" }}
{{- if .Values.ingress.enabled }}
{{- printf .Values.ingress.certificate }}
{{- end }}
{{- end }}
答案 1 :(得分:0)
当您调用帮助程序时,上下文可能不是定义所期望的根。
例如,如果您在这样的模板中使用它:
{{- range .Values.deployments }}
{{ $certificate := include "windows.certificate" . }}
{{- end }}
调用帮助程序时的上下文为 .Values.deployments 。因此, .Values.ingress.certificate 会指向 .Values.deployments.Values.ingress.certificate ,这当然是不存在的。
在helm templating guide的变量部分的开头,有一个示例,说明with
块如何影响.
的含义。阅读它可能有助于您了解如何知道传递给帮助模板的内容。
答案 2 :(得分:0)
针对同样的问题。
就我而言,我必须将文件从 V alues.yaml重命名为 v alues.yaml(注意小写文件名)。