Как получить первое имя из списка

#kubernetes #kubernetes-helm

#kubernetes #kubernetes-рулевой

Вопрос:

У меня есть файл значений, например:

 secrets:
  file.tst |
    {
      content ....
    }
 

И я хотел бы получить имя file.tst в шаблоне yaml. Я уже пробовал с:

 {{ .Values.secrets.secrets |trimSuffix "-" }}
 

Но это не работает.

Комментарии:

1. Это .Values.secrets | keys | first то, что вам нужно? Или вам нужно как-то заглянуть внутрь содержимого?

2. Привет, Дэвид. Спасибо, это работает для меня!

3. Еще один вопрос, если у меня будет больше файлов, подобных этому file.tst — могу ли я получить их из диапазона? И как я могу создать оператор «if», чтобы проверить количество файлов в списке? С уважением!, Майкл

Ответ №1:

При таком values.yaml макете .Values.secrets сам является словарем со строковыми ключами и строковыми значениями. Helm включает в себя множество функций, которые могут работать с деталями из них. В частности, вы можете вызвать keys , чтобы получить ключи словаря в виде списка и first получить первый элемент из списка.

 firstFilename: "{{ .Values.secrets | keys | first }}"
 

Вы также можете использовать встроенную range функцию для перебора либо самой карты, либо списка ключей.

 hashes:
{{- $filename, $contents := range .Values.secrets }}
  {{ $filename }}: "{{ sha256sum $contents }}"
{{- end }}