與Linux、OpenStack等成熟的技術(shù)社區(qū)相比,Rancher社區(qū)還是處于初級發(fā)展階段,一個技術(shù)社區(qū)的成敗并不是單純的代碼貢獻,而學(xué)習文檔的數(shù)量和代碼管理作業(yè)流程也是非常重要的。如何讓懷揣不同需求的工程師都能在社區(qū)中快速找到相應(yīng)的解決方案,這就需要大家協(xié)同合作共同促進社區(qū)發(fā)展與完善。除了我們所熟知的Rancher & RancherOS,Rancher Labs的開發(fā)團隊在實踐中提煉了很多實用的小工具,這些小工具雖然并不會左右Rancher發(fā)展的大局,但是在項目標準化和開發(fā)效率上給團隊帶來巨大的便捷。這次主要是帶著大家一起來認識一下這些小工具。
Golang包管理工具-Trash
項目地址:https://github.com/rancher/trash
目前主流的編程語言 Python、Ruby、Java、Php 等已經(jīng)把包管理的流程設(shè)計的猶如行云流水般流暢,一般情況下開發(fā)者是不需要操心類庫包依賴管理以及升級、備份、團隊協(xié)作的。Golang在1.5版本開始,官方開始引入包管理的設(shè)計,加了 vendor目錄來支持本地包管理依賴,但是需要特殊設(shè)置GO15VENDOREXPERIMENT=1,在1.6時代這個特性已經(jīng)是默認的了??墒莢endor并沒有統(tǒng)一的版本號管理功能,只是額外提供了project內(nèi)包的依賴路徑。于是Trash這個工具就應(yīng)運而生了,Trash的使用非常簡單,只需要有一份依賴包的描述文件即可。
描述文件 trash.conf 支持兩種格式,普通方式和YAML方式,可以直接在其中描述依賴庫的遠程地址、版本號等,一個簡單的例子(我這里使用普通格式):
然后在根目錄執(zhí)行trash,即可獲得相關(guān)版本的依賴包:
非常輕量級,非常簡潔。
Golang編譯工具-Dapper
項目地址:https://github.com/rancher/dapper
我們在編譯golang執(zhí)行程序的時候,因為涉及到協(xié)作開發(fā),這就會碰到一個問題,就是如何保證編譯環(huán)境的一致性。環(huán)境一致性最好的辦法就是使用容器技術(shù),Dapper就是利用Docker build鏡像的過程中可以執(zhí)行各種命令生成容器的原理。只需在項目的根目錄下創(chuàng)建 Dockerfile.dapper 文件,這是一個參考Dockerfile標準的文件,執(zhí)行 dapper 命令即可按照約定規(guī)則生成最終的執(zhí)行程序,通過這種方式統(tǒng)一的編譯環(huán)境。
幾乎所有的Rancher項目都是基于Dapper來編譯的,隨意打開一個項目比如rancher-dns就可以看到 Dockerfile.dapper 文件:
DAPPER_SOURCE 指定了容器內(nèi)的源碼路徑
DAPPER_OUTPUT 指定了編譯后的輸出路徑,bin dist 目錄會自動在項目根目錄下創(chuàng)建
DAPPER_DOCKER_SOCKET 設(shè)置為True相當于docker run -v /var/run/docker.sock:/var/run/docker.sock ...
DAPPER_ENV 相當于docker run -e TAG -e REPO ...
有一點需要注意的是,目前Dapper裝載源碼有兩種方式bind和cp,bind就是直接mount本地的源碼路徑,但是如果使用remote docker daemon方式那就得使用cp模式了。
Golang項目標準化工具 go-skel
項目地址:https://github.com/rancher/go-skel
介紹了包管理工具和打包編譯工具,如果我們在創(chuàng)建一個golang項目時能把這兩個工具整合起來一起使用,那就太贊了。go-skel就是提供了這樣一個便利,我們直接來demo一下。
clone一份go-skel的源碼,創(chuàng)建一個rancher-tour(./skel.sh rancher-tour)的項目:
執(zhí)行完畢后,會創(chuàng)建一個標準的項目,包含了dapper和trash這兩個工具,同時定義了一份Makefile,我們可以通過make命令來簡化操作:
比如我們要執(zhí)行一個ci操作,那就可以直接運行 make ci,自動運行單元測試,并在bin目錄下生成最終的可執(zhí)行程序:
標準項目已經(jīng)創(chuàng)建了一些初始化代碼,集成了 github.com/urfave/cli ,所以我們可以執(zhí)行執(zhí)行rancher-tour:
微服務(wù)輔助小工具 Giddyup
項目地址:https://github.com/cloudnautique/giddyup
一個傳統(tǒng)的服務(wù)在容器化的過程中,通常我們會將其拆分成多個微服務(wù),充分展現(xiàn)每個容器只做好一件事情這樣的哲學(xué)。那么就會出現(xiàn)我們在Rancher中看到的sidekick容器,數(shù)據(jù)卷容器,專門負責更新配置信息的容器等等。
實際應(yīng)用中我們會遇到一些問題,比如這些微服務(wù)容器的啟動是無序的,無序啟動會導(dǎo)致微服務(wù)之間可能出現(xiàn)連接失敗,進而導(dǎo)致整個服務(wù)不可用;再比如我們?nèi)绾蝸砼卸ㄒ蕾嚨奈⒎?wù)已經(jīng)正常啟動,這可能需要一個health check的服務(wù)端口。giddyup就是簡化這種微服務(wù)檢查工作的利器,它都能做些什么呢:
Get connection strings from DNS or Rancher Metadata.
Determine if your container is the leader in the service.
Proxy traffic to the leader
Wait for service to have the desired scale.
Get the scale of the service
Get Managed-IP of the container (/self/container/primary_ip)
我們還是創(chuàng)建stack并在其中創(chuàng)建service來體驗一下giddyup的部分功能,service中包含兩個容器分別為主容器main和sidekick容器conf,他們共享網(wǎng)絡(luò)棧:
我們可以在conf內(nèi)啟動giddyup health,會啟動一個監(jiān)聽1620端口的http服務(wù),服務(wù)路徑是/ping:
此時我們可以在其他服務(wù)的容器內(nèi)查看這個服務(wù) health port的健康狀態(tài),通過giddyup ip stringify獲取服務(wù)地址,使用giddyup probe可以查看相關(guān)狀態(tài):
可以看到probe返回了OK的信息,說明giddy/main的health port是正常的,如果我們把giddyup health的端口停掉,giddyup probe會如何?
除了開啟health port功能外,還可以sleep等待service內(nèi)所有容器都啟動,比如剛才的service,我在main上做wait操作,同時在UI上對service擴容,可以看到為了等待完成擴容差不多sleep了3s:
更多功能可以去看一看giddyup項目的README文檔,另外也可以看看catalog中的一些項目是怎么使用giddyup的,參考:https://github.com/rancher/catalog-dockerfiles
Rancher CLI 工具
項目地址: https://github.com/rancher/cli
現(xiàn)在我們管理Rancher的方式包括UI、API方式,為了能夠和其他工具更好的融合Rancher開發(fā)了CLI工具,可以非常輕量級的嵌入到其他工具中。CLI將會在Rancher 1.2-pre2版本中正式放出,兼容性上目前來看沒有支持老版本的計劃,所以在老版本上出現(xiàn)各種問題也是正常的。
直接在 https://github.com/rancher/cli/releases 下載最新版本即可試用,將rancher cli放到PATH中,正式使用前需要初始化:
然后便可以執(zhí)行各種犀利的操作,比如針對某個service進行scale操作,這比之前需要用rancher-compose cli要簡潔的多:
再比如可以實時監(jiān)聽rancher events,可以即時查看Rancher中正在發(fā)生的各種任務(wù),對協(xié)助排查問題,分析系統(tǒng)運行情況都非常有用:
后語
小工具中內(nèi)含著大智慧,工具文化是工程師Team高效協(xié)作的重要標志,高質(zhì)量的工具能讓項目開發(fā)有事半功倍之效,其背后也蘊藏著深厚的團隊文化理念,就是不計項目KPI利用個人業(yè)余時間為團隊做貢獻的和諧氛圍。其實國內(nèi)很多互聯(lián)網(wǎng)公司都是有專門設(shè)立工具開發(fā)工程師的崗位,對工具帶來的生產(chǎn)效率提升,其重視程度不言而喻!
原文來源:Rancher Labs
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)站題目:扒一扒Rancher社區(qū)中的小工具-創(chuàng)新互聯(lián)
URL分享:http://www.rwnh.cn/article42/dopsec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、品牌網(wǎng)站制作、動態(tài)網(wǎng)站、服務(wù)器托管、標簽優(yōu)化、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)