我在 AWS 上运行 CoreOS 集群。在 AWS 中的每个实例上,我运行一个 docker 容器。例如,我有 2 个名为 API 的实例,它们使用我们最新的软件版本运行 docker 映像。
我还有 6 个处理器实例,它们运行另一个最新版本的 docker 映像。
我想更新集群中的每个容器,所以今天我使用带有管道的GoCD来激活一个可以完成所有工作的 ansible-playbook。管道监听 github 项目,一旦我将更改推送到该分支,它就会激活管道。
它构建 API 和处理器新的 docker 镜像,将新更新的镜像上传到 dockerhub,然后连接到 AWS 实例并为刚刚上传的镜像发出 docker pull,最终使用新拉取的镜像启动容器。
这是我目前控制我的版本部署的方式。
问题是:
- 需要很长时间
- 它有时会因各种原因而失败
- 它不灵活(我需要硬编码特定分支以在 github 上收听并从中提取文件)
你有任何其他建议\工具来完成这项工作吗?有时我需要更新 3 台机器,有时需要更新 7 台机器,我需要一些可以扩展的东西。