Kubernetes pod 从命令导出环境变量

问题描述 投票:0回答:1

我正在尝试通过命令将环境导出到 Openshift pod。目前我可以利用命令参数来运行 shell 脚本(例如 echo hi):

containers:
  command: 
    ['sh', '-c', 'echo hi && /opt/app-root/src/communities/entry.sh; node /opt/app-root/src/communities/main.js; echo $?']

这很适合用日志启动我的 pod:

hi
Starting application on 0.0.0.0:8080

但是,当我去导出环境变量时,它们不会持续存在,在这个例子中,我试图导出 MYVAR 以便在 pod 中使用:

containers:
  command: 
    ['sh', '-c', 'export MYVAR=THIS && /opt/app-root/src/communities/entry.sh; node /opt/app-root/src/communities/main.js; echo $?']

这将启动 pod,但未定义 MYVAR!

我的最终目标是能够在 pod 启动时从 Vault 运行脚本:

containers:
  command: 
    ['sh', '-c', 'source /vault/secrets/EXSECRET && /opt/app-root/src/communities/entry.sh; node /opt/app-root/src/communities/main.js; echo $?']

有没有办法在 pod 启动后使用 shell 命令设置环境变量?

我已经坚持了很长一段时间,感谢您的帮助。

谢谢

docker kubernetes openshift vault
1个回答
0
投票

当你设置一个环境变量时,你设置了一个

local
环境,
NOT GLOBAL
。当你注销时,你的
env
就不见了。

在 Kubernetes 中设置全局 env 的最佳方法是在

configMap
(
secret
) 中设置 env,并将
configMap
(
secret
) 挂载到
deployment
(或
statefulset
) 中。

另一种方法是直接在您的

Env
定义中设置
deployment
。更多内容在这里.

© www.soinside.com 2019 - 2024. All rights reserved.