json - 如何将 JSON 字符串作为值嵌入 Kubernetes Secret

标签 json kubernetes kubernetes-secrets

我们编排的一部分使用 envsubst 用我们想要的值更新 YAML 模板文件。

envsubst < "${SECRET_TEMPLATE}" | kubectl apply -f -

我们的关键字配置的值是一个 JSON 字符串:
data=$(jq -c . ${JSON_FILE})

这导致 YAML 看起来像这样(为简洁起见):
apiVersion: v1
kind: Secret
metadata:
  name: reporting-config
type: Opaque
data:
  config: {"database": "foo"}

这显然适用于一些早期版本的 Kube,我想说 1.8。无论如何,我们正在运行 1.15,现在 kubectl 将其解释为 map 类型并提示:
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"}
error: error validating "STDIN": error validating data: ValidationError(Secret.stringData.config): invalid type for io.k8s.api.core.v1.Secret.stringData: got "map", expected "string"; if you choose to ignore these errors, turn validation off with --validate=false

最佳答案

您可以使用 stringData 如下。注意 stringData 之后的管道:

apiVersion: v1
kind: Secret
metadata:
  name: monsoon-storage-reporting-config
type: Opaque
stringData: |
  config: {"database": "foo"}

关于json - 如何将 JSON 字符串作为值嵌入 Kubernetes Secret,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59882986/

相关文章:

Javascript,通过服务器将字符串提交到 JSON 文件,换行符不起作用

node.js - 无法通过Kubernetes上的Node.Js连接到Elasticsearch(证书链中的自签名证书)

nginx - 如何在 nginx 入口 Controller 的入口规则中设置保持事件状态

kubernetes - `secret`如何保护Kubernetes中的敏感信息

javascript - 在 Google Charts Javascript 中循环

javascript - 来自来源 'null' 已被 CORS 策略 : Cross origin requests 阻止

docker - 通过 Helm 缓慢安装/升级(针对 Kubernetes)

kubernetes - 尝试在 kubernetes 中创建 secret 时遇到一些问题

docker - 从 yaml 文件创建 kubernetes docker-registry 密码?

php - Highcharts 基本线