idspopd - Fotolia
Microsoft's Deis unit is helping to streamline the development and deployment of applications into Kubernetes clusters with a tool known as Draft.
Microsoft acquired Deis, known as the Kubernetes company, in early April. Draft is the piece of open source software the Deis team has released as part of Microsoft's Azure Container Service (ACS) team, said Gabe Monroy, former CTO of Deis and the current lead product manager for containers at Microsoft.
Monroy said the goal of Deis is to make containers easier to use, and easier to deploy on Kubernetes specifically. And despite the use of containers "skyrocketing" and Kubernetes emerging as the most popular solution for orchestrating containers, "some still view Kubernetes as too difficult to use," he said in a blog post.
"While by now the strengths of Kubernetes for deploying and managing applications at scale are well understood," said Brendan Burns, director of engineering at Microsoft Azure and co-founder of Kubernetes, in a blog post about Draft. "The process of developing a new application for Kubernetes is still too hard. It's harder still if you are new to containers, Kubernetes or developing cloud applications."
Two simple commands
Draft is an effort to make developing for Kubernetes easier by enabling developers to use two simple commands -- "draft create" and "draft up" -- to begin hacking on container-based applications without requiring Docker or even installing Kubernetes themselves, Monroy said.
Brendan Burnsdirector of engineering, Microsoft Azure
As the name of the tool implies, Draft is aimed at helping developers create a draft of a containerized app running in Kubernetes. The tool focuses on what Monroy refers to as the "inner loop" of a developer's workflow -- the point where developers write code and iterate, but before they commit changes to version control, he said.
"Draft enables the 'inner loop' development experience for the cloud," Burns said.
Back to the simple commands, when a developer runs the Draft tool's "draft create" function, the tool detects the application language and writes out a Dockerfile and a Kubernetes Helm Chart into the source tree. Helm is a tool that streamlines installing and managing Kubernetes applications. Helm is the Kubernetes package manager and Helm Charts are the packages of preconfigured Kubernetes resources. Draft currently supports six languages: Node.js, Go, Java, PHP, Python and Ruby.
Burns further explains that when a developer initially runs Draft, it automatically discovers his code and builds out scaffolding to containerize the application. Then Draft uses heuristics and predefined project templates to create the Dockerfile and Helm Chart to enable the application to be deployed and maintained in a Kubernetes cluster as a Kubernetes cluster app.
After running "draft create," developers then type in "draft up" and the tool will ship their source code to any Kubernetes cluster -- running either locally or in the cloud -- using the Dockerfile and deploys it into a development environment using the Helm Chart.
Edit locally, develop remotely
Draft enables developers to edit locally and develop remotely. Indeed, once the app is deployed, developers can test it live and any changes in their editor or IDE will be made available in seconds. And by employing a Jenkins registry with the Kubernetes cluster, developers can build on a tight iteration loop from code through deployment, Monroy said. This can occur either in concert with an operations team or on the developer's own laptop.
Thus, in true DevOps fashion, Draft enables developers to work directly with operations teams and monitor their application's production dependencies.
"While some developers often start alone, pointing Draft at a Kubernetes cluster running on a laptop, Draft works equally well on a remote Kubernetes cluster," Monroy said. "This allows developers to edit code locally, but have their dev environment running in the cloud where they can access all their app's production dependencies. Three cheers for 'dev' and 'prod' parity!" he wrote in his post.
Charles King, principal analyst at Pund-IT, said he believes Draft was likely responsible for driving Microsoft's interest in Deis in the place because the company was set on simplifying Kubernetes cluster app development.
"The ability to deliver a differentiated solution that significantly simplifies Kubernetes development and deployment processes should place Microsoft in good stead with existing and prospective developer partners," he said. "It will also likely impact developer-focused initiatives Microsoft may design in regard to competitors, particularly AWS, Google and IBM."
Meanwhile, Monroy said the Draft developer experience is inspired by platform as a service (PaaS) environments like Cloud Foundry and the Deis PaaS, which build on the concept of buildpacks. Buildpacks are composed of a set of scripts that will retrieve dependencies, output generated assets or compiled code. Draft contains code from Heroku Buildpacks to help with Kubernetes cluster app development.
"However, Draft differs from buildpack-oriented PaaS systems because it writes out build and deployment configuration into the source tree, making it trivial to construct continuous integration (CI) pipelines that can bring these containers all the way to production," Monroy noted.
Microsoft acquires Deis in April to boost Kubernetes container management on Azure
Kubernetes 1.5 delivered support for Windows
Microsoft Azure Container Service gives enterprises choice in managing containers