首页 > 解决方案 > 从值生成发布名称

问题描述

我有一个生成部署的 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

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

标签: kubernetes-helm

解决方案


您可以使用 Helm命名模板来定义一个函数,该函数为所需值生成发布名称​​。然后,您可以在资源 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 }}

推荐阅读