Draft

Draft 是微软 Deis 团队开源(见 https://github.com/azure/draftarrow-up-right)的容器应用开发辅助工具,它可以帮助开发人员简化容器应用程序的开发流程。

Draft 主要由三个命令组成

  • draft init:初始化 docker registry 账号,并在 Kubernetes 集群中部署 draftd(负责镜像构建、将镜像推送到 docker registry 以及部署应用等)

  • draft create:draft 根据 packs 检测应用的开发语言,并自动生成 Dockerfile 和 Kubernetes Helm Charts

  • draft up:根据 Dockfile 构建镜像,并使用 Helm 将应用部署到 Kubernetes 集群(支持本地或远端集群)。同时,还会在本地启动一个 draft client,监控代码变化,并将更新过的代码推送给 draftd。

Draft 安装

由于 Draft 需要构建镜像并部署应用到 Kubernetes 集群,因而在安装 Draft 之前需要

  • 部署一个 Kubernetes 集群,部署方法可以参考 kubernetes 部署方法

  • 安装并初始化 helm(需要 v2.4.x 版本,并且不要忘记运行 helm init),具体步骤可以参考 helm 使用方法

  • 注册 docker registry 账号,比如 Docker Hubarrow-up-rightQuay.ioarrow-up-right

  • 配置 Ingress Controller 并在 DNS 中设置通配符域 * 的 A 记录(如 *.draft.example.com)到 Ingress IP 地址。最简单的 Ingress Controller 创建方式是使用 helm:

# 部署 nginx ingress controller
$ helm install stable/nginx-ingress --namespace=kube-system --name=nginx-ingress
# 等待 ingress controller 配置完成,并记下外网 IP
$ kubectl --namespace kube-system get services -w nginx-ingress-nginx-ingress-controller

minikube Ingress Controller

minikube 中配置和使用 Ingress Controller 的方法可以参考 这里

初始化好 Kubernetes 集群和 Helm 后,可以在 这里arrow-up-right 下载 draft 二进制文件,并配置 draft

Draft 入门

draft 源码中提供了很多应用的 示例arrow-up-right,我们来看一下怎么用 draft 来简化 python 应用的开发流程。

Draft create 生成 Dockerfile 和 chart

Draft Up 构建镜像并部署应用

打开一个新的 shell,就可以通过子域名来访问应用了

最后更新于