8個(gè)DevOps自動(dòng)化工具,幫你做出持續(xù)改進(jìn)
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 簡化了容器化應(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 簡化了集群的容器管理。截至 2018 年初,Rancher 只用來編配 Kubernetes 集群。
3. Spinnaker
隨著公司的發(fā)展,技術(shù)、工具以及管理這些工具的人員的數(shù)量都有了巨大的增長,這常常會(huì)導(dǎo)致公司內(nèi)部出現(xiàn)混亂,增加了技術(shù)棧的復(fù)雜性和碎片化程度。對(duì)于小公司來說,碎片化的持續(xù)交付過程或許沒有什么問題,但隨著公司的增長,維護(hù)和理解這個(gè)過程就變得越來越具有挑戰(zhàn)性。新來的工程師可能需要很長時(shí)間才能理解、發(fā)現(xiàn)和整理部署所需的所有工具和流程,即使是為了做出一個(gè)最簡單的變更。
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ì)提供了所有必需的工具,幫助他們有效地處理不斷增長的二進(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é)作;
- 為了節(jié)省時(shí)間,一遍又一遍地尋找合適的依賴項(xiàng)。
雖然 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)師簡化 Kubernetes 應(yīng)用程序的安裝和管理工作。
Helm 使用了一種叫作 chart 的打包格式。chart 是一組描述了一組相關(guān)的 Kubernetes 可用資源的文件。一個(gè) chart 可以用來部署一些簡單的東西。
從架構(gòu)方面看,Helm 有兩個(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)行回滾。在已發(fā)布的 Helm 3 中,Tiller 被移除掉了。
7. Sumo Logic
Sumo Logic 平臺(tái)幫助企業(yè)通過分析和預(yù)測來做出基于數(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è)簡單的儀表板,通過易于理解的圖表、表格和其他可視元素為用戶提供操作見解。全球有很多公司都使用 Sumo Logic 來構(gòu)建、運(yùn)行和保護(hù)應(yīng)用程序和云基礎(chǔ)設(shè)施,讓 Sumo Logic 成為行業(yè)中不可或缺的 DevOps 工具。
Sumo Logic 的預(yù)測分析功能非常強(qiáng)大,可以預(yù)測異常行為和 KPI 違規(guī),并發(fā)送警告,提高了 DevOps 效率,并有助于修復(fù)所有的問題。
8. Slack
團(tuán)隊(duì)成員之間發(fā)送即時(shí)消息、反饋和知識(shí)共享非常重要。在實(shí)施 DevOps 時(shí),信息的流動(dòng)、實(shí)時(shí)交互和高度協(xié)作最為重要。難道你不認(rèn)為 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)在這方面做了大量的工作。