Draft

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

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 HubQuay.io

  • 配置 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 后,可以在 这里 下载 draft 二进制文件,并配置 draft

Draft 入门

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

Draft create 生成 Dockerfile 和 chart

Draft Up 构建镜像并部署应用

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

最后更新于