Kubernetes:将 JSON 值放入 YAML 文件
Kubernetes: Putting JSON value in YAML file
我正在尝试从 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': ''
}
您可以通过将 {{ .Values.dbCred | b64enc }}
更改为 {{ toJson .Values.dbCred | b64enc }}
来解决此问题
或者,您可以将 credentials.json 文件保存在图表目录中,并且 access file inside your template
data:
credentials.json: {{ .Files.Get "credentials.json" | b64enc }}
在dbCred
前后使用双引号("")如下
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': ''
}"
其他看起来还可以。
您可以按照以下方式进行配置:
apiVersion: v1
kind: Secret
metadata:
name: cloudsql-instance-credentials
namespace: wp-{{ .Values.name }}
labels:
app: wp-{{ .Values.name }}
type: Opaque
data:
credentials.json: |-
{{ include (print $.Template.BasePath "/_helper_conf.tpl") . | b64enc }}
请注意,当您尝试将配置注入秘密(特别是大秘密)时,您可能需要使用 |-
你也可以使用像
这样的助手
{{ include (print $.Template.BasePath "/_helper_conf.tpl") . | b64enc }}
或者更好,在您的 yaml 配置中 (values.yml)
你可以这样写:
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: ''
要使用这种配置,您可以检查以下对象:
apiVersion: v1
kind: Secret
metadata:
name: cloudsql-instance-credentials
namespace: wp-{{ .Values.name }}
labels:
app: wp-{{ .Values.name }}
type: Opaque
data:
credentials.json: |-
{{ toJson .Values.dbCred | b64enc }}
这个配置的用途是提供对json提供的一个抽象,放在你的values.yml
里面
{{ toJson .Values.dbCred | b64enc }}
请注意,如果您支持多个环境,这可能会重复,因此您可能更愿意在内部(或 tpl)使用帮助程序和一些变量来避免重复代码
希望对您有所帮助
我正在尝试从 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': ''
}
您可以通过将 {{ .Values.dbCred | b64enc }}
更改为 {{ toJson .Values.dbCred | b64enc }}
或者,您可以将 credentials.json 文件保存在图表目录中,并且 access file inside your template
data:
credentials.json: {{ .Files.Get "credentials.json" | b64enc }}
在dbCred
前后使用双引号("")如下
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': ''
}"
其他看起来还可以。
您可以按照以下方式进行配置:
apiVersion: v1
kind: Secret
metadata:
name: cloudsql-instance-credentials
namespace: wp-{{ .Values.name }}
labels:
app: wp-{{ .Values.name }}
type: Opaque
data:
credentials.json: |-
{{ include (print $.Template.BasePath "/_helper_conf.tpl") . | b64enc }}
请注意,当您尝试将配置注入秘密(特别是大秘密)时,您可能需要使用 |-
你也可以使用像
这样的助手{{ include (print $.Template.BasePath "/_helper_conf.tpl") . | b64enc }}
或者更好,在您的 yaml 配置中 (values.yml) 你可以这样写:
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: ''
要使用这种配置,您可以检查以下对象:
apiVersion: v1
kind: Secret
metadata:
name: cloudsql-instance-credentials
namespace: wp-{{ .Values.name }}
labels:
app: wp-{{ .Values.name }}
type: Opaque
data:
credentials.json: |-
{{ toJson .Values.dbCred | b64enc }}
这个配置的用途是提供对json提供的一个抽象,放在你的values.yml
里面{{ toJson .Values.dbCred | b64enc }}
请注意,如果您支持多个环境,这可能会重复,因此您可能更愿意在内部(或 tpl)使用帮助程序和一些变量来避免重复代码
希望对您有所帮助