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 }}
我有以下秘密定义:
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 }}