从值生成发布名称​​

时间:2021-07-07 11:47:34

标签: kubernetes-helm

我有一个生成部署的 helm 模板 我需要为图表作为参数获取的 3 个值的每个组合单独部署

helm upgrade -i release_name folder --set a=x --set b=y --set c=z

所以我需要发布名称作为基于 a,b,c {.Values.a},{.Values.b}{.Values.c}

的模板

有没有办法做这样的事情? 到目前为止,我发现的最好方法是生成发布名称​​并传递参数的外部 python 脚本。

我知道我可以反过来拆分

$parts := split "." .Release.Name
$parts._0

并将其用作参数,但我真的很想避免它。

1 个答案:

答案 0 :(得分:1)

您可以使用 Helm Named Template 定义一个函数,该函数为所需值生成版本名称。然后,您可以在资源 YAML 中使用该模板函数。

例如,让我们在 _helpers.tpl 文件中定义一个函数。

{{- define "release.name" -}}
{{- list .Values.a .Values.b .Values.c | join "-" }}
{{- end }}

现在,使用此模板函数作为资源 YAML 文件中的发布名称。例如,

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: {{ include "release.name" . }}
  labels:
    app: {{ .Release.Name }}
    chart: ni-filecleaner
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}