The big idea
In next few articles I am planning to build the Docker Datacenter. The Docker Datacenter is solution for building scalable, enterprise platform build on top of the CS Docker Engine inside your datacenter. The Docker is a platform for developing, shipping and running applications using container technology. The CS [Commercially Supported] Docker Engine is designed to run applications that are build anywhere, distributed anywhere and can run on anything. By anything, in DataCentre terminology, this means to run workloads on physical, and virtual gear or in the cloud, where cloud can be on AWS, Azure, GWS, or OpenStack. The need for CI/CD integrations, apps modernization and DevOps collaboration requires solutions that can scale, be managed with ease and provide enough room for further growth, and expansion while offering flexibility for both developers and operators. The Docker Datacenter promises to bring orchestration, management and deployment at scale under unified umbrella. It is solution for private, behind the firewall deployment model.
I will test, deploy, and scale Docker DataCenter [DC] components for the purpose of evaluating the software.
But I am good guy…
Let’s say I want to deploy a new HTML/JS web app with latest fancy libraries. So my app depends on number of libraries, it uses JS, NodeJS, PHP, MongoDB, Composer for resolving PHP dependencies, RequireJS for resolving JS dependencies, Grunt for CSS, and JS automation, etc. I also use JS, or PHP routing library for building REST. You see where I am going with this. It is increasingly complicated for everyone else other then me to use the application as I need to install, configure, and deploy the same. Now when you think that I need to comply with various requirements, software lifecycle, testing, UA, handling feedbacks, bug fixes, then testing again, deployment and lifecycle management of such software becomes increasingly complicated and messy. A Simple app in the enterprise can be a nightmare to deploy let alone maintain. And I have not even touched upon subject of security and various inherent source code vulnerabilities yet. Can Docker solve some, or all of this? Let’s see.
OpenStack to the rescue. Breathe Ops people
Now, in order to get to the point where you have environment that developers can use for testing of their apps you need to stand flexible [read scalable] underlying infrastructure.
There are number of ways to build the infrastructure for the LAB. I will not go into lengthy options nor justify my choices. Let’s just say the same can be accomplished with different vendors and/or wealth of open source SW. As with anything else, what and how to use, it depends. But please focus on the big idea here.
In this series of articles Docker DC is build on top of already running OpenStack. The OpenStack Platform 8, enterprise offering from Red Hat, is built using Red Hat Director, that helped me to automate Overcloud deployment and have consistent installations. I can increase number of compute nodes, if needed, and scale the Overcloud and Docker nodes, or other components, if needed. With layered virtualization, benefits are obvious. High utilization, density, agility, efficiency, short testing cycles, just to name a few.
Steps, steps please
In this lab I used number of manual steps, but our enterprise testbed configuration is mostly automated.
Manual steps are listed for the clarity of the process.
Steps that I will show are focused on preparing Overcloud for Docker installation and Docker installation itself:
- OpenStack overcloud deployment,
- Configuring firewall, access and security for Docker DC VMs,
- Automated Installation of VMs for Docker DC components using HEAT.
- Installing CS Docker Engine [all nodes]
- Installing UCP – Universal Control Plane
- Installing DTR – Docker Trusted Registry
- Add nodes
- Build UCP HA
- Build DTR HA
- Can you autoscale, YES I can
- What about Swarm, overlay, running services – this is coming in Dev segment
- What else – gimme IDEAS
The following posts will delve into process of how to build the OpenStack and how to prepare the same for Docker deployment.