如何在 Helm 上设置可选数组的范围
How to range optional array on Helm
考虑以下模板:
...
{{- range .Values.additionalMetrics }}
- interval: 1m
port: {{ .name }}
{{- end }}
...
以及以下值:
additionalMetrics:
- name: kamon-metrics
port: 9096
targetPort: 9096
如果 additionalMetrics
缺失,helm 模板将失败。
是否可以先检查是否定义了 additionalMetrics
,然后检查值的范围,否则继续检查?
注意: 没有先做 if 然后做范围,但是在一个条件下,例如这不是我想要的解决方案:
{{- if .Values.additionalMetrics }}
{{- range .Values.additionalMetrics }}
- name: {{ .name }}
port: {{ .port }}
targetPort: {{ .targetPort }}
{{- end }}
{{- end }}
提前致谢
您不想要的解决方案,我认为可以。它很简单并且可以完成它应该做的事情。没必要把事情搞复杂。
您可以使用 with
子句使其更漂亮:
{{- with .Values.additionalMetrics }}
{{- range . }}
- name: {{ .name }}
port: {{ .port }}
targetPort: {{ .targetPort }}
{{- end }}
{{- end }}
如果你真的想在一条语句中完成,你可以使用 default
一个空列表:
{{- range .Values.additionalMetrics | default list }}
- name: {{ .name }}
port: {{ .port }}
targetPort: {{ .targetPort }}
{{- end }}
考虑以下模板:
...
{{- range .Values.additionalMetrics }}
- interval: 1m
port: {{ .name }}
{{- end }}
...
以及以下值:
additionalMetrics:
- name: kamon-metrics
port: 9096
targetPort: 9096
如果 additionalMetrics
缺失,helm 模板将失败。
是否可以先检查是否定义了 additionalMetrics
,然后检查值的范围,否则继续检查?
注意: 没有先做 if 然后做范围,但是在一个条件下,例如这不是我想要的解决方案:
{{- if .Values.additionalMetrics }}
{{- range .Values.additionalMetrics }}
- name: {{ .name }}
port: {{ .port }}
targetPort: {{ .targetPort }}
{{- end }}
{{- end }}
提前致谢
您不想要的解决方案,我认为可以。它很简单并且可以完成它应该做的事情。没必要把事情搞复杂。
您可以使用 with
子句使其更漂亮:
{{- with .Values.additionalMetrics }}
{{- range . }}
- name: {{ .name }}
port: {{ .port }}
targetPort: {{ .targetPort }}
{{- end }}
{{- end }}
如果你真的想在一条语句中完成,你可以使用 default
一个空列表:
{{- range .Values.additionalMetrics | default list }}
- name: {{ .name }}
port: {{ .port }}
targetPort: {{ .targetPort }}
{{- end }}