如何在 Helm 上设置可选数组的范围

Zvi*_*nts 4 yaml kubernetes-helm

考虑以下模板:

...
    {{- range .Values.additionalMetrics }}
    - interval: 1m
      port: {{ .name }}
    {{- end }}
...
Run Code Online (Sandbox Code Playgroud)

以及以下值:

additionalMetrics:
  - name: kamon-metrics
    port: 9096
    targetPort: 9096
Run Code Online (Sandbox Code Playgroud)

如果additionalMetrics缺少,helm 模板将会失败。

是否可以先检查是否additionalMetrics已定义,然后检查值的范围,否则继续?

注意:没有首先进行 if 和 then range,但在一种情况下,例如这不是我想要的解决方案:

    {{- if .Values.additionalMetrics }}
    {{- range .Values.additionalMetrics }}
    - name:       {{ .name }}
      port:       {{ .port }}
      targetPort: {{ .targetPort }}
    {{- end }}
    {{- end }}
Run Code Online (Sandbox Code Playgroud)

提前致谢

The*_*ool 6

在我看来,这个解决方案不是你想要的,但没关系。它很简单并且做了它应该做的事情。没有必要把事情搞复杂。

你可以用一个子句让它更漂亮一点with

{{- with .Values.additionalMetrics }}
{{- range . }}
- name:       {{ .name }}
  port:       {{ .port }}
  targetPort: {{ .targetPort }}
{{- end }}
{{- end }}
Run Code Online (Sandbox Code Playgroud)

如果您确实想在单个语句中执行此操作,可以将其用作default空列表:

{{- range .Values.additionalMetrics | default list }}
- name:       {{ .name }}
  port:       {{ .port }}
  targetPort: {{ .targetPort }}
{{- end }}
Run Code Online (Sandbox Code Playgroud)