在部署期间将秘密值注入 configmap 而不使用环境变量

jmh*_*let 8 kubernetes kubernetes-secrets 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>
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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

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

Ome*_*oni 5

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

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

另请注意,Kubernetes 机密无法存储在源代码管理上,因为机密数据是使用 base64 编码的(请参阅此处了解更多详细信息)。这个问题有多种解决办法,可以看看我的帖子