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

Last updated