0

我是 kubernetes 的新手,我必须为现有的 configmaps 实现 kubernetes 机密,并使用硬编码的密码。

我有每个 pod 的 2 个配置映射,1 个 settings.yaml 和其他 settings_override.yaml。我必须在我保存 base64 机密的地方设置覆盖文件读取环境变量。我已经创建了秘密,并且可以在 printenv 之后在 pod 中看到它们。

请建议我如何让我的 settings_override.yaml 文件读取这些环境机密。

注意:如果我只是从 settings_override.yaml 文件中删除 key:value 对,那么它是从 settings.yaml 中选择值,而不是从我的 env 变量中选择值。

设置和setting_override文件供参考:

apiVersion: v1 data: setting.json: | { "test": { "testpswd": "test123", "testPort": "123", }, }

apiVersion: v1 data: setting_override.json: | { "test": { "testpswd": "test456", "testPort": "456", }, }

4

1 回答 1

2

据我所知,您想要完成的工作在 Kubernetes 中是不可能的。

一般提醒:Secrets用于机密数据和ConfigMaps非机密数据。

您不能将 a 导入Secret到 a中ConfigMap,反之亦然。

Secret但是,您可以像这样从( secretKeyRef) 或ConfigMap( )填充环境变量configMapKeyRef

    env:
    - name: FOO
      valueFrom:
        configMapKeyRef:
          name: nonconfidentialdatahere
          key: nonconfidentialdatahere
    - name: BAR
      valueFrom:
        secretKeyRef:
          name: confidentialdatahere
          key: confidentialdatahere

因此,我建议您将您的端口ConfigMap和密码从您Secret的 pod/deployment 声明中读取到环境变量中,然后通过传递这些环境变量来启动您想要的任何服务。

于 2019-11-14T08:56:21.967 回答