我正在尝试从JSON值创建一个秘密,但是当我执行 helm install
时,我一直在执行 "secrets.yaml" at <b64enc>: wrong type for value; expected string; got map[string]interface {}
这个错误 .
secrets.yaml
apiVersion: v1
kind: Secret
metadata:
name: cloudsql-instance-credentials
namespace: wp-{{ .Values.name }}
labels:
app: wp-{{ .Values.name }}
type: Opaque
data:
credentials.json: {{ .Values.dbCred | b64enc }}
values.yaml
dbCred: {
'type': '',
'project_id': '',
'private_key_id': '',
'private_key': '-----BEGIN PRIVATE KEY-----\n\n-----END PRIVATE KEY-----\n',
'client_email': '',
'client_id': '',
'auth_uri': '',
'token_uri': '',
'auth_provider_x509_cert_url': '',
'client_x509_cert_url': ''
}
4 回答
您可以按照以下配置执行以下操作:
请注意,当您尝试将配置注入秘密(特别是大型)时,您可能需要使用 |-
你也可以使用帮助器
或者甚至更好,在你的yaml配置(values.yml)中你可以写如下:
要使用这种配置,您可以检查以下对象:
使用此配置是为了提供所提供的json的抽象,并将其放在values.yml中
请注意,如果您支持多个环境,这可能会重复,因此您可能更喜欢使用帮助程序和内部(或tpl)中的一些变量来避免重复的代码
我希望这有帮助
在
dbCred
之前和之后使用双引号(“”),如下所示其他的东西看起来还不错 .
或者,您可以将 credentials.json 文件保留在图表目录中,并且access file inside your template
您可以通过将
{{ .Values.dbCred | b64enc }}
更改为{{ toJson .Values.dbCred | b64enc }}
来解决此问题