【问题标题】:Store entire application config file as kubernetes secret将整个应用程序配置文件存储为 Kubernetes 机密
【发布时间】:2020-04-23 13:41:40
【问题描述】:

我的应用程序中有一个配置 json 文件。这是一个 json 文件,其中包含我的 nodejs 应用程序所需的所有配置。我与许多 db' 有很多联系。我什至有舞台和制作之类的分歧。我不想为每个变量创建秘密。我想将完整的 JSON 转储为秘密。这样我就可以直接从那里拿起它并在我的应用程序中使用。 反正我能做到吗?我认为这是一个普遍的问题。

【问题讨论】:

    标签: kubernetes kubernetes-secrets


    【解决方案1】:

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

    【讨论】:

    • 它是否加密了这些值?还是纯文本。
    • 常规机密没有加密,而是 base64 编码。 stringData 是一种简单的合成糖,可让您免于编码数据。
    • 你不需要编码,Kubernetes会为你编码
    • 当我用作环境变量时,当我在应用程序中使用时,我是把它作为 JSON 对象还是只是字符串?
    【解决方案2】:

    您可以使用以下命令:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-26
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多