首页 > 解决方案 > 在部署期间将秘密值注入 configmap,而不使用环境变量

问题描述

我有一个像这样的配置图

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 部署期间将密码中的密码注入密码字段

标签: kubernetesconfigmapkubernetes-secrets

解决方案


你不能,你可以做的是使用密码安装一个Kuberentes 机密- 请参阅此处的文档。因此,您最终将拥有 2 个文件 - 一个来自配置映射,一个来自秘密。

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

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


推荐阅读