2018年值得推薦的10個開源DevOps工具!
開發(fā)和運營的整合為軟件開發(fā)帶來了新的視角。如果您是DevOps實踐的新手,或者希望改進(jìn)當(dāng)前流程,那么了解哪種工具最適合您的團(tuán)隊可能是一項挑戰(zhàn)。
我們將幾個開源工具列出來,這里面包括從自動構(gòu)建的工具到應(yīng)用程序性能監(jiān)控平臺 ,以幫助您做出明智的決定:哪些開源工具會比較適合您的構(gòu)建情況?,F(xiàn)在來看一下吧。
1. Gradle
DevOps工具棧需要一個可靠的構(gòu)建工具。多年來,都是Apache Ant和Maven一直主導(dǎo)著自動化構(gòu)建工具市場,但Gradle 在2009年出現(xiàn)了,其受歡迎程度自那時起飛速增長。
Gradle是一個非常通用的工具,它允許你使用Java,C ++,Python或其他語言編寫代碼。Gradle還受到Netbeans,Eclipse和IntelliJ IDEA等流行IDE的支持,谷歌也會選擇它作為Android Studio 的官方構(gòu)建工具 。
雖然Maven和Ant使用XML進(jìn)行配置,但Gradle引入了基于Groovy的DSL來描述構(gòu)建。2016年,Gradle團(tuán)隊還發(fā)布了基于Kotlin的DSL ,現(xiàn)在您也可以在Kotlin中編寫構(gòu)建腳本。這意味著Gradle確實借鑒了一些(前者)學(xué)習(xí)經(jīng)驗,如果您以前使用過Groovy,Kotlin或其他JVM語言,是***不過的了。
此外,Gradle使用Maven的存儲庫格式,因此如果您之前有使用Maven的經(jīng)驗,那么對于依賴關(guān)系管理將會很熟悉。您還可以將Ant構(gòu)建 導(dǎo)入Gradle。
關(guān)于Gradle的最棒的功能是增量構(gòu)建 ,因為它們節(jié)省了大量的編譯時間。根據(jù)Gradle的性能測量結(jié)果 ,它比Maven快100倍。
有部分是因為增量的原因,還有部分原因是由于Gradle的緩存構(gòu)建和守護(hù)進(jìn)程 。緩存重復(fù)輸出任務(wù),守護(hù)進(jìn)程把構(gòu)建信息放在了內(nèi)存當(dāng)中。
總而言之,Gradle允許更快的運輸,并提供了許多配置可能性。
2.Git
Git 是***的DevOps工具之一,廣泛應(yīng)用于整個軟件行業(yè)。它是一個分布式SCM(源代碼管理)工具,深受遠(yuǎn)程團(tuán)隊和開源貢獻(xiàn)者的喜愛。Git允許你跟蹤開發(fā)工作的進(jìn)度。您可以保存源代碼的不同版本,并在必要時返回到以前的版本。你可以創(chuàng)建獨立的分支,在上線前將新特性合并到分支。
要將Git與您的DevOps工作流程集成,您需要一個在線代碼存儲服務(wù)來托管您團(tuán)隊的工作內(nèi)容,目前兩個***的在線代碼托管服務(wù)是GitHub和Bitbucket。GitHub更為知名,但Bitbucket為小型團(tuán)隊(最多五個團(tuán)隊成員)提供免費***制的私人存儲空間。使用GitHub,您只能免費訪問公共存儲空間 - 這對許多項目來說仍然是一個很好的解決方案。
GitHub和Bitbucket都有很棒的集成。例如,您可以將它們與Slack集成,以便每當(dāng)有人進(jìn)行新的提交時,團(tuán)隊中的每個人都會收到通知。
3.Jenkins
Jenkins 是許多軟件開發(fā)團(tuán)隊的***DevOps自動化工具。它是一個開源CI / CD服務(wù)器,可以在自動化交付流程的不同階段使用。Jenkins受歡迎的主要原因是其巨大的插件生態(tài)系統(tǒng)。目前,它提供了1000多個插件 ,集成了幾乎所有DevOps工具,從Docker到Puppet。
使用Jenkins,您可以根據(jù)自己的需要設(shè)置和自定義CI / CD流程。我在Jenkins Docs中 找到了以下示例。這只是其中一種可能性??雌饋磉€不錯,不是嗎?
Jenkins 入門非常容易,因為它在Windows,Mac OS X和Linux上都是開箱即用的。您也可以使用Docker 輕松安裝它 。您可以通過Web界面設(shè)置和配置Jenkins服務(wù)器。如果您是初次使用的用戶,可以選擇使用一些常用插件進(jìn)行安裝。但是,您也可以創(chuàng)建自己的自定義配置。
使用Jenkins,您可以盡快迭代和部署新代碼。它還可以做到讓您衡量流程管道中每個步驟是否成功。也有人抱怨Jenkins 用戶界面“丑陋”并且不直觀。
4、Bamboo
Bamboo是Atlassian的CI / CD服務(wù)器解決方案,具有許多與Jenkins類似的功能。兩者都是流行的DevOps工具,可以在自動化交付流程的不同階段使用。然而,Jenkins是開源的,但Bamboo得按需收費。所以,***問題應(yīng)該是:如果有免費替代方案,是否值得選擇專有軟件?這就得取決于您的預(yù)算和目標(biāo)了。
Bamboo有許多預(yù)先構(gòu)建的功能,這些必須在Jenkins中手動設(shè)置。這也是Bamboo擁有較少插件的原因(與Jenkins的1000+相比,大約100個)。實際上,你不需要那么多的Bamboo插件,因為它基本都是開箱即用。
Bamboo與其他Atlassian產(chǎn)品都是無縫集成,比如Jira和Bitbucket。您還可以訪問內(nèi)置的Git和Mercurial分支工作流程和測試環(huán)境。一句話概括,Bamboo可以為您節(jié)省大量的配置時間。它帶有更直觀的用戶界面,提醒工具,自動完成功能和其他便利功能。
5. Docker
Docker 是2018年的頭號容器平臺。它也被認(rèn)為是最重要的DevOps工具之一。Docker在IT科技圈廣受歡迎,主要是因為它使分布式開發(fā)成為可能,并能使應(yīng)用程序部署自動化。它使應(yīng)用程序部署過程變得更便攜更安全。Docke應(yīng)用程序也獨立于操作系統(tǒng)和平臺。您可以使用Docker容器而不是VirtualBox等虛擬機。
我最喜歡Docker的是你不必?fù)?dān)心依賴關(guān)系管理。您可以將所有依賴項打包在應(yīng)用程序的容器中,并將整個事物作為獨立單元發(fā)送。然后可以在任何計算機或平臺上運行該應(yīng)用程序。
Docker也與Jenkins 和Bamboo 集成。如果將其與其中一個自動化服務(wù)器一起使用,則可以進(jìn)一步改善交付工作流程。此外,Docker也非常適合云計算。近年來,AWS和Google Cloud等所有主要云廠商都開始支持Docker。因此,如果您計劃進(jìn)行云遷移,Docker會使這個流程簡化一些。
6. Kubernetes
今年,Kubernetes 也是熱點。它是一個容器編排平臺,將Docker化提升到了一個新的水平,它適用于Docker或其任何替代品。Kubernetes是近幾年才出現(xiàn)在大眾視野的; 它的***個版本于2015年問世。由幾位Google工程師創(chuàng)建,他們希望找到一個大規(guī)模管理容器的解決方案。使用Kubernetes,您可以將容器分組為邏輯單元。
如果您只有幾個容器,則可能不需要容器編排平臺。但是,當(dāng)您達(dá)到一定程度的復(fù)雜性并需要擴展資源時,這是下一個合乎邏輯的步驟。Kubernetes允許您自動化管理數(shù)百個容器。
使用Kubernetes,您無需將容器化應(yīng)用程序綁定到一臺計算機上。相反,您可以將其部署到計算機群集。Kubernetes自動化整個集群中容器的分發(fā)和調(diào)度。
Kubernetes集群由一個主節(jié)點和幾個工作節(jié)點組成。主節(jié)點實現(xiàn)預(yù)定義的規(guī)則,并將容器部署到工作節(jié)點。Kubernetes還會意識到某個工作節(jié)點在何時關(guān)閉并在必要時重新分配容器。
7、Puppet Enterprise
Puppet Enterprise是一個跨平臺的配置管理平臺。 它允許您以代碼的形式管理基礎(chǔ)架構(gòu)。 由于它可以自動化管理基礎(chǔ)架構(gòu),因此您可以更快,更安全地交付軟件。 Puppet還為開發(fā)人員提供了一個用于小型項目的開源工具。 但是,如果您正在處理更大的基礎(chǔ)架構(gòu),您可能會發(fā)現(xiàn)Puppet Enterprise的額外功能,例如:
●實時報告
●基于角色的訪問控制
●節(jié)點管理
使用Puppet Enterprise,您可以管理多個團(tuán)隊和數(shù)千個資源。 它可以自動了解基礎(chǔ)架構(gòu)中的關(guān)系。 并依賴其中關(guān)系巧妙地處理故障。 當(dāng)遇到配置失敗時,它會跳過所有相關(guān)配置。 關(guān)于Puppet值得一提的事情是它有超過5,000個模塊,并有許多流行的DevOps工具集成。
8、Ansible
Ansible是一個配置管理工具,類似于Puppet和Chef。 您可以使用它來配置基礎(chǔ)架構(gòu)并自動部署。 與其他類似的DevOps工具相比,它的主要賣點是簡單易用。 Ansible遵循與Puppet相同的基礎(chǔ)設(shè)施代碼(IAC)方法。 但是,它使用超級簡單的YAML語法。 使用Ansible,因為Puppet具有其聲明式語言,所以你可以在YAML中定義任務(wù)
無Agent架構(gòu)是Ansible另一個經(jīng)常提到的特色。 由于沒有守護(hù)進(jìn)程或Agent在后臺運行,因此Ansible是一種安全且輕量級的配置管理自動化解決方案。 與Puppet類似,Ansible也有幾個模塊。
9. Nagios
Nagios 是***的免費和開源DevOps監(jiān)控工具之一。它可以監(jiān)控基礎(chǔ)結(jié)構(gòu)關(guān)系以便可以找到并修復(fù)問題。Nagios可以記錄任務(wù),事件中斷和事件故障。您還可以借助Nagios的圖表和報告密切關(guān)注趨勢。這樣,您可以預(yù)測中斷和錯誤并檢測安全威脅。
盡管有許多用于基礎(chǔ)架構(gòu)監(jiān)控的DevOps工具,但Nagios因其豐富的插件生態(tài)系統(tǒng) 而脫穎而出。由于Nagios在IT圈也已存在了一段時間(自2002年以來),它周圍有一個龐大的社區(qū)。除了插件,他們還可以免費制作附加組件,教程,翻譯和其他好東西。
Nagios提供四種開源監(jiān)控解決方案:
Nagios Core
Nagios XI
Nagios Log Server
Nagios Fusion
Nagios Core是一個命令行工具,具有所有基本功能。您還可以選擇附帶基于Web的GUI和監(jiān)視向?qū)У腘agios XI。
Nagios Log Server允許您搜索日志數(shù)據(jù)并設(shè)置有關(guān)潛在威脅的警報。而且,Nagios Fusion允許您同時監(jiān)控多個網(wǎng)絡(luò)。
總的來說,Nagios為DevOps團(tuán)隊提供了基礎(chǔ)架構(gòu)監(jiān)控解決方案。但是,設(shè)置Nagios并使其與您的環(huán)境兼容可能需要一段時間。
10、Raygun
Raygun是***的監(jiān)控報告平臺。APM是其***產(chǎn)品。 Raygun的DevOps工具可幫助您診斷性能問題并將其追溯到確切的代碼,函數(shù)或API調(diào)用行。 APM工具也非常適合Raygun故障管理流程。例如,它會自動識別您的***優(yōu)先級問題并自動創(chuàng)建問題。
Raygun APM可以幫助您充分利用其他DevOps工具,確保若有問題發(fā)生,您會一直收到有關(guān)錯誤問題的通知。由于它自動將錯誤鏈接回源代碼,因此Raygun通過為整個團(tuán)隊提供監(jiān)控功能來實現(xiàn)開發(fā)和操作。
找到***的DevOps工具,需要自己親自實驗和嘗試。設(shè)置和配置這些開源工具通常會需要花費更多時間,好在大多數(shù)商業(yè)DevOps工具都提供免費試用版,允許您免費測試和評估它們。
譯者介紹:劉勁輝 優(yōu)維科技高級解決方案架構(gòu)師 曾就職于阿里巴巴移動事業(yè)群,具有多年的業(yè)務(wù)運維和運維研發(fā)經(jīng)驗。曾負(fù)責(zé)開發(fā)建設(shè)基于阿里游戲中心 JWS 框架的自動化運維平臺,對 DevOps 實踐落地有豐富經(jīng)驗。