Helm - разделенный запятыми список динамических c строк - PullRequest
1 голос
/ 23 марта 2020

Возможно ли в диаграмме создать одну строку, представляющую собой представление через запятую (аналогично использованию команды ",".join() в Python) строк с общим префиксом и суффикс переменной?

Например, у меня есть приложение CLI, которое требует такой же аргумент через параметр extraArgs в определении :

extraArgs: >-
  -M {{ $.Values.global.hostname }}/100

Теперь мне нужно изменить это значение, чтобы оно превышало диапазон (т.е. от {{$.Values.global.minval}} до {{$.Values.global.maxval}} включительно). Итак, для minval=100 и maxval=105 мой график должен теперь стать (обратите внимание на отсутствие запятой и отсутствие пробелов, кроме пробела после -M):

extraArgs: >-
  -M {{ $.Values.global.hostname }}/100,{{ $.Values.global.hostname }}/101,{{ $.Values.global.hostname }}/102,{{ $.Values.global.hostname }}/103,{{ $.Values.global.hostname }}/104,{{ $.Values.global.hostname }}/105

Is есть ли способ, как я могу выполнить это в диапазоне / l oop в моем графике? У меня есть несколько экземпляров этой диаграммы, которые будут использовать разные минимальные / максимальные значения, и я хотел бы максимально автоматизировать эту утомительную задачу (кроме того, у меня нет доступа к источнику приложения, поэтому я не могу изменить интерфейс CLI для приложения).

В Python я мог бы выполнить sh примерно так:

minval = 100
minval = 105
s = "-M "
L = []
for i in range(minval, maxval+1):
    L.append("{{{{ $.Values.global.hostname }}}}/{}".format(i))
s = s + ",".join(L)
# print(s)

Я не уверен, где чтобы начать делать это в шаблоне Helm, начиная с функции range().

1 Ответ

2 голосов
/ 24 марта 2020

Helm включает sprig библиотеку шаблонных функций, которая содержит untilStep и join.

В sprig отсутствует концепция оператора map или each, поэтому вы можете создать список в range l oop для последующего соединения ( отсюда )

{{- $minval :=  int .Values.minval -}}
{{- $maxval :=  int .Values.maxval | add1 | int -}}
{{- $args := list -}}
{{- range untilStep $minval $maxval 1 -}}
{{-   $args = printf "%s/%d" $hostname . | append $args -}}
{{- end }}
extraArgs: '-M {{ $args | join "," }}'
...