在部署过程中注入秘密值到configmap,而不使用环境变量

8

我有一个这样的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部署期间如何将密码从秘密中注入到密码字段中。


为什么不直接从密钥中获取密码?为什么要将其传递到 ConfigMap 中,而 ConfigMap 并不是用于保存密码的? - suren
1个回答

5
你不能直接存储密码,但可以使用Kubernetes secret挂载密码,在此处查看相关文档。这样您将得到两个文件——一个来自配置映射,一个来自密码保险箱。
如果您的应用程序不支持多个配置文件,则必须将整个配置文件存储在密码保险箱中,而不是配置映射。
另请注意,无法在源代码控制上存储Kubernetes secrets,因为密钥数据使用base64编码(有关更多详细信息,请参见此处)。对于这个问题有多种解决方案,请查看我的文章

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接