Deis 0.5.1 - Docker Containers All the Way Down

We are proud to announce our v0.5.1 release. Deis itself is now a set of cooperating Docker containers and Deis can build and deploy Dockerfile-based projects as well as Heroku-style apps.

What is Deis?

Deis is a Django/Celery API server, Python CLI and set of Chef cookbooks that combine to provide a Heroku-inspired application platform for public and private clouds. Your PaaS. Your Rules.

0.5.1 Summary

New Features

  • Containerization of Deis Components. Deis' moving parts are now a set of trusted docker images. This will result in a more modular system that is easier to deploy and to manage.

  • Enhanced Docker Integration. git push deis master and deis config create and distribute images internally via Dockerfiles and a private Docker registry.

  • Dockerfile Apps. In addition to Deis' broad support for Heroku-style apps, deis/builder can now build any application based on a Dockerfile.

  • Binary CLI. While developers may prefer to run the Deis client from pypi or a local repository, the make client_binary command will build an executable version with no additional requirements. Executables for some platforms are available for download:

    • https://s3-us-west-2.amazonaws.com/opdemand/deis-osx-0.5.1.tgz
    • https://s3-us-west-2.amazonaws.com/opdemand/deis-win32-0.5.1.zip
    • https://s3-us-west-2.amazonaws.com/opdemand/deis-win64-0.5.1.zip
    • https://s3-us-west-2.amazonaws.com/opdemand/deis-deb-wheezy-0.5.1.tgz

Under the Hood

  • Updated to Docker 0.8.0
  • Updated Chef to 11.8.2
  • Docker waits until after the "vagrant-mounted" event to start on Vagrant

Bug Fixes

  • Pinned macaddr and etcd gem requirements to fix provision issues
  • Fixed layers:update sending default args
  • Added a missing DigitalOcean cloud region and the new Singapore region

Community Shout-Outs

We are proud to welcome @bacongobbler as a new maintainer. Formerly one of our most productive external contributors, Matthew is now working on Deis full time!

We want to thank the following Deis community members for creating GitHub issues, providing support to others, and working on various Deis branches:

  • @tombh - beat our Vagrant support into shape, generous and constant testing, pull requests, and support as always. Thanks Tom!
  • @lcheng61 - found AMI access bug, tested fix
  • @jwilder - found old AMI access bug and workaround
  • @davidcollom - testing, bug finding, Rackspace doc fixes
  • @fagiani - testing, bug finding and patches
  • @paulczar - testing, bug finding, several fixes
  • @mo-mughrabi - found eventmachine requirements bug and fixed
  • @nathansamson - containerize testing and bug finding
  • @azurewraith - testing, bug finding and suggested improvements
  • @guilhem - major cleanup of chef code and testing
  • @jsuchal - testing on DigitalOcean
  • @fan0o - testing, upstart bug catch
  • @ksikka - testing, upstart issues found
  • @neerfri - purge the cookbook .ruby-version
  • @kangaroo - fixed slugdir creation
  • @Milodv - DigitalOcean private networking patch

Whew--we hope that's everyone! If we slighted your contributions, please let us know. We will gladly add it to these release notes.

Known Issues

Proxy for Platform Services

As part of moving Deis into Docker containers, we had to change the exposed ports for some core platform services. For example, the Django API server is now exposed on 8000/tcp rather than 80/tcp. We will soon distribute a new proxy service that exposes the platform components on standard ports.

Container Timeouts

We have seen some issues with timeouts due to the public Docker Index. This can manifest as timeout errors when bootstrapping nodes. Typically re-running the provisioning operations will resolve the issue. We are working with the Docker team on a more robust resolution.

What's Next?

Documentation Improvements

Update documentation to catch up with changes from the switching to a Docker-based system. We would like to add a description of the new container architecture as well as instructions for using the new Dockerfile build workflow.

Enterprise-Grade Scheduler

We are now prototyping a new scheduler based on Apache Mesos, an enterprise-grade cluster manager. This change to the scheduler implementation will be transparent to end users, but should allow Deis to scale to 10,000+ nodes.

Promote artifacts from Docker Registry

In order to facilitate a streamlined CI/CD process, we need an ability to promote existing Docker images as builds (bypassing the git push process). We are currently investigating the best workflow.

SSL & General Security Improvements

For more details, see issues tagged security on GitHub.

Future

Remove the Chef Dependency

Though Chef will continue to be the recommended way to deploy Deis, we are moving away from requiring a Chef Server and using Data Bags for cluster configuration. Once we implement the new scheduler, we can remove the Chef dependency and provide support for other configuration management solutions (Puppet, Ansible, Salt).

Service Gateway

We need to make it as easy for ops folks to publish a set of reusable backing services (databases, queues, storage, etc) and allow developers to attach those services to applications. This will be done in a loosely coupled way, following Twelve Factor best practices. You can review the initial implementation and follow progress on this GitHub issue.

Interactive deis run

Though we provide the ability to run admin commands inside containers, we don't currently support interactive shells into containers (i.e. deis run bash). Once this infrastructure is in place, this will also allow us to implement log tailing and other real-time features.

Support for deis push deploys

Users should be able to push builds to Deis even if they don't use git. We are investigating a deis push command that would not require a specific VCS.

How can you help?

  • Star our GitHub repository
  • Help spread the word about @opendeis on Twitter
  • Explore contributing to the Deis project by joining the #deis channel on Freenode

You can learn about other ways to get involved on our website.

11 Mar 2014

Matt Boersma

Matt Boersma

Senior Software Engineer at OpDemand

Follow me on Twitter @RealMattBoersma