【问题标题】:ConfigMap value as input for another variable inside containerConfigMap 值作为容器内另一个变量的输入
【发布时间】:2021-05-12 06:05:14
【问题描述】:
如何将下面部分中声明的 $LOCAL_IP_DB 变量的 ConfigMap 用作另一个声明的变量的输入? $LOCAL_IP_DB 是在db-secret configmap 中定义的通用键,但是还有另一个环境变量需要它吗?如何让它发挥作用?
spec:
containers:
- env:
- name: LOCAL_IP_DB
valueFrom:
configMapKeyRef:
name: db-secret
key: LOCAL_IP_DB
- name: LOG_Files
value: \\${LOCAL_IP_DB}\redis\files\
【问题讨论】:
标签:
kubernetes
nested
environment-variables
containers
configmap
【解决方案1】:
关键是使用:$() 而不是${}
example-pod.yaml:
apiVersion: v1
kind: Pod
metadata:
name: example
spec:
containers:
- name: example
image: bash
args: [printenv]
env:
- name: LOCAL_IP_DB
valueFrom:
configMapKeyRef:
name: db-secret
key: LOCAL_IP_DB
- name: LOG_FILES
value: \$(LOCAL_IP_DB)\redis\files\
example-configmap.yaml:
apiVersion: v1
data:
LOCAL_IP_DB: 192.168.0.1
kind: ConfigMap
metadata:
name: db-secret
测试:
controlplane $ kubectl apply -f example-pod.yaml -f example-configmap.yaml
controlplane $ kubectl logs example | grep 192
LOCAL_IP_DB=192.168.0.1
LOG_FILES=\192.168.0.1\redis\files\
您可以在此处找到有关此功能的更多信息:link
注意,如果您想管理机密,建议使用Secret 方法。