Kubernetes中ConfigMap的镜像配置

4
我有一个后端服务部署在Kubernetes上。每次我想要部署,我都会构建我的Docker镜像,将其推送到Google Docker Registry,并使用标签(例如1.1.0)更新我的deployment yaml文件。
但是,更新此文件并创建另一个提交非常麻烦。特别是因为我有生产和staging环境(实际上有2个命名空间)。最近我发现了Kubernetes中的ConfigMaps。
因此,我想知道是否有可能在ConfigMap中存储带有镜像标签的值并使用它?到目前为止,我还没有找到有效的方法。
有什么好的替代方案,使我不必在git中存储有关当前发布信息的信息?这里的最佳实践是什么?我猜使用latest标签并不是最好的。
每当我推送到主分支或开发分支时,我希望让我的CI执行部署(我使用GitLab CI),因此任何可以在命令行上轻松执行而不需要太多sed的方法都将不胜感激。
1个回答

4

一种简单的解决方案是使用 kubectl set image 触发您的部署进行滚动更新:

kubectl set image deployment/foobar <container_name>=<new_image:new_tag>

你可以使用git提交ID作为图像标签。


非常感谢。这正是我所寻找的。 - Bantak
1
这种方法的问题在于最终会在代码库中存储一个过时的部署 YAML 文件。我建议编写一个脚本,用新的 image:tag 更新 YAML 文件,然后调用 kubectl apply 命令。所有主要编程语言都有 YAML 库,因此编写这样的脚本将非常容易。 - Mikhail Burshteyn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接