跳转到主要内容

使用fleetd和Consul在CoreOS集群上部署应用程序

项目描述

使用CoreOSFleet以及Consul将Docker堆栈部署到CoreOS集群。

休斯顿作为命令行应用程序安装,旨在用于自动化Docker化应用程序堆栈的部署。

休斯顿部署允许在单次运行中将文件放置到宿主操作系统上、部署依赖容器、使用Consul确认容器的启动,并拆卸先前版本的容器。

Version Downloads Status Coverage License

安装

您可以使用您选择的工具通过Python包索引安装休斯顿

pip install houston

文档

文档可在ReadTheDocs上找到。

还有一个示例配置目录

部署类型

休斯顿有3种部署类型:全球部署、独立堆栈和服务。这三种类型都允许使用cloud-init风格write_files部分进行文件存档部署。

  • 全球部署将一个单元列表放置在所有或大多数CoreOS实例之间共享。

  • 独立部署类似于全球部署,但允许进行更具有针对性的部署,首先部署文件存档。

  • 服务部署允许部署单个单元以及它所依赖的共享单元。

使用示例

部署完整堆栈应用程序的示例

$ houston -c config -e test-us-east-1 example 7b7d061b
INFO     Deploying example-file-deploy@11bede3c.service
INFO     Deploying example-memcached@1.4.24.service
INFO     Deploying example-nginx@35f9e1f3.service
INFO     Deploying example-consul-template-nginx@d3bac01d.service
INFO     Deploying example-pgbouncer@f20fb494.service
INFO     Deploying example-consul-template-pgbouncer@d3bac01d.service
INFO     Deploying example-datadog@ff444e66.service
INFO     Deploying example@7b7d061b.service
INFO     example@7b7d061b.service has started
INFO     Validated service is running with Consul
INFO     Destroying example@b67b4317.service
INFO     Deployment of example 7b7d061b and its dependencies successful.
INFO     Eagle, looking great. You're Go.

当执行时,houston将从服务的文件清单创建一个文件tar包并将其上传到Consul的KV数据库。然后它将动态创建的系统单元部署到fleet,从Consul中拉取tar包并将文件提取到CoreOS文件系统。

在下一步中,它遍历清单中指定的依赖容器,提交并启动每个单元,等待所有节点在systemd中将单元列为active,然后继续下一步。

当依赖容器启动后,它将启动示例服务,等待systemd报告其为active。然后它查询Consul以获取启动服务的版本,确保它在fleet声称已部署到所有预期节点的所有节点上运行。

一旦确认了部署,它会查看提交给fleet的所有单元,检查是否有比它部署的容器版本更多的容器运行。如果是这样,它将使用fleet销毁那些其他容器。

最后,它会检查Consul中是否存在服务的其他文件存档版本,如果存在则删除。

管理堆栈部署的更有趣的部分之一是fleet中共享堆栈元素的分片命名空间,以便更新一个堆栈不会影响另一个。例如,在配置中,一个服务可能仅被引用为pgbouncer:f20fb494,但部署时,如果服务名称为example,则将适当地添加前缀和版本号,如example-pgbouncer@f20fb494

版本历史

可在https://houston.readthedocs.org/en/latest/history.html找到

由以下支持