At CoreOS Fest in San Francisco, Calif., Microsoft's Gabe Monroy, lead project manager for containers on Microsoft Azure, announced the release of Draft, a tool to streamline development of applications running on any Kubernetes cluster.
With Draft, which Monroy said was the first open-source program to emerge from the Azure Container group, developers can use two simple commands to begin hacking on container-based applications with no knowledge of Docker or Kubernetes. "In fact," Monroy claimed, "developers don't even need Docker or Kubernetes installed to get going."
Monroy and his team came to Microsoft as part of the Microsoft's Deis acquisition. When Microsoft bought Deis Scott Guthrie, Microsoft's executive vice president of Cloud and Enterprise, said the acquisition is part of Microsoft's quest to ensuring Azure is the best place to run containerized workloads.
Simultaneously, Monroy, then Deis's chief technology officer, said the Deis team will continue with its contributions to Workflow, Helm, and Steward while "maintaining our deep engagement with the Kubernetes community." Now, barely a month after joining Microsoft, Monroy and his team are proving their promise.
Draft targets the inner loop of a developer's workflow -- while developers write code, but before they commit changes to version control. Here's how it works:
When developers run 'draft create,' the tool detects the application language and writes out a simple Dockerfile and Kubernetes Helm, Kubernete's package manager, chart into the source tree. This uses configurable Draft 'packs' that can support any language, framework, or runtime environment. By default, Draft supports Python, Node.js, Java, Ruby, PHP, and Go.
You can use Draft to streamline development of any application or service that can run on Kubernetes. According to Monroy, "Want to customize Draft packs? No problem. Packs are just a simple detection script, a Dockerfile, and a Helm Chart."
The developer experience is inspired by Platform-as-a-Service (PaaS) systems such as, naturally enough, Deis and Cloud Foundry. These support the concept of buildpacks. Buildpacks provide the framework, file dependencies, and runtime support to run applications.
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 pipelines.
In practice, when developers run 'draft create,' hacking on the application is as simple as typing 'draft up.' This ships source code to any Kubernetes cluster, builds it remotely using the Dockerfile, and deploys it into a dev environment using the Helm Chart. Developers can then test their apps live, and any changes in their editor or IDE will be made available in seconds.
Or, if the programmers would rather, they can point Draft at a Kubernetes cluster running on a laptop. Draft works equally well on a remote Kubernetes cluster. This allows developers to edit code locally, but have their dev environment running in the cloud where they can access all their resources.