在不使用环境变量的情况下,在部署过程中将秘密值注入configmap

时间:2019-04-03 09:10:22

标签: kubernetes configmap kubernetes-secrets

我有一个这样的配置图

apiVersion: v1
kind: ConfigMap
metadata:
  namespace: develop
  name: test-config
data:
  app.conf: |
    connection conn1
    address 127.0.0.1:8080
    user cluster1
    password: <HERE COPY PASS FROM SECRET>

app.conf节使用容器中的配置文件挂载

spec:
  replicas: 1
  ...
    spec:
      containers:
        - name: container-name
          ...
          volumeMounts:
            - name: test-config-vol
              mountPath: /etc/app/app.conf
              subPath: app.conf
      volumes:
        - name: test-config-vol
          configMap:
            name: test-config

读取该文件的应用程序无法读取环境变量,并且我无法更改该行为,它是第三方应用程序。

我想知道在pod部署期间如何从秘密中将密码注入密码字段

1 个答案:

答案 0 :(得分:1)

您不能,您只能用密码安装Kuberentes secret-请参阅文档here。因此,您最终将拥有2个文件-一个来自配置映射文件,另一个来自秘密文件。

如果您的应用不支持多个配置文件,则必须将整个配置文件存储在密钥上,而不是存储在配置映射上。

此外,请注意,Kubernetes机密无法存储在源代码控制中,因为机密数据是使用base64编码的(有关更多详细信息,请参见here)。这个问题有多种解决方案,请查看我的post