helm-template получить значение карты по ключу - PullRequest
0 голосов
/ 13 октября 2018

В helm-шаблоне я пытаюсь получить значение карты по ключу.

Я пытался использовать index из go-шаблонов, как предложено здесь: Получите доступ к значению карты, используя переменный ключ в шаблоне Go

Однако это не работает для меня (см. Более поздний тест).Любая идея для альтернативного решения?

Chart.yaml:

apiVersion: v1
appVersion: "1.0"
description: A Helm chart for Kubernetes
name: foochart
version: 0.1.0

values.yaml:

label:
  - name: foo
    value: foo1
  - name: bar
    value: bar2

templates/test.txt

label: {{ .Values.label }}

Работает нормально для helm template .:

---
# Source: foochart/templates/test.txt
label: [map[value:foo1 name:foo] map[name:bar value:bar2]]

Однако, однажды пытаясь использовать index:

templates/test.txt

label: {{ .Values.label }}
foolabel: {{ index .Values.label "foo" }}

Это не будет работать- helm template .:

Error: render error in "foochart/templates/test.txt": template: foochart/templates/test.txt:2:13: executing "foochart/templates/test.txt" at <index .Values.label ...>: error calling index: cannot index slice/array with type string

1 Ответ

0 голосов
/ 13 октября 2018

метка является массивом, поэтому функция индекса будет работать только с целыми числами, это рабочий пример:

foolabel: {{ index .Values.label 0 }}

0 выбирает первый элемент массива.

Aлучший вариант - избегать использования массива и заменять его картой:

label:
  foo:
    name: foo
    value: foo1
  bar:
    name: bar
    value: bar2

И вам даже не нужна функция индекса:

foolabel: {{ .Values.label.foo }}
...