BT
x Your opinion matters! Please fill in the InfoQ Survey about your reading habits!

New Relic Open Sources their Docker Deployment Tool Centurion

by Carlos Sanchez on Jun 17, 2014 |

New Relic open sourced Centurion, a deployment tool for Docker used internally to run their production infrastructure. Centurion takes containers from a Docker registry and runs them on a fleet of hosts with the correct environment variables, host volume mappings, and port mappings, supporting rolling deployments out of the box.

Karl Matthias, site engineering manager at New Relic, announced during DockerCon the public availability of Centurion under a MIT license. The project is distributed as a Ruby gem and reads a configuration file using Rake task syntax with a built-in DSL, although soon it will support reading the configuration from etcd. The DSL includes instructions to define the image to deploy, Docker servers to deploy to, environment variables, volumes and ports for each container, and it supports defining multiple environments like staging and production.

Centurion includes a number of tasks to work with distributed containers:

  • Rolling deployment to a fleet of Docker servers rolling_deploy: stops and starts each container one at a time to make sure that the application stays available from the viewpoint of the load balancer. As the deploy runs, a health check will hit each container to ensure that the application booted correctly. By default it will issue a GET request to the root path of the application, and expects the endpoint to issue with a valid response in the 200 status range.

  • Deploy to a fleet of Docker servers deploy: hard stops, then starts containers on all the specified hosts. Not recommended for apps where one endpoint needs to be available at all times.

  • Deploy a bash console on a host deploy_console: starts a command line shell with the existing environment passed to the container. The CMD from the Dockerfile will be replaced with /bin/bash, using the first host from the host list.

  • List all the tags running on servers for a particular project list:running_container_tags: returns a list of all the current tags and which machines they are running on. Gives a unique list of tags across all hosts as well, useful for validating the state of the deployment in the case where something goes wrong mid-deploy.

  • List all the containers currently running for this project list:running_containers: returns a list of all the containers for a project on each of the Docker servers from the config.

  • List registry images list: returns a list of all the images in the registry for the project.

The project is looking to add some more features, such as etcd integration for configs and discovery, certificate authentication or dynamic host allocation to a pool of servers.

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread
Community comments

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Discuss

Educational Content

General Feedback
Bugs
Advertising
Editorial
InfoQ.com and all content copyright © 2006-2014 C4Media Inc. InfoQ.com hosted at Contegix, the best ISP we've ever worked with.
Privacy policy
BT