繁体   English   中英

来自configmap的环境变量在pod内不可用

[英]Env variables from configmap not available inside pod

我正在尝试从configmap将env变量传递给我的pod。 我有以下设置。

我有一个包含2个环境变量的文件test-config.txt

a_sample_env=b
c_sample_env=d

我创建一个configmap,如下所示:

kubectl创建configmap test-config --from-file test-config.txt

我的广告连播定义如下:

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
spec:
  containers:
  - name: mycontainer
    image: redis
    envFrom:
      - configMapRef:
          name: test-config

但是我的应用程序在test-config.txt文件中没有收到2个env变量。 我使用kubectl exec登录到pod,并获得了env变量的空值。

root@test-pod:/data# echo $c_sample_env

root@test-pod:/data# echo $a_sample_env

谁能指出为什么Pod中没有环境变量?

您应该按如下方式创建configmap

apiVersion: v1
kind: ConfigMap
metadata:
  name: special-config
  namespace: default
data:
  a_sample_env: b
  c_sample_env: d

如果使用以下命令创建configmap

kubectl create configmap test-config --from-file test-config.txt

那么您可以将test-config作为卷安装在容器中。 您将必须创建一个包装器/启动脚本,以在启动过程中将该文件中的所有k:v对导出为env变量

您只需使用--from-literal标志而不是--from-file来创建机密

kubectl create cm test-config --from-literal=a_sample_env=b --from-literal=c_sample_env=d

创建吊舱

apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: test-pod
  name: test-pod
spec:
  containers:
  - image: redis
    imagePullPolicy: IfNotPresent
    name: test-pod
    resources: {}
    envFrom:
    - configMapRef:
        name: test-config
  dnsPolicy: ClusterFirst
  restartPolicy: Never
status: {}

执行到Pod并检查环境

root@test-pod:/data# env | grep sample
c_sample_env=d
a_sample_env=b

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM