[英]Helm - comma-separated list of dynamic strings
是否有可能在舵圖中創建單個字符串,該字符串是具有公共前綴和變量后綴的字符串的逗號分隔表示(類似於在 Python 中使用",".join()
命令)?
例如,我有一個 CLI 應用程序,它需要通過kubernetes pod 定義中的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
有什么方法可以在圖表的范圍/循環中執行此操作嗎? 我有這個圖表的幾個實例將使用不同的最小值/最大值,我想盡可能多地自動化這個乏味的任務(此外,我無權訪問應用程序的源代碼,所以我無法更改應用程序的 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 包含模板函數的untilStep
庫,其中包含untilStep
和join
。
sprig 中還沒有map
或each
運算符的概念,因此您可以在range
循環中構造列表以供稍后加入(從這里)
{{- $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 "," }}'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.