使用部署或服务 Yaml 文件中的 helm 辅助函数创建并传递值

Sac*_*hra 4 kubernetes kubernetes-helm

我试图使用 Helm Chart 来实现 Helm Kubernetes 部署。我想使用 helm 发布名称动态给出部署、应用程序和服务名称。

我已经实现了以下方法,它可以帮助我根据 helm 文件创建动态名称。

在_helper.tpl中编写以下方法

{{- define "sample-chart-getServiceName" -}}
{{- $arg1 := index . "arg1" -}}
{{- $fullName := include "sample-chart.fullname" . -}}
{{- printf "%s-%s" $fullName $arg1 -}}
{{- end -}} 
Run Code Online (Sandbox Code Playgroud)

以及以下调用 yaml 文件中函数的方法

name: {{ include "sample-chart-getServiceName" (dict "arg1" "service") }}
Run Code Online (Sandbox Code Playgroud)

Dav*_*aze 7

Helm 模板采用单个参数,并将其分配给特殊变量.。在您的示例中,您尝试用作.保存服务名称的参数以及传递给下游模板的顶级上下文sample-chart.fullname

要解决此问题,您可以将两个参数打包到一个列表中:

{{ include "sample-chart-getServiceName" (list . (dict "arg1" "service")) }}
Run Code Online (Sandbox Code Playgroud)
{{- define "sample-chart-getServiceName" -}}
{{- $top := index . 0 -}}
{{- $arg1 := index . 1 "arg1" -}}
{{- $fullName := include "sample-chart.fullname" $top -}}
...
Run Code Online (Sandbox Code Playgroud)

或者,如果您打算按名称传递多个值,请将顶级上下文作为这些参数之一包含在内

{{ include "sample-chart-getServiceName" (dict "top" . "arg1" "service") }}
Run Code Online (Sandbox Code Playgroud)
{{- $top := index . "top" -}}
{{- $arg1 := index . "arg1" -}}
Run Code Online (Sandbox Code Playgroud)