如何将JSON字符串作为值嵌入Kubernetes秘密中
部分业务流程使用envsubt使用所需的值更新YAML模板文件如何将JSON字符串作为值嵌入Kubernetes秘密中,json,kubernetes,kubernetes-secrets,Json,Kubernetes,Kubernetes Secrets,部分业务流程使用envsubt使用所需的值更新YAML模板文件 envsubst < "${SECRET_TEMPLATE}" | kubectl apply -f - 这将导致YAML如下所示(为简洁起见进行了修剪): 这显然在Kube的一些早期版本中有效,我想说是1.8。无论如何,我们正在运行1.15,现在kubectl将其解释为一种映射类型,并抱怨: error: error validating "STDIN": error validating data: Validation
envsubst < "${SECRET_TEMPLATE}" | kubectl apply -f -
这将导致YAML如下所示(为简洁起见进行了修剪):
这显然在Kube的一些早期版本中有效,我想说是1.8。无论如何,我们正在运行1.15,现在kubectl将其解释为一种映射类型,并抱怨:
error: error validating "STDIN": error validating data: ValidationError(Secret.data.config): invalid type for io.k8s.api.core.v1.Secret.data: got "map", expected "string"; if you choose to ignore these errors, turn validation off with --validate=false
现在这样做有什么诀窍吗。我玩过引用和各种地方,转义引用,以及所有的爵士乐和纳达音乐
*更新1*
使用stringData仍会导致相同的错误:
apiVersion: v1
kind: Secret
metadata:
name: monsoon-storage-reporting-config
type: Opaque
stringData:
config: {"database": "foo"}
我必须对值进行base64编码
$ echo {"database": "foo"} | base64
e2RhdGFiYXNlOiBmb299Cg==
然后在数据:
字段中使用base64编码值
apiVersion: v1
kind: Secret
metadata:
name: reporting-config
type: Opaque
data:
config: e2RhdGFiYXNlOiBmb299Cg==
请注意:
在Darwin/macOS上使用base64实用程序时,用户应避免使用-b选项拆分长行。相反,Linux用户应该在base64命令中添加选项-w0,如果-w选项不可用,则应添加管道base64 | tr-d'\n'
您可以按如下方式使用stringData。请注意stringData后面的管道:
apiVersion: v1
kind: Secret
metadata:
name: monsoon-storage-reporting-config
type: Opaque
stringData: |
config: {"database": "foo"}
请让我知道用户
Jonas
提供的答案是否对您有所帮助。我无法在文档中提供有关此方法的任何信息。你能提供一些消息来源吗?
$ echo {"database": "foo"} | base64
e2RhdGFiYXNlOiBmb299Cg==
apiVersion: v1
kind: Secret
metadata:
name: reporting-config
type: Opaque
data:
config: e2RhdGFiYXNlOiBmb299Cg==
apiVersion: v1
kind: Secret
metadata:
name: monsoon-storage-reporting-config
type: Opaque
stringData: |
config: {"database": "foo"}