如何使现有的configmap使用Kubernetes秘密

时间:2019-11-13 09:54:03

标签: kubernetes openshift podspec configmap kubernetes-secrets

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

我为每个Pod提供2个配置映射,其中1个settings.yaml和其他settings_override.yaml。我必须让覆盖文件读取保留了base64机密的环境变量。 我创建了秘密,可以在printenv之后在豆荚中看到它们。

请建议我如何让我的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", }, }

1 个答案:

答案 0 :(得分:1)

据我所知,在Kubernetes中无法实现您想要实现的目标。

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

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

不过,您可以像这样从SecretsecretKeyRef)或ConfigMapconfigMapKeyRef)填充环境变量:

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

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