我们正在运行多个需要运行相同软件的全球分布式 Kubernetes 集群。当我们发布此软件的更新(作为上传到私有 Docker 存储库的 Docker 映像)时,我们当前的部署管道需要遍历已知部署列表,连接到每个集群并在那里更新正确的部署。这是一个繁琐、脆弱、缓慢且不可扩展的过程。
我正在寻找一种方法来解决这个问题,方法是创建定期检查新 Docker 映像版本的部署,当他们检测到更改时,他们会拉取新映像并更新正确的部署。这应该由每个集群独立完成,因此没有连接到每个集群的中央进程和要维护的集群列表等。
不要求所有集群同时更新,但其想法是在没有中央管理的情况下具有最终一致性。
是否有现有的工具可以做到这一点或以不同的方式解决这个问题?
对于任何从谷歌偶然发现的人,看看https://keel.sh/。它完全符合 OP 的要求。
听起来 Weave 的 Flux 可以满足您的要求:
https://github.com/weaveworks/flux
我们已将它安装在我们客户的一个集群中,并且效果很好。它将监视您的 Docker 映像的更改并执行重新部署。有点像你在问题中描述的那样。
该项目有点新,所以设置它可能有点乏味......但最终它可以工作!