陸靜
DevOps,這個(gè)詞似乎是過去幾年的一個(gè)流行語,是IT招聘人員、軟件公司和代理機(jī)構(gòu)在互聯(lián)網(wǎng)上搜索得最多的一個(gè)詞。專業(yè)的支持者認(rèn)為這與工具或自動(dòng)化無關(guān),但他們忽略了一點(diǎn),即工具實(shí)際上承載了DevOps文化。我們都認(rèn)同這樣的說法,即DevOps不只與工具有關(guān),甚至不只與一個(gè)單獨(dú)的角色有關(guān),DevOps實(shí)際上是人、過程和工具的結(jié)合體。但是,一個(gè)組織想要實(shí)施DevOps,工具在其中扮演了重要的角色。
這里將介紹8個(gè)DevOps自動(dòng)化工具,每一家公司都需要依靠它們來獲得持續(xù)改進(jìn)。
1. Kubernetes
Kubernetes,容器編排平臺(tái)事實(shí)上的標(biāo)準(zhǔn)。它是一個(gè)非常流行的開源平臺(tái),谷歌于2014年將其開源。Kubernetes用來管理由多個(gè)自包含運(yùn)行時(shí)(也就是容器)組成的應(yīng)用程序。容器近來正在取代虛擬機(jī)成為發(fā)布應(yīng)用程序的標(biāo)準(zhǔn)模型。
Kubernetes集群有一個(gè)主節(jié)點(diǎn)和多個(gè)工作節(jié)點(diǎn),每個(gè)工作節(jié)點(diǎn)可以處理多個(gè)Pod。Pod是由多個(gè)容器組成的工作單元。開發(fā)人員可以從Pod開始,準(zhǔn)備好Pod之后,下一步是向主節(jié)點(diǎn)指定Pod的定義以及希望部署多少個(gè)Pod,剩下的事情由Kubernetes負(fù)責(zé)。它會(huì)獲取Pod,并將它們部署到工作節(jié)點(diǎn)上。如果有工作節(jié)點(diǎn)發(fā)生宕機(jī),Kubernetes會(huì)自動(dòng)在可用的其他工作節(jié)點(diǎn)上啟動(dòng)新Pod。Kubernetes簡(jiǎn)化了容器化應(yīng)用程序的管理過程,讓構(gòu)建和添加更多的特性以及通過改進(jìn)應(yīng)用程序來獲得更高的客戶滿意度變得輕而易舉。
2. Rancher
Rancher是一個(gè)容器管理平臺(tái),可以輕松地部署容器環(huán)境(包括Kubernetes,Apache Mesos,Docker Swarm完整發(fā)行版),并讓云端或基礎(chǔ)設(shè)施平臺(tái)上的容器集群操作變得更容易。Rancher 2.0是一個(gè)用于管理Kubernetes集群的多集群管理工具,它提供的用戶界面可以幫助Kubernetes團(tuán)隊(duì)提高效率。如果希望獲得更高的高可用性和平臺(tái)可靠性,一般都會(huì)使用集群。集群將服務(wù)器組合成單個(gè)易于管理的計(jì)算能力集合,并且通常會(huì)使用容器化方法。
讓開發(fā)人員自己來管理這些東西是很困難的,幸運(yùn)的是,Rancher簡(jiǎn)化了集群的容器管理,截至2018年初,Rancher只用來編排Kubernetes集群。
3. Spinnaker
隨著公司的發(fā)展,技術(shù)、工具以及管理這些工具的人員數(shù)量有了巨大的增長(zhǎng),這常常會(huì)導(dǎo)致公司內(nèi)部出現(xiàn)混亂,增加了技術(shù)棧的復(fù)雜性和碎片化程度。對(duì)于小公司來說,碎片化的持續(xù)交付過程或許沒有什么問題,但隨著公司的增長(zhǎng),維護(hù)和理解這個(gè)過程就變得越來越具有挑戰(zhàn)性。新來的工程師可能需要很長(zhǎng)時(shí)間才能理解、發(fā)現(xiàn)和整理部署所需的所有工具和流程,即使是為了做出一個(gè)最簡(jiǎn)單的變更。
Netflix推出的Spinnaker就是為了解決這個(gè)問題。它是一個(gè)通用可擴(kuò)展的工具,為用戶提供了構(gòu)建塊,用以開發(fā)自定義持續(xù)交付管道,并進(jìn)行有效擴(kuò)展。
Spinnaker被很多現(xiàn)代軟件公司視為理想的持續(xù)交付工具,它為開發(fā)人員提供了軟件交付過程的可視性和控制能力,幫助他們更好地了解如何交付軟件。
4. Artifactory
大多數(shù)開發(fā)人員會(huì)通過各種方式訪問互聯(lián)網(wǎng),并從外部存儲(chǔ)庫獲取依賴項(xiàng)。這嚴(yán)重影響了開發(fā)團(tuán)隊(duì)之間的溝通,因?yàn)槲覀儫o法跟蹤什么樣的依賴包或版本被引入到公司的軟件環(huán)境中。Artifactory是一個(gè)二進(jìn)制存儲(chǔ)庫管理器,可以用來存儲(chǔ)二進(jìn)制文件。它就像是二進(jìn)制版本的Git。作為一個(gè)DevOps工具,Artifactory的主要目標(biāo)是幫助開發(fā)人員管理第三方依賴包,從而提供持續(xù)集成、持續(xù)交付和持續(xù)部署能力,幫助企業(yè)實(shí)現(xiàn)DevOps。
財(cái)富500強(qiáng)公司,如谷歌、亞馬遜、思科等,它們將Artifact Repository Manager作為通用的依賴包儲(chǔ)庫管理器,可以支持所有依賴包,不管它們用什么語言或工具開發(fā)的。Artifactory提供了一個(gè)自動(dòng)化的端到端解決方案,方便跟蹤開發(fā)環(huán)境和生產(chǎn)環(huán)境的依賴包,促進(jìn)DevOps團(tuán)隊(duì)的協(xié)作,并毫不費(fèi)力地對(duì)任務(wù)進(jìn)行自動(dòng)化。
Artifactory為DevOps團(tuán)隊(duì)提供了所有必需的工具,幫助他們有效處理不斷增長(zhǎng)的二進(jìn)制文件、環(huán)境和分布式站點(diǎn),從而確保應(yīng)用程序開發(fā)工作流程的順暢。Artifactory不需要為相同文件創(chuàng)建不同副本,幫助開發(fā)人員節(jié)省了大量時(shí)間。二進(jìn)制文件都只有一個(gè)副本存儲(chǔ)在文件系統(tǒng)中,減少了團(tuán)隊(duì)內(nèi)部和團(tuán)隊(duì)之間的混亂和干擾。
那么,為什么應(yīng)該使用依賴包存儲(chǔ)庫:
加快開發(fā)速度;
提高開發(fā)人員的生產(chǎn)力;
更快地發(fā)布,自動(dòng)化開發(fā)管道;
無縫的團(tuán)隊(duì)協(xié)作。
雖然Artifactory的主要目標(biāo)是提供一種整潔和安全的方法來管理第三方依賴包,但也可以用來存儲(chǔ)開發(fā)團(tuán)隊(duì)自己生成的軟件包,對(duì)它們打標(biāo)簽、版本化,并適時(shí)發(fā)布,讓他們清楚地知道打包了什么東西。
5. Linkerd
Linkerd是一個(gè)開源的輕量級(jí)服務(wù)網(wǎng)絡(luò),由Buoyant公司主導(dǎo)開發(fā)。很多成功的大公司,如PayPal,Expedia等,將它們用在生產(chǎn)環(huán)境中。它為云原生應(yīng)用程序帶來更高的可靠性、安全性和可視性。Buoyant在2016年首次提出了服務(wù)網(wǎng)格這個(gè)術(shù)語,所以Linkerd算得上是服務(wù)網(wǎng)格的鼻祖。
Linkerd在無需微服務(wù)做出任何代碼變更的情況下,為在集群中運(yùn)行的微服務(wù)提供可觀察性、通信方式以及其他細(xì)微的方面。
服務(wù)網(wǎng)格是一個(gè)專門的基礎(chǔ)設(shè)施層,基本功能是用來控制、管理和建立服務(wù)之間的聯(lián)系,讓應(yīng)用程序的各個(gè)部分相互通信,使微服務(wù)的運(yùn)行更加高效。服務(wù)網(wǎng)格通常被用在云原生應(yīng)用程序、容器以及微服務(wù)中,快速打包鏡像并交付高質(zhì)量的軟件。
Linkerd在平臺(tái)層而不是應(yīng)用程序?qū)?,為SRE團(tuán)隊(duì)提供可見性、可靠性和安全性以及頂級(jí)的服務(wù)指標(biāo)。
6. Helm
Helm主要用來幫助Kubernetes架構(gòu)師簡(jiǎn)化Kubernetes應(yīng)用程序的安裝和管理工作。
Helm使用了一種叫作chart的打包格式。chart是一組描述了一組相關(guān)Kubernetes可用資源的文件。一個(gè)chart可以用來部署一些簡(jiǎn)單的東西。
從架構(gòu)方面看,Helm有2個(gè)端,一個(gè)是客戶端,即Helm命令行工具,我們稱之為Helm CLI;另一個(gè)是服務(wù)端,即 Tiller。Helm CLI是運(yùn)行在本地機(jī)器上的命令,它使用模板引擎根據(jù)Helm定義的源模板生成易于理解的Kubernetes YAML。在生成YAML之后,它會(huì)將請(qǐng)求發(fā)送到運(yùn)行在Kubernetes集群中的Tiller。接下來,Tiller在Kubernetes集群中執(zhí)行更新,確保它是最新的并被正確發(fā)布,然后添加到歷史記錄中,在后續(xù)可以根據(jù)需要進(jìn)行回滾。
7. Sumo Logic
Sumo Logic平臺(tái)幫助企業(yè)通過分析和預(yù)測(cè)來做出基于數(shù)據(jù)驅(qū)動(dòng)的決策,減少用于調(diào)研安全性和運(yùn)維問題的時(shí)間,這樣就可以根據(jù)優(yōu)先級(jí)騰出資源去做更為重要的事項(xiàng)。
Sumo Logic將計(jì)算機(jī)生成的數(shù)據(jù)轉(zhuǎn)換成一個(gè)簡(jiǎn)單的儀表板,通過易于理解的圖表、表格和其他可視元素為用戶提供操作見解。全球有很多公司都使用Sumo Logic來構(gòu)建、運(yùn)行和保護(hù)應(yīng)用程序和云基礎(chǔ)設(shè)施,讓Sumo Logic成為行業(yè)中不可或缺的DevOps工具。
Sumo Logic的預(yù)測(cè)分析功能非常強(qiáng)大,可以預(yù)測(cè)異常行為和KPI違規(guī),并發(fā)送警告,提高了DevOps效率,并有助于修復(fù)所有的問題。
8. Slack
團(tuán)隊(duì)成員之間發(fā)送即時(shí)消息、反饋和知識(shí)共享非常重要。在實(shí)施DevOps時(shí),信息的流動(dòng)、實(shí)時(shí)交互和高度協(xié)作最為重要,Slack正是為此而生。金融公司Capital One認(rèn)為Slack是最為重要的DevOps工具。Capital One在2016年年中部署了Slack,并很快成為其IT部門的首選工具。
現(xiàn)在可以通過Slack自動(dòng)化大量的手動(dòng)和重復(fù)性的開發(fā)任務(wù),它的消息通知機(jī)制可以很容易地讓用戶看到實(shí)時(shí)發(fā)生的事情。正當(dāng)很多大公司還在尋找以團(tuán)隊(duì)為中心的生產(chǎn)力工具時(shí),Slack已經(jīng)在這方面做了大量的工作。