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