Helm模板:获取第一个数组元素的节点

18

假设我有以下数值

grafana:
  ...
  ingress:
    enabled: true
    annotations: {}
      # kubernetes.io/ingress.class: nginx
      # kubernetes.io/tls-acme: "true"
    hosts:
      - host: chart-example.local
        paths: ["/grafana"]

这是标准的helm。因此,我希望将hosts保留为一个数组(即使这使得接下来的操作有点棘手)。如何获取第一个.host(我不在意任何其他可能性),以便将env.value设置为动态的。

      containers:
        - name: {{ .Chart.Name }}-grafana
          env:
          - name: GF_DOMAIN
            value: chart-example.local

我尝试了

          env:
          - name: GF_DOMAIN
          {{- range .Values.grafana.ingress.hosts }}
            value: {{ .host }}
          {{- end }}
          env:
          {{- range .Values.grafana.ingress.hosts }}
          - name: GF_DOMAIN
            value: {{ .host }}
          {{- end }}

根据这个建议,我也试了一下。

          env:
          {{- with .Values.grafana.ingress.hosts 0}}
          - name: GF_DOMAIN
            value: {{ .host }}
          {{- end}}
或者
value: {{ .Values.grafana.ingress.hosts 0 .host }}
value: {{ .Values.grafana.ingress.hosts | first.host}}

我该如何处理这个案例?

1个回答

41
你需要的是index函数
env:
{{- with (index .Values.grafana.ingress.hosts 0) }}
- name: GF_DOMAIN
  value: {{ .host }}
{{- end }}

或者,first同样有效:

env:
{{- with (first .Values.grafana.ingress.hosts) }}
- name: GF_DOMAIN
  value: {{ .host }}
{{- end }}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接