json - 如何将 JSON 字符串作为值嵌入 Kubernetes Secret
问题描述
我们编排的一部分使用 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"}
推荐阅读
- angular - Angular 路由 redirectTo 显示错误的组件
- python - 如何将此请求转换为来自 ClientSession 请求的请求?(aiohttp,异步)
- python - 将嵌套json转换为数据框时如何从用户那里获取字典的输入
- substrate - FRAME2存储中ValueQuery有什么用?
- perl - XML::Twig::XPath: `findnodes` 仍然比较我应该使用 `findnodes` 而不是 `get_xpath`
- html - 当我最小化网页时没有表现
- kubectl - 带有参数 -ti 的 kubectl exec 完成失败
- java - 我在哪里可以找到我的 android studio sdk 的完整 android.jar?
- unit-testing - 用 nock 进行 Jest 和 HTTP 模拟
- php - 设置两个相同输入的 select2 的旧值