Developer Workflow with Docker
From Development to Production
DisclaimerI am not trying to create a generalized workflow for all application developers. The idea is to give an overview of available solutions.
$ whoami
● Lalatendu Mohanty● @lalatenduM on Twitter.● lalatenduM on Freenode.● Homepage/Blogs : lalatendu.org● Working for Red Hat as a software engineer.
Things I am trying to cover in this talk● Opinionated workflow for Kubernetes and Docker Compose/Swarm.● As I have just 30 minutes for the presentation, I will only demo one project
from each Kubernetes and Docker Compose/Swarm ecosystem.
Note: Pivotal Cloud Foundry is absent in this the talk as they do not directly use Kubernetes or Docker Compose/Swarm.
Docker Compose Ecosystem● Docker Toolbox (For Non-Linux/GNU OS)
○ Docker Compose○ Docker Swarm
● Linux/GNU distributions have native support.● Managing Production deployments.
○ Docker Cloud○ Rancher 1.0
Note : Due to lack to time I am going to talk about Docker Cloud in this presentation.
Docker Cloud
Docker Cloud Salient Features● Unified Interface for managing containers on public cloud and privately hosted
machines● Integration with Docker Compose and Docker Swarm.● Integration with Docker Hub (public and private repositories)● Security scanning in Docker Cloud
Docker Cloud Live Demo
Kubernetes● Automating deployment, scaling, and management of containerized
applications.● Various ways to set up local development environment e.g. minikube,
kmachine, Red Hat CDK.
Why PaaS?
● Complete lifecycle management of application. ● Developers can deploy application without help from operation team.● Stable and transparent developer workflow.● Supports the idea of continuous deployment (DevOps).
Cloud Native Paas Based On Kubernetes● Deis
○ Deis builds upon Docker and CoreOS to provide a lightweight Paas.
● OpenShift○ Uses Docker and Kubernetes and builds on top of it.
● Kel
All of the above Paas solutions are open source. Both Deis and OpenShift supports both private and public Clouds.
● Rancher 1.0 also have a nice interface and tooling to deploy containers on a Kubernetes cluster.● There are Kubernetes support in Public clouds too.
OpenShift● Local development environment through ADB/CDK
○ ADB : Atomic Developer Bundle.○ CDK: Container Development Kit.
● OpenShift Online.● OpenShift Origin.● OpenShift Dedicated.
OpenShift ● Automates application builds, deployments, scaling, health management and
more.● Developers have the choice and the ability to run multiple languages,
frameworks, and databases on the same platform.● It is a self service platform for application developers. ● Runs on top of physical or virtual, public or private cloud, and even hybrid
cloud infrastructure.● OpenShift dedicated for deploying/running it on public cloud e.g. AWS and
Google Compute Engine.● Suited for running micro-services kind of applications.
OpenShift Salient Features● Uses Kubernetes orchestration, management and Docker as the container
technology.● Automated image builds and promotion.● Deployments integrated with builds and CI.● Source to image build process.● Integrated networking (SDN, DNS, routing) for container networking.● Fully integrated Docker registry.● Integrate with Docker Hub and other 3rd party enterprises registries. ● Support for persistent volumes with various cloud storage solutions.● Integrated enterprise features e.g authentication (LDAP etc), quota etc.
OpenShift Architecture
OpenShift Demo On CDK
Red Hat Container Development Kit 2.0● Development environment same as the production environment.● Easiest way to setup OpenShift.
○ One command to set up/destroy i.e. “vagrant up” roy" and “vagrant destroy”○ There are templates of sample applications.
● Quickly get single node Kubernetes setup or Docker run time Windows, OS X, Linux/GNU.
● Overview: http://developers.redhat.com/products/cdk/overview/
● The upstream project of CDK is called Atomic Developer Bundle.
How to get CDK?● Sign up for developer.redhat.com.● Follow: http://developers.redhat.com/products/cdk/get-started/
Atomic Developer Bundle● Upstream community project of Red Hat Container Development Kit.● Helps to create developer environment for Docker, OpenShift Origin,
Kubernetes, Mesos Marathon.
● Github Url: https://github.com/projectatomic/adb-atomic-developer-bundle.
Questions?
References● http://blog.kubernetes.io/2015/11/Kubernetes-as-Foundation-for-Cloud-
Native-PaaS.html● https://www.openshift.com/enterprise/features.html● https://www.youtube.com/watch?v=wjWgVApNbQA● http://developers.redhat.com/products/cdk/overview/