Kubernetes - 使用 Configmap 设置一组环境变量
Kubernetes - Use Configmap to set group of environment variables
我目前正在做一个项目,我需要设置更多(大约 20 个)环境变量。
现在这些变量应该与 pod 内的多个容器共享。我正在使用 Configmap 来定义值。现在我的问题是这个。我必须单独设置每个环境变量,还必须为每个容器都这样做,这非常丑陋并且有很多不必要的代码。基本上它看起来像这样
kind: Pod
apiVersion: v1
...
containers:
- name: container1
image: my-image:latest
env:
- name: VAR1
valueFrom:
configMapKeyRef:
name: my-config
key: my-var1
...
- name: container2
image: some-other-image:stable
env:
- name: VAR1
valueFrom:
configMapKeyRef:
name: my-config
key: my-var1
...
我想要的是自动将我的 configMap 中的所有值和环境变量添加到容器中。我的第一种方法是将 configMap 挂载为卷,然后在启动时 运行 一个 shell 脚本。类似于此
configMap
kind: ConfigMap
apiVersion: v1
...
data:
envCat.sh: |
#!/bin/sh
export $(grep -v '^#' /etc/pod-config/envVars | xargs)
cat
envVars
MY_VAR1="HELLO WORLD!!"
MY_VAR2="I AM HERE"
连播
kind: Pod
apiVersion: v1
...
spec:
volumes:
- name: config-volume:
configMap:
name: my-config
containers:
- name: container1
image: my-image:latest
volumeMounts:
- name: config-volume
mountPath: /etc/pod-config
command:
- /etc/pod-config/envCat.sh
不幸的是,当我 运行 在容器中手动导出命令但 运行 宁 shell 脚本或 运行 宁 /bin/sh 时,出口命令工作得很好/etc/pod-config/envCat.sh 不工作。
有什么建议可以实现我想做的事情吗?
您应该使用 envFrom 加载所有 key:value 对作为容器内的环境变量
我目前正在做一个项目,我需要设置更多(大约 20 个)环境变量。
现在这些变量应该与 pod 内的多个容器共享。我正在使用 Configmap 来定义值。现在我的问题是这个。我必须单独设置每个环境变量,还必须为每个容器都这样做,这非常丑陋并且有很多不必要的代码。基本上它看起来像这样
kind: Pod
apiVersion: v1
...
containers:
- name: container1
image: my-image:latest
env:
- name: VAR1
valueFrom:
configMapKeyRef:
name: my-config
key: my-var1
...
- name: container2
image: some-other-image:stable
env:
- name: VAR1
valueFrom:
configMapKeyRef:
name: my-config
key: my-var1
...
我想要的是自动将我的 configMap 中的所有值和环境变量添加到容器中。我的第一种方法是将 configMap 挂载为卷,然后在启动时 运行 一个 shell 脚本。类似于此
configMap
kind: ConfigMap
apiVersion: v1
...
data:
envCat.sh: |
#!/bin/sh
export $(grep -v '^#' /etc/pod-config/envVars | xargs)
cat
envVars
MY_VAR1="HELLO WORLD!!"
MY_VAR2="I AM HERE"
连播
kind: Pod
apiVersion: v1
...
spec:
volumes:
- name: config-volume:
configMap:
name: my-config
containers:
- name: container1
image: my-image:latest
volumeMounts:
- name: config-volume
mountPath: /etc/pod-config
command:
- /etc/pod-config/envCat.sh
不幸的是,当我 运行 在容器中手动导出命令但 运行 宁 shell 脚本或 运行 宁 /bin/sh 时,出口命令工作得很好/etc/pod-config/envCat.sh 不工作。
有什么建议可以实现我想做的事情吗?
您应该使用 envFrom 加载所有 key:value 对作为容器内的环境变量