Kubectl设置环境变量并运行命令

ab1*_*b15 8 kubernetes kubectl

我有一个在Kubernetes上运行的容器,我想从我的本地终端运行一个命令.基于其yaml文件的容器的工作目录就是说/opt/gopath/src/a/.但是,我想在目录下运行该命令/opt/gopath/src/b/.另外,我还需要在运行此命令之前设置某些临时环境变量.所以目前,这就是我在做的事情:

kubectl exec $pod_name -- bash -c "cd ../b/; env ENV_VARIABLE_1=ENV_VALUE_2 && env ENV_VARIABLE_2=ENV_VALUE_2 && <cmd to run>".

这似乎目前正在起作用.但是,我不相信这是实现这一目标的最佳方式.此外,运行此命令会显示容器中的所有环境变量 - 如果可能,我希望不打印.有人能指出我正确的方向吗?

aur*_*ius 7

如果是静态变量,我建议使用Config贴图.

由于您需要使用本地shell中的临时变量,因此不需要使用冗长而复杂的命令,因为exec将您的终端连接到正在运行的Container(pod).我测试了您的问题并在本地系统上创建了一个简单的环境变量.我使用了你提供的语法:

kubectl exec -it $pod_name -- sh -c 'key=123 key2=121; echo "$key $key2"'
Run Code Online (Sandbox Code Playgroud)

要传递env变量,你可以像这样设置并添加分隔符';' 变量和命令之间.


use*_*470 2

bash -c "cd ../b/; env ENV_VARIABLE_1=ENV_VALUE_2 ENV_VARIABLE_2=ENV_VALUE_2 <cmd to run>"