在kubernetes中管理不同的环境/映像版本

在kubernetes中管理不同的环境/映像版本,kubernetes,Kubernetes,我有一个简单但令人恼火的问题。我写了很多部署、服务等 对于staging env(我使用名称空间来分隔staging/prod环境),我使用带有标记:latest的图像 对于prod-env,我希望使用custom:tag。但是,我希望避免复制/粘贴.yml文件,并且不确定如何最好地构造代码来帮助实现这一目标 去过那里一次。我接下来做的是做一些简单的模板,编写我自己的模板包装,最终评估并完全切换到helm“kubernetes package manager” 我强烈建议你走捷径,直接去掌舵,这

我有一个简单但令人恼火的问题。我写了很多部署、服务等

对于staging env(我使用名称空间来分隔staging/prod环境),我使用带有标记:latest的图像


对于prod-env,我希望使用custom:tag。但是,我希望避免复制/粘贴.yml文件,并且不确定如何最好地构造代码来帮助实现这一目标

去过那里一次。我接下来做的是做一些简单的模板,编写我自己的模板包装,最终评估并完全切换到
helm
“kubernetes package manager”


我强烈建议你走捷径,直接去掌舵,这真的能帮上大忙,而写一个基本的图表来说明你所拥有的是非常简单和快速的解决方案。这样你就可以用ie之类的东西来安装你的图表(ergo清单)
helm install mychart--set defaulttag=latest
helm install mychart--set defaulttag=dev
并在其周围不复制任何清单

我们使用一个带有Jinja2组件的部署脚本,因此我们可以在部署清单中使用Jinja2变量和条件。缺点是,清单必须经过部署管道才能成为“有效”的Kubernetes清单,因此目前不可能对minikube等进行本地部署。

最好采用Maven及其依赖项管理。这听起来可能有点离谱,但Maven并非“仅仅用于构建Java应用程序”。事实上,我认为它远远领先于Helm,但可能会错过一些特定功能。一旦我确定答案,我会发布一个答案。