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,就可以通過子域名來訪問應用了

Last updated