如何在 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 }}