Helm 图表升级抛出 "error calling index: index of untyped nil"

Helm chart upgrade throws "error calling index: index of untyped nil"

我有以下秘密定义:

apiVersion: v1
kind: Secret
metadata:
    name: "{{ .Release.Name }}-psql"
type: Opaque
stringData:
  {{ if not .Release.IsUpgrade }}
  dbReplPassword: {{ (randAlphaNum 23) | quote }}
  {{ else  }}
  dbReplPassword: {{ index (lookup "v1" "Secret" .Release.Namespace "{{ .Release.Name }}-psql").data "dbReplPassword" | b64dec | quote }}
  {{ end }}

在我的 helm chart 的初始安装中,一切运行顺利。但是当我升级我的 helm chart 时,它显示了以下错误:

pgsql.yaml:11:21: executing "helm-chart/templates/pgsql.yaml" at <index (lookup "v1" "Secret" .Release.Namespace "{{ .Release.Name }}-psql").data "dbReplPassword">: error calling index: index of untyped nil

我想问题出在查找函数的“{{ .Release.Name }}-psql”部分,但我不知道如何解决这个问题。有人知道我该如何解决吗?

您不能像这样嵌套 Helm 模板。标准 Go text/template language 包含一个 printf 函数,您可以使用该函数从参数构造字符串,因此请改用此函数:

... (lookup "v1" "Secret" .Release.Namespace (printf "%s-psql" .Release.Name)) ...

将这个复杂的表达式分解成多个变量可能会更清楚:

{{- $secretName := printf "%s-psql" .Release.Name }}
{{- $secret := lookup "v1" "Secret" .Release.Namespace $secretName }}
dbReplPassword: {{ $secret.data.dbReplPassword | b64dec | quote }}