在运行时将环境变量传递给kubernetes

时间:2017-11-15 07:19:14

标签: docker kubernetes containers

在使用vanilla docker,compose或swarm时,我能够将“-add-env FOO = bar”作为Docker cli参数传递,以便在运行时为容器定义env var值。但是,在kubernetes中,我只是看到如何在容器规范部分硬化.yml文件中的值。

有人能指出我如何在运行时传递它吗? (即,使用“kubectl apply ...”时传递env var)

谢谢!非常感谢任何帮助!

致以最诚挚的问候,

2 个答案:

答案 0 :(得分:2)

使用您选择的模板语言非常容易。例如,使用erb,您可以erb deployment.erb.yaml | kubectl apply -f -

对于大多数简单的用例,您只需使用envsubst:cat deployment.yaml | envsubst | kubectl apply -f -

答案 1 :(得分:1)

我认为通过“运行时”你实际上是指调用kubectl create / apply时。不,这是不可能的。

您想要做的事情可能是通过一些模板引擎运行您的清单。您最简单的方法是将模板通过sed(例如cat manifest | sed 's/PLACEHOLDER/VALUE/')传递到kubectl apply中,这样您就可以在清单中正确定义ENV,并在将其推送到kubectl之前替换占位符字符串。一个更高级的解决方案,我通常建议的是熟悉掌舵图,例如你可以运行helm upgrade my-release --reuse-vars --set my.var=value

相关问题