我正在遵循Helm docs here中的Helm Library图表示例。
原始示例在库图中有一个公共ConfigMap,定义如下:
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name | printf "%s-%s" .Chart.Name }}
data: {}
{{- end -}}
{{- define "mylibchart.configmap" -}}
{{- include "mylibchart.util.merge" (append . "mylibchart.configmap.tpl") -}}
{{- end -}}我正在处理一个图表,该图表要求我使用if语句来启用或禁用特定资源。在本例中,它是一个configmap,但它可以是一个HPA或蓝色/绿色图表中的部署。
当我按如下方式添加If语句时:
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name | printf "%s-%s" .Chart.Name }}
data: {}
{{- end -}}
{{- define "mylibchart.configmap" -}}
{{- if .Values.configMapEnabled }}
{{- include "mylibchart.util.merge" (append . "mylibchart.configmap.tpl") -}}
{{- end -}}
{{- end -}}其中.Values.configMapEnabled存在于values.yaml文件中,并设置为true。
其他所有内容都与文档中描述的相同,即我使用一个简单的图表将库图表作为依赖项包含在内,然后运行:
helm install mydemo mychart/ --debug --dry-run
我收到以下错误:
helm.go:84: [debug] template: mychart/templates/configmap.yaml:1:4: executing "mychart/templates/configmap.yaml" at <include "mylibchart.configmap" (list . "mychart.configmap")>: error calling include: template: mychart/charts/mylibchart/templates/_configmap.yaml:9:14: executing "mylibchart.configmap" at <.Values.configMapEnabled>: can't evaluate field Values in type []interface {}为什么不计算Values字段?这似乎是一个作用域问题,但我无法解决它。
发布于 2020-07-01 17:43:16
我已经在我自己的设置上测试过了,看起来你没有在lib Chart中定义ConfigMap。
将其放在文件的开头:
{{- define "mylibchart.configmap.tpl" -}}同样,在您的例子中,lib Chart对Values一无所知--它是由app Chart side定义的。另外,所有条件都应该放在app Chart中,而不是lib Chart中。
模式:
parent/child chart -  chart dependencies, with global switches on/off请参阅小节:dependnecies -> condition: (optional)。
在您的案例中:
$ helm install mydemo mychart/ --debug --dry-run --set configmap.enabled=falsehttps://stackoverflow.com/questions/62664256
复制相似问题