使用其他变量连接 Helm 字符串

Jus*_*tin 3 go-templates kubernetes-helm

在 Helm (使用 v3)中,如何使用其他变量在模板内构建变量?假设我有以下内容:

{{- $def := index .Values "default" -}}
apiVersion: v1
data:
  POSTGRES_HOST: {{ $def.POSTGRES_HOST | b64enc | quote }}
  POSTGRES_USER: {{ $def.POSTGRES_USER | b64enc | quote }}
  POSTGRES_PASSWORD: {{ $def.POSTGRES_PASSWORD | b64enc | quote }}
  POSTGRES_DB: {{ $def.POSTGRES_DB | b64enc | quote }}
kind: Secret
metadata:
  name: server
type: Opaque
Run Code Online (Sandbox Code Playgroud)

然后我想做类似以下(伪代码)的事情,使用+字符串连接:

DATABASE_URL: {{ "postgres://" + $def.POSTGRES_USER + ":" + $def.POSTGRES_PASSWORD + "@" + $def.POSTGRES_HOST + "/" + $def.POSTGRES_DB | b64enc | quote }}
Run Code Online (Sandbox Code Playgroud)

Kam*_*san 7

您可以使用 helm 字符串函数printf来实现此目的。

DATABASE_URL: {{ printf "postgres://%s:%s@%s/%s" $def.POSTGRES_USER $def.POSTGRES_PASSWORD $def.POSTGRES_HOST $def.POSTGRES_DB | b64enc | quote }}
Run Code Online (Sandbox Code Playgroud)

打印函数

返回基于格式化字符串的字符串以及按顺序传递给它的参数。

printf "%s has %d dogs." .Name .NumberDogs
Run Code Online (Sandbox Code Playgroud)