【发布时间】:2020-04-23 13:41:40
【问题描述】:
我的应用程序中有一个配置 json 文件。这是一个 json 文件,其中包含我的 nodejs 应用程序所需的所有配置。我与许多 db' 有很多联系。我什至有舞台和制作之类的分歧。我不想为每个变量创建秘密。我想将完整的 JSON 转储为秘密。这样我就可以直接从那里拿起它并在我的应用程序中使用。 反正我能做到吗?我认为这是一个普遍的问题。
【问题讨论】:
标签: kubernetes kubernetes-secrets
我的应用程序中有一个配置 json 文件。这是一个 json 文件,其中包含我的 nodejs 应用程序所需的所有配置。我与许多 db' 有很多联系。我什至有舞台和制作之类的分歧。我不想为每个变量创建秘密。我想将完整的 JSON 转储为秘密。这样我就可以直接从那里拿起它并在我的应用程序中使用。 反正我能做到吗?我认为这是一个普遍的问题。
【问题讨论】:
标签: kubernetes kubernetes-secrets
简单的解决方案是将整个配置文件放在stringData 下的秘密中。类似的东西:
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
stringData:
config.json: |
<your config goes here>
现在您可以将密码mount 放到 pod 上,然后您就可以读取此配置文件了。
虽然这项工作,但它可能更难与 GitOps 解决方案一起使用,这通常需要您加密整个秘密内容。使用Kamus,您可以创建具有加密值的模板配置文件,格式如下:
apiVersion: v1
kind: ConfigMap
metadata:
name: encrypted-secrets-cm
data:
key: 4AD7lM6lc4dGvE3oF+5w8g==:WrcckiNNOAlMhuWHaM0kTw== //encrypted
template.ejs: |
<%- secrets["key"] %>
hello
并使用init container 创建具有解密值的配置文件。带有加密项目的值可以安全地提交给 git。
【讨论】:
stringData 是一种简单的合成糖,可让您免于编码数据。
您可以使用以下命令:
kubectl -n <namespace> create cm secret --from-file=APPLICATION_CONFIG=./<your-config>
将其挂载到特定路径,您可以从这些路径读取配置。
【讨论】: