The OpenStack Magnum project began in 2014 as a Containers-as-Service solution for OpenStack clouds. Since then it has grown considerably in popularity, and soon became the place that people thing of when they think of anything containers related for OpenStack should go. Community members proposed a whole range of features, many of which duplicated areas of development where other projects like Docker and Kubernetes were already serving well. This led to a community discussion at our last design summit in Austin, where I was joined by a number of concerned community members, including several prominent leaders in the OpenStack technical committee to redefine the scope of the Magnum project to be more narrow, ensuring its success rather than becoming the home of all container related ideas. This new scope allowed the creation of another project named Zun where those who want to add the equivalent of Docker and Kubernetes equivalent functionality to OpenStack can work on those pursuits. Although I don’t contribute to the Zun project, I did support the creation of that project to allow the OpenStack community to collaborate on those pursuits.
Along with Magnum’s new and focused scope, we adjusted the mission statement:
To provide a set of services for provisioning, scaling, and managing container orchestration engines.
A container orchestration engine, or COE, is a software system such as Docker, Kubernetes, Apache Mesos, or similar systems that provide orchestration and clustering features for containerized applications. Magnum includes pluggable cluster drivers for each of these COEs. Perhaps someday Zun will also have a community contributed Magnum cluster driver as well.
In the Mitaka release cycle, Magnum’s contributors removed a considerable portion of the code from Magnum and our client that deal with the lifecycle of containers, and instead focus on the management and scaling of the clusters in which your containers run. When presented with this news, many people ask the following question:
Why? Doesn’t this mean that in order to use containers on OpenStack you have to use two different clients?
The answer is definitely yes. This was our intent. We think that the clients that come with each different COE are better, and more complete than any experience that wraps them. People actually like using the Docker and Kubernetes clients. So rather than putting a leaky abstraction around them, we help cloud users create clusters that they can grow and manage without assistance from their cloud operators, and allow them to use the container tools they know and love. They get the best of OpenStack and the best of container management software by some of the most active communities in the world of open source software.
In all honesty, this is not too different than using Trove to create a MySQL server. You use Trove to get your server, and do management related things like backing it up. Once you have your server, you use your favorite MySQL client (or client libraries) to connect to it. Magnum works the same way with the COEs it supports. We help you make your cluster, and we get out of your way.
Thanks everyone in the community who worked together to redefine the Magnum project for success, and for doing the work to get us laser focused on a target we can definitely hit.