隨着2021年的結束,我們在DevOps.com想要選出今年最受歡迎的文章。以下是我們“2021年最佳”系列中的第8篇。
DevOps不僅僅是一種文化轉變——它需要偉大的工具來實現。下面,我們整理了一些目前最受歡迎的DevOps工具。但是,如果把大量資金投入到花哨的SaaS解決方案中,很快就會吞噬雲計算的預算。這些DevOps工具都是開源的,支持從容器構建和編配到微服務網絡、配置管理、CI/CD自動化、全棧監控等一切功能。以下是我們最喜歡的2021年DevOps開源工具。
1、kubernetes
隨着微服務和基於容器的軟件的無處不在,Kubernetes成為今年DevOps開源工具的冠軍也就不足為奇了。Kubernetes在2020年的使用率上升了48%,被用來協調容器。Kubernetes可以在生產環境中自動部署、維護和擴展容器組,而不是手動發布微服務。Kubernetes有時以k8的形式編寫,由雲本地計算基金會(Cloud-Native Computing Foundation, CNCF)托管。
2、Docker
Docker軟件是一個免費的開源平台,用於構建、發布和運行一個輕量級的容器。容器將程序運行所需的二進制文件、庫、配置文件和依賴項打包起來。在過去的十年中,容器在敏捷開發中扮演了關鍵角色,Docker容器引領了這場革命。其核心是Docker引擎。Docker Hub也是一個很好的資源,用於查找和共享預先打包的容器功能。此外,為了堵住容器漏洞,使用Docker Bench或Anchore等開源容器審計工具可能會有幫助。
3、Istio
微服務是一種便捷的開發風格,但它們帶來了新的開發和架構問題。也就是說,我們如何在所有服務中一致地應用網絡策略,如安全性、加密、可觀察性和遙測元素?服務網格是一個答案。服務網格在每個容器旁邊放置一個邊車代理,並將這些網絡功能抽象到控制平面。Istio就是這樣一個被廣泛采用的開源服務網格。Istio建立在特使的基礎上,向插件和可擴展性選項開放。我們還應該提到Linkerd和Kuma,它們是可行的開源服務網格替代品。
4、GitHub Actions
GitHub可以說是這個星球上最受歡迎的源代碼控制和軟件協作平台。基於Git的GitHub平台本身在過去的幾年里經歷了一些重大的更新。最值得注意的是GitHub的Actions功能。GitHub Actions使托管在GitHub上的軟件包能夠接受輸入並觸發其他進程。這可以幫助在GitHub中自動化一些很酷的DevOps工作流程,比如代碼審查、分支管理或CI/CD流程——這里的可能性組合是無窮無盡的。從本質上說,GitHub Actions是在GitHub存儲庫中托管的YAML文件,它利用了GitHub的webhook。雖然這更多的是一個特性而不是一個開源工具,但是我們覺得在這里包含它是很重要的。操作對公共存儲庫是免費的,限制為100個操作。
5、Jenkins
DevOps哲學的一個重要部分是尋找方法來自動化和更有效地部署新的迭代。這個目標的一部分是創建一個流線型的持續集成和持續交付(CI/CD)管道。Jenkins是一個開源自動化服務器,擁有數百個插件,可以自動化軟件項目的構建、部署和測試。雖然GitHub Actions在理論上可以在未來取代CI服務器,但是像Jenkins、CircleCI、TravisCI和GitLab Community Edition這樣的CI工具仍然是許多DevOps團隊的首選。
6、Prometheus
度量和警報系統對於站點可靠性工程師可視化應用程序和對問題作出反應至關重要。Prometheus是一個畢業的CNCF項目,它是一個廣受歡迎的開源監控解決方案。Prometheus服務器通過抓取HTTP端點來收集時間序列指標,並生成與這些數據交互的系統,提供深度查詢、可視化、存儲和其他功能。
7、Ansible
Ansible全是關於自動化的。Ansible是一個由Red Hat贊助的開源項目,可以用來自動化雲配置、網絡、部署、配置管理和其他任務。Ansible有一個簡單而有效的架構,組裝起來相對容易——你所需要的只是一個文本編輯器和命令行。您可以在文本文檔中描述您的基礎架構,並在劇本中組織您想要的狀態。作為一個實際的例子,請查看OpenIO如何使用Ansible。“Ansible是我們部署OpenIO核心的標准工具,也是我們的web、OIO-FS和所有即將推出的選項的標准工具,”Cédric Delgehier, OpenIO的Ops寫道。
8、Chef
Chef是另一個實現配置管理自動化的基礎設施即代碼(IaC)解決方案。Chef使用Ruby自動化服務器配置,並與所有主要的雲服務提供商(csp)合作良好。這在創建和供應大量機器時非常有用。與此列表中的其他自動化工具一樣,用戶以聲明式格式描述其組件和狀態。在《主廚》中,這些被稱為“食譜”,可以歸類為“烹飪書”。你不能因為《主廚》沒有主題就批評他!
9、Terraform
Terraform是另一個IaC工具,可以使用配置文件啟動構建、版本控制和進一步的自動化。正如GitHub上所描述的那樣:“Terraform是一個安全有效地構建、更改和版本化基礎設施的工具。”Terraform遵循用戶使用高級語法創建的“執行計划”。Terraform的一個獨特之處在於它強調版本控制——它允許你對你的服務藍圖進行版本控制,就像你對你的軟件一樣。
10、JAMStack
正如我之前提到的,JAMStack結合了JavaScript、api和markdown來構建基於web的應用程序。雖然JAMStack是一種“無頭開發”方法,而不是單一的開放源碼工具,但它經常使用開放源碼組件構建。例如,JAMStack經常利用開源無頭內容管理系統,如Ghost、Strapi和/或Netlify CMS。
11. ELK Stack
ELK Stack是由Elasticsearch、Logstash和Kibana三個開源項目組成的聯盟。使用這三個組件,開發人員可以從任何來源獲取和記錄數據,並創建有用的可視化。這種集中的日志記錄是通過NoSQL數據庫實現的,通過Elasticsearch進行存儲,通過Logstash進行處理和數據收集,通過Kibana進行可視化。增加可見性對於數據分析至關重要,並有助於識別錯誤,從而減少平均恢復時間(MTTR)。
總結
編程不僅僅是交付高質量的代碼,它還涉及到高效的執行。這種全面改進運營的動力實際上是將運營投入到每件事情中。有了強大的開源DevOps工具,這意味着越來越多的架構師可以在他們的部署模型中采用DevOps方法。
DevOps作為一種實踐,以及它的底層技術,一直在發展。在2021年,人們將投入大量精力來討論引入微服務開發風格的影響。因此,我們注意到容器協調器和服務網格的成熟。為實現自動化的構建和發布管道,將基礎設施藍圖化為代碼並創建自動化的、可重復的配置是另一個必須具備的條件。更不用說,許多無代碼和低代碼平台正在向非程序員開放DevOps功能,盡管是從專有的角度來看。
值得注意的是,一些流行的開源DevOps工具(如Docker和Chef)已經被收購,模糊了它們的業務和開源根源之間的界限。當涉及到開源工具時,采用具有代表不同涉眾的可靠社區支持的與供應商無關的工具是一個很好的實踐。這將幫助您的項目經得起未來的考驗。即使開源是“免費的”,用戶也必須確保它的好處超過上線時間和自托管的運營開銷。
DevOps工具有助於實現軟件部署的自動化。在這里,我們試圖列出一些最令人興奮的工具來幫助自動化這個過程。當然,DevOps領域出現了許多新工具,而我們幾乎還沒有觸及到表面。你有上面沒有提到的最喜歡的DevOps工具嗎?
請在下面的評論中告訴我!