如何检查头盔模板中不存在的字典值?
How to check for a non-existent dictionary value within a helm template?
在我的值配置文件中,我有一个字典数组,如下所示:
connects_to
- name: myname
release: optional release
- name: another name
请注意,将始终提供名称,但发布版本可能会也可能不会。在我的模板中,我有:
{{- if .Values.connects_to }}
app.openshift.io/connects-to: '
{{- range .Values.connects_to -}}
{{- if .release -}}
{{- .release -}}-{{- .name -}},
{{- else -}}
{{- $.Release.Name -}}-{{- .name -}},
{{- end -}}
{{- end -}}
'
{{- end }}
给出错误:
can't evaluate field release in type interface {}
我也试过使用“hasKey”如下:
{{- if .Values.connects_to }}
app.openshift.io/connects-to: '
{{- range .Values.connects_to -}}
{{- if hasKey . "release" -}}
{{- .release -}}-{{- .name -}},
{{- else -}}
{{- $.Release.Name -}}-{{- .name -}},
{{- end -}}
{{- end -}}
'
{{- end }}
给出错误:
wrong type for value; expected map[string]interface {}; got string
如何在不必每次都为“release”指定值的情况下完成此检查?我的头盔版本:
version.BuildInfo{Version:"v3.2.3+4.el8", GitCommit:"2160a65177049990d1b76efc67cb1a9fd21909b1", GitTreeState:"clean", GoVersion:"go1.13.4"}
这实际上适用于“hasKey”方法,值定义中存在错误。
对于寻找错误可能原因的人 (wrong type for value; expected map[string]interface {}; got string
)。
给定模板
{{- if hasKey .Values.somedict "valueX" -}}
{{- .Values.somedict.valueX -}}
{{- end -}}
并使用 2 values.yaml(例如:helm template . --values Values1.yaml --values Values2.yaml
)。
Values1.yaml:
somedict:
valueA: 1
Values2.yaml:
# Causes error
somedict:
# Works
somedict: {}
# Leaving out "somedict" also work
在我的值配置文件中,我有一个字典数组,如下所示:
connects_to
- name: myname
release: optional release
- name: another name
请注意,将始终提供名称,但发布版本可能会也可能不会。在我的模板中,我有:
{{- if .Values.connects_to }}
app.openshift.io/connects-to: '
{{- range .Values.connects_to -}}
{{- if .release -}}
{{- .release -}}-{{- .name -}},
{{- else -}}
{{- $.Release.Name -}}-{{- .name -}},
{{- end -}}
{{- end -}}
'
{{- end }}
给出错误:
can't evaluate field release in type interface {}
我也试过使用“hasKey”如下:
{{- if .Values.connects_to }}
app.openshift.io/connects-to: '
{{- range .Values.connects_to -}}
{{- if hasKey . "release" -}}
{{- .release -}}-{{- .name -}},
{{- else -}}
{{- $.Release.Name -}}-{{- .name -}},
{{- end -}}
{{- end -}}
'
{{- end }}
给出错误:
wrong type for value; expected map[string]interface {}; got string
如何在不必每次都为“release”指定值的情况下完成此检查?我的头盔版本:
version.BuildInfo{Version:"v3.2.3+4.el8", GitCommit:"2160a65177049990d1b76efc67cb1a9fd21909b1", GitTreeState:"clean", GoVersion:"go1.13.4"}
这实际上适用于“hasKey”方法,值定义中存在错误。
对于寻找错误可能原因的人 (wrong type for value; expected map[string]interface {}; got string
)。
给定模板
{{- if hasKey .Values.somedict "valueX" -}}
{{- .Values.somedict.valueX -}}
{{- end -}}
并使用 2 values.yaml(例如:helm template . --values Values1.yaml --values Values2.yaml
)。
Values1.yaml:
somedict:
valueA: 1
Values2.yaml:
# Causes error
somedict:
# Works
somedict: {}
# Leaving out "somedict" also work