连接来自 configMap 和 secret 的值
Concating values from configMap and secret
我有一个 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文件也将保持这样。
我不相信你要求的是可能的。
此外,不要使用配置映射来存储这样的信息。最佳做法是使用机密,然后将它们作为文件或 ENV 变量安装到容器中。
我会放弃你的想法,重新评估你想要完成的事情。
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;
我有一个 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文件也将保持这样。
我不相信你要求的是可能的。
此外,不要使用配置映射来存储这样的信息。最佳做法是使用机密,然后将它们作为文件或 ENV 变量安装到容器中。
我会放弃你的想法,重新评估你想要完成的事情。
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;