我正在尝试通过命令将环境导出到 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 命令设置环境变量?
我已经坚持了很长一段时间,感谢您的帮助。
谢谢
当你设置一个环境变量时,你设置了一个
local
环境,NOT GLOBAL
。当你注销时,你的env
就不见了。
在 Kubernetes 中设置全局 env 的最佳方法是在
configMap
(secret
) 中设置 env,并将 configMap
(secret
) 挂载到 deployment
(或 statefulset
) 中。
另一种方法是直接在您的
Env
定义中设置deployment
。更多内容在这里.