您可以在没有bash-c的情况下将环境变量传递给kubectl exec吗? [英] Can you pass an environment variables into kubectl exec without bash -c?

查看:6
本文介绍了您可以在没有bash-c的情况下将环境变量传递给kubectl exec吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Pod中有一个名为script01的脚本,它可以接受参数。 我通过以下内容运行该脚本:

POD=<pod name>
runScript="kubectl -n nmspc exec $POD -- script01"
$runScript --command "do stuff"
我以这种方式运行它的原因是,我没有在本地计算机上创建脚本的权限,但我有权访问Pod上的脚本。

问题是,我希望将主机的IP传递给Pod,并希望使用环境变量完成此操作。我曾尝试使用bash-c传递参数,但在通过变量调用脚本时,它没有附加参数。

runScript="kubectl -n nmspc exec $POD -- bash -c "export curIP=123 && script01""

但如果我用它运行它,它确实有效 $runScript --command "do stuff"

如何将环境变量传递给Pod,同时仍然能够通过该变量调用脚本?

推荐答案

/usr/bin/envkey=value对中传递的值导出到它用于调用的任何程序的环境中。

kubectl -n nmspc exec "$POD" -- env curIP=123 script01

请注意,切勿使用$runScript或任何其他未加引号的扩展来调用外壳命令。请参见BashFAQ #50--我正在尝试将命令放入变量中,但复杂的情况总是失败!


作为如何保留bash -c但使您的命令工作的示例,请考虑:

runScript() {
  kubectl -n nmspc exec "$POD" -- bash -c 'export curIP=123 && script01 "$@"' _ "$@"
}

runScript --command "do stuff"

这里,runScript函数,而不是字符串变量,它显式地将其整个参数列表传递给kubectl。类似地,bash的副本kubectl显式地将参数列表(在$0占位符_之后)传递给script01,因此最终结果是将参数传递到最终程序。

这篇关于您可以在没有bash-c的情况下将环境变量传递给kubectl exec吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆