New Relic 开源其 Docker 部署工具 Centurion

阅读数:40 2014 年 7 月 12 日

话题:RubyDevOps

New Relic开源了其在内部生产环境中使用的 Docker 部署工具Centurion。Centurion 可以从 Docker registry 中构建容器,并用正确的环境变量、主机容量映射、端口映射将他们运行在一组主机上,另外 Centurion 还支持滚动部署。

New Relic 的项目经理 Karl Matthias 在DockerCon 上宣布基于 MIT 许可开源 Centurion。Centurion 项目以 Ruby gem 的方式组织,并使用 Rake 任务语法内建的 DSL 读取配置文件,不过很快它就会支持从 etcd 中读取配置。Centurion 的 DSL 包括定义要部署的镜像、要部署的 Docker 服务器、环境变量、容器容量以及端口的相关指令,同时它还支持定义多个环境,比如模拟环境、生产环境。

用于分布式容器环境的 Centurion 包含多个命令:

  • 滚动部署到一组 Docker 服务器rolling_deploy:一次启动或停止一个容器以确保应用的负载均衡。部署时,每个容器都会进行健康检查以保证应用正确启动。默认情况下,它会向应用的根路径发送一个 GET 请求,并期望应用能返回一个 200 范围内(译者注:2XX 都算成功)的有效响应状态码。
  • 部署到一组 Docker 服务器deploy:硬停机,然后在指定的主机上启动容器。对于那些在任何时段都要可用的应用来说,不推荐使用。
  • 在主机上部署一个 Bash 控制台deploy_console:在容器中已存在的环境下启动一个命令行 shell。Dockerfile 中的 CMD 指令被替换为 /bin/bash ,使用主机列表中第一个主机。
  • 列出特定项目的服务器的所有标签list:running_container_tags:列出目前所有的标签以及标签下运行的机器。同样地列出所有主机的唯一标签列表,当部署出现问题时,这一列表对确认部署的状态很有帮助。
  • 列出运行当前项目的所有容器list:running_containers:返回配置中每个 Docker 服务器上运行项目的所有容器的列表。
  • 列出 registry 镜像list:返回项目的 registry 上所有的镜像。

该项目正在添加一些新的功能,比如为配置和服务发现集成 etcd 、证书验证以及服务器池的动态主机分配。