【问题标题】:Helm template: get node of first array elementHelm模板:获取第一个数组元素的节点
【发布时间】:2021-01-24 19:00:22
【问题描述】:

假设我有这些价值观

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 }}

按照this suggestion,我也试过了

          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}}

我该如何处理这种情况?

【问题讨论】:

    标签: yaml kubernetes-helm templating go-templates


    【解决方案1】:

    你需要的是index function:

    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 }}
    

    【讨论】:

      猜你喜欢
      • 2010-12-27
      • 2021-09-23
      • 1970-01-01
      • 1970-01-01
      • 2011-05-04
      • 1970-01-01
      • 1970-01-01
      • 2011-09-07
      相关资源
      最近更新 更多