Helm - 逗号分隔的动态字符串列表

Helm - comma-separated list of dynamic strings

是否有可能在 图表中创建一个字符串,该字符串以逗号分隔表示(类似于在 Python 中使用 ",".join() 命令)公共前缀和变量后缀?

例如,我有一个 CLI 应用程序需要通过 pod 定义中的 extraArgs 参数这样的参数:

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

我现在必须将此值修改为超过一个范围(即从 {{$.Values.global.minval}}{{$.Values.global.maxval}},包括在内)。因此,对于 minval=100maxval=105,我的图表现在需要变成(注意缺少尾随逗号,并且除了 space 之后没有 spaces 19=]):

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

有什么方法可以在图表的 range/loop 中执行此操作?我有这个图表的几个实例,它们将使用不同的 min/max 值,我想尽可能地自动完成这项繁琐的任务(此外,我 没有 访问应用程序的源代码,因此我无法更改应用程序的 CLI 界面。

在 Python 中,我大致可以通过以下方式完成此操作:

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)

除了从 range() 函数开始之外,我不确定从哪里开始在 Helm 模板中执行此操作。

Helm 包括 sprig library of template functions which contains untilStep and join

没有a的概念map or each operator in sprig yet so you can construct the list in a range loop to be joined later ()

{{- $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 "," }}'