日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Draft-微软出品的云原生下的本地开发辅助工具

發(fā)布時(shí)間:2025/1/21 编程问答 77 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Draft-微软出品的云原生下的本地开发辅助工具 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、介紹

Draft是微軟Deis團(tuán)隊(duì)開源的一個(gè)用Go語言編寫的容器應(yīng)用開發(fā)輔助工具,用于幫助開發(fā)人員簡(jiǎn)化容器應(yīng)用程序構(gòu)建和部署的開發(fā)流程。Draft的設(shè)計(jì)思路在于,允許開發(fā)人員在不了Docker和Kubernetes相關(guān)知識(shí)的前提下,仍可順利實(shí)現(xiàn)應(yīng)用程序開發(fā)。在Draft的幫助下,開發(fā)者甚至不需要在本地計(jì)算機(jī)中安裝Docker和Kubernetes等工具。

Draft通過三個(gè)命令來完成這個(gè)流程:

1、draft init:初始化docker registry賬號(hào),并在Kubernetes集群中部署draftd,這個(gè)進(jìn)程負(fù)責(zé)鏡像的構(gòu)建、將鏡像推送到docker registry中。

2、draft create:Draft 根據(jù) packs 檢測(cè)應(yīng)用的開發(fā)語言,并自動(dòng)生成 Dockerfile 和 Kubernetes Helm Charts。當(dāng)前,Draft內(nèi)部支持8種類型的語言,包括Java、PHP、GO等。

3、draft up:根據(jù)Dockerfile構(gòu)建鏡像,并使用Helm將應(yīng)用部署到Kubernetes集群中。同時(shí),還會(huì)在本地啟動(dòng)一個(gè)draft client,監(jiān)控代碼的變化,并將更新過的代碼推送給draftd。

二、安裝

如果要演示使用Draft輔助本地開發(fā),需要有先決條件:

1、Kubernetes集群以及kubectl命令行

這個(gè)可以參考之前的文章《Jenkins X–(6)虛擬機(jī)里搭建Minikube環(huán)境》,目前K8s集群和kubectl命令條件已經(jīng)具備。

2、安裝并配置Helm

在使用Helm之前先執(zhí)行helm init命令,完成初始化設(shè)置,這個(gè)命令會(huì)安裝Tiller到現(xiàn)有的K8s集群的kube-system命名空間中,同時(shí)進(jìn)行一些本地化的配置。

查看kube-system命名空間,tiller已經(jīng)處于Running狀態(tài)了。

3、安裝并配置Draft

一般Draft是安裝在開發(fā)者本地機(jī)器上,因此Draft支持多個(gè)平臺(tái)的安裝。

Linux

查看draft版本

MacOS

使用Homebrew安裝Draft

Windows

使用Chocolatey安裝Draft

GoFish

或者使用GoFish,能同時(shí)支持Linux/MacOS/Windows平臺(tái)。

配置Draft

安裝好Draft后,執(zhí)行下面的命令進(jìn)行設(shè)置,draft的plugin、pack repo、配置等都存儲(chǔ)在~/.draft目錄下。

三、使用

1、下載樣例庫(kù)

這里使用Draft代碼庫(kù)中自帶的樣例,下載github上的代碼庫(kù),進(jìn)入到example-python目錄下,只有兩個(gè)文件。

2、使用draft create命令創(chuàng)建draft文件

Draft提供了一些腳手架將應(yīng)用程序部署到K8s集群中,通過draft create命令可以創(chuàng)建Helm chart,Dockerfile和一個(gè)Draft toml文件。

由Draft自動(dòng)生成的charts/ 和 Dockerfile默認(rèn)是基本的Python配置,這個(gè)Dockerfile使用python鏡像,并且安裝requirements.txt中的依賴,將當(dāng)前目錄拷貝到/usr/src/app中,為了與charts/python/values.yaml中service的internalPort端口保持一致,這個(gè)Dockerfile對(duì)外暴露的端口也是8080。

draft.toml是Draft識(shí)別的文件,包含了基本的配置詳情,如應(yīng)用名稱,部署的命名空間,是否當(dāng)文件變化后自動(dòng)部署應(yīng)用到K8s集群中。

.draftignore文件用于在執(zhí)行draft up時(shí)排除一些文件,以及在監(jiān)控文件變化時(shí)排除一些文件不被監(jiān)聽。

.dockerignore文件用于Docker在構(gòu)建鏡像時(shí)忽略一些不需要的文件和目錄。

在上面的文件列表中還有一個(gè).draft-tasks.toml文件,這個(gè)文件相對(duì)于鉤子,可以在draft up之前(pre-up)或之后(post-deploy),draft delete之后配置一些任務(wù)。

3、部署服務(wù)(draft up)

一切準(zhǔn)備好之后,執(zhí)行draft up命令將應(yīng)用部署到K8s集群中。在執(zhí)行draft up命令時(shí)的流程是:

讀取并解析代碼庫(kù)中的draft.toml文件

壓縮charts/目錄和應(yīng)用目錄為兩個(gè)獨(dú)立的tar包

使用docker構(gòu)建容器鏡像

使用docker將鏡像推送到鏡像倉(cāng)庫(kù)

使用helm安裝這個(gè)chart,也就是這個(gè)新創(chuàng)建的鏡像

部署服務(wù)

連接服務(wù)

服務(wù)部署到K8s集群中,可以使用draft connect連接到服務(wù)上,這個(gè)命令執(zhí)行后,會(huì)創(chuàng)建一個(gè)代理連接到這個(gè)pod暴露出來的端口上。

調(diào)用服務(wù)

使用curl命令調(diào)用部署的應(yīng)用服務(wù)。

4、更新服務(wù)

修改app.py打印出“Hello,Draft!”,保存后執(zhí)行draft up從新構(gòu)建鏡像并發(fā)布應(yīng)用到K8s集群中,執(zhí)行draft connect連接到K8s集群中的服務(wù)。

再次,調(diào)用URL能看到打印的日志已經(jīng)是新修改的。

對(duì)于更新服務(wù),可以在draft.toml配置文件中指定watch=true可以監(jiān)聽本地文件的變化,當(dāng)本地文件發(fā)生變化后,即觸發(fā)鏡像構(gòu)建、鏡像部署等過程。

5、刪除服務(wù)

當(dāng)服務(wù)不再使用時(shí),使用draft delete命令將該應(yīng)用從K8s集群中刪除。

查看該應(yīng)用的狀態(tài)已經(jīng)變?yōu)門erminating,稍等片刻后,該應(yīng)用就從集群中刪掉了。

四、Draft與Skaffold對(duì)比

Skaffold也是云原生下輔助本地開發(fā)的命令行工具,在這篇文章《一款云原生時(shí)代本地開發(fā)調(diào)試的利器-Skaffold》中有介紹。Draft和Skaffold這兩個(gè)工具都可以用作CI/CD流水線中的構(gòu)建塊,自動(dòng)化的將更新的程序部署到Kubernetes集群上,最終目的是讓更新的應(yīng)用程序在K8s集群中運(yùn)行,以更頻繁更新、部署來減少錯(cuò)誤。

Draft是微軟開源的構(gòu)建和部署工具。它就像一個(gè)流水線編排的CLI,因?yàn)槭褂玫腍elm進(jìn)行管理,也被歸類為包管理器。Draft的定位在本地編寫代碼和提交給源代碼管理之前供開發(fā)人員使用。Draft可以直接從本地計(jì)算機(jī)生成Docker鏡像,然后將其部署到集群中。它創(chuàng)建并使用Helm charts來生成Kubernetes manifests來部署應(yīng)用程序。使用Draft可以部署應(yīng)用程序到運(yùn)行在Azure上的Kubernetes。

Skaffold是Google發(fā)布的一個(gè)相對(duì)較新的工具。Skaffold是一個(gè)命令行工具,管理應(yīng)用程序的構(gòu)建、推送和部署到Kubernetes的整個(gè)工作流程。它的設(shè)計(jì)可以使你持續(xù)迭代本地代碼,然后Skaffold將構(gòu)建和部署這些更新到本地或遠(yuǎn)程的Kubernetes集群中。

雖然二者都允許開發(fā)人員在本地迭代和測(cè)試Kubernetes應(yīng)用程序,但Skaffold還提供了部署到生產(chǎn)環(huán)境的流水線工具。二者也都提供了插件體系結(jié)構(gòu),用于滿足構(gòu)建、部署等解決的多樣性。

五、總結(jié)

隨著云原生時(shí)代的到來,本地開發(fā)輔助的工具也種類繁多,各大廠也都推出了自己的輔助工具。雖然功能特性不盡相同,但目的是一樣的,都是為了提高本地開發(fā)的效率,頻繁的更新和測(cè)試,能夠大幅降低問題修復(fù)的成本。

容器的出現(xiàn),徹底改變了軟件交付和運(yùn)行的過程,應(yīng)用的構(gòu)建、分發(fā)和交付得以在這個(gè)層面上實(shí)現(xiàn)了標(biāo)準(zhǔn)化,大幅降低了企業(yè)IT實(shí)施和運(yùn)維成本,提升了業(yè)務(wù)創(chuàng)新的效率。

像Draft、Skaffold這樣的本地開發(fā)輔助工具,就是利用了容器的能力,標(biāo)準(zhǔn)的構(gòu)建流程,標(biāo)準(zhǔn)的Kubernetes編排。目前,軟件已經(jīng)實(shí)現(xiàn)了集裝箱式的運(yùn)輸,只需要提供一套鏡像文件和一套編排文件就能快速啟動(dòng)一套環(huán)境。

  • 發(fā)表于: 2019-12-07

  • 原文鏈接:https://kuaibao.qq.com/s/20191207A0O5N100?refer=cp_1026

總結(jié)

以上是生活随笔為你收集整理的Draft-微软出品的云原生下的本地开发辅助工具的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。