使用fleetd和consul在coreos集群上部署应用程序
houston的Python项目详细描述
休斯顿作为命令行应用程序安装,用于 停靠应用程序堆栈的部署。
休斯顿部署允许将文件放置到主机操作系统上,部署 使用consul确认容器的启动,以及 在一次运行中删除以前的容器版本。
部署类型
休斯顿有3种部署类型:全局、独立堆栈和服务。这三种类型都允许使用cloud-init stylewrite_files节进行文件归档部署[1]。
- 全局部署放置一个单元列表,这些单元计划在所有或大多数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从service’s file manifest创建一个tarball文件 上传到领事的KV数据库。然后部署一个动态创建的系统单位到舰队, 它从consul中提取tarball并将文件提取到coreos文件系统。
在下一步中,它将遍历 manifest,提交并启动每个单元,等待 直到一个单元在systemd中列出为所有节点的active,然后 继续下一个。
依赖关系容器启动后,它启动示例服务, 等待Systemd将其报告为活动。然后它向consul查询版本 已启动的服务,确保它在所有预期的 舰队说已经部署到的节点。
一旦确定了部署,它就会查看提交给舰队的所有单位, 检查是否有其他版本的容器正在运行,而不是它部署的容器。 如果是这样的话,它会用舰队摧毁其他的集装箱。
最后,它将检查是否有其他文件存档版本存在于领事馆中。 服务,如果是的话就把它们取下来。管理堆栈部署的一个更有趣的部分是命名空间 使更新一个堆栈不会影响 另一个。例如,在配置中,服务可以被称为 pgbouncer:f20fb494,但在部署时,它将带有前缀和版本 如果服务名是example,则与example-pgbouncer@f20fb494对应。
版本历史记录
可在https://houston.readthedocs.org/en/latest/history.html
[1] | Global file deployments happen after the unit files are deployed so that Consul can be up and running prior to the placement of the global files. |