将整个应用程序配置文件存储为kubernetes secret

时间:2020-04-23 13:41:40

标签: kubernetes kubernetes-secrets

我的应用程序中有一个配置json文件。这是单个json文件,其中包含我的nodejs应用程序所需的所有配置。我与许多数据库有很多连接。我什至有分叉的阶段和生产。我不想为每个变量创建秘密。我想将我的完整JSON作为秘密转储。这样我就可以直接从那里拿起它并在我的应用程序中使用。 无论如何我能实现吗?我认为这是一个普遍的问题。

2 个答案:

答案 0 :(得分:0)

简单的解决方案是将整个配置文件放在秘密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。

答案 1 :(得分:0)

您可以使用以下命令:

kubectl -n <namespace> create cm secret --from-file=APPLICATION_CONFIG=./<your-config>

将其安装到特定路径,您可以从这些路径读取配置。