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