【问题标题】:Concating values from configMap and secret连接来自 configMap 和 secret 的值
【发布时间】:2021-12-26 22:08:48
【问题描述】:

我有一个 configMap 文件:

apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    owner: testdb
  name: testdb-configmap 
data:
  host: postgres
  port: "5432" 

还有一个秘密文件:

aapiVersion: v1
kind: Secret
type: Opaque
metadata:
  labels:
    owner: testdb
  name: testdb-secret
  namespace: test
data:
  user: dGVzdA==
  pwd: dGVzdA==

我想构建一个环境变量CONNECTION_STRING,如下所示:

env:
 - name: CONNECTION_STRING
   value: "Host=<host-from-configmap>;Username=<user-from-secret>;Password=<password-from-secret>;Port=<port-from-configmap>;Pooling=False;"

我想知道这是否可行,如果可以,那怎么办?我也研究过使用.tpl(命名模板),但想不出办法。


注意

由于我无法访问需要CONNECTION_STRING 的图像,因此我必须以这种方式构建它。这些 configmap 和 secret 文件也将保持这种状态。


【问题讨论】:

    标签: kubernetes-helm configmap kubernetes-secrets helm-templates


    【解决方案1】:

    我不相信你要求做的事情是可能的。

    此外,请勿使用配置映射来存储此类信息。最佳做法是使用机密,然后将它们作为文件或 ENV 变量挂载到您的容器中。

    我会放弃你的想法并重新评估你想要完成的事情。

    【讨论】:

    • 如您所见,我没有将 configmap 用于任何敏感内容,我有一个秘密文件。我可以将单个值挂载到 ENV 变量,但需要将它们连接成一个值。
    • 你是对的。我误读了 configmap 和 secrets。
    【解决方案2】:

    Kubernetes 可以set environment variables based on other environment variables。这是 Kubernetes Pod 的核心功能,不依赖于 Helm 的任何东西。

    您的值使用四个组件,两个来自 ConfigMap,两个来自 Secret。您需要将它们中的每一个声明为单独的环境变量,然后声明一个将它们连接在一起的主环境变量。

    env:
      - name: TESTDB_HOST
        valueFrom:
          configMapRef:
            name: testdb-configmap # {{ include "chart.name" . }}
            key: host
      - name: TESTDB_PORT
        valueFrom:
          configMapRef:
            name: testdb-configmap
            key: port
      - name: TESTDB_USER
        valueFrom:
          secretKeyRef:
            name: testdb-secret
            key: user
      - name: TESTDB_PASSWORD
        valueFrom:
          secretKeyRef:
            name: testdb-secret
            key: password
      - name: CONNECTION_STRING
        value: Host=$(TESTDB_HOST);Username=$(TESTDB_USER);Password=$(TESTDB_PASSWORD);PORT=$(TESTDB_PORT);Pooling=False;
    

    【讨论】:

    • 谢谢。它奏效了。
    猜你喜欢
    • 2022-07-19
    • 1970-01-01
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多