當前位置: 妍妍網 > 碼農

推薦一些企業熱門的 DevOps 工具

2024-06-11碼農

來源:InfoQ公眾號

最近一段時間,我們見證了 DevOps 技術的飛速發展。當今流行且功能強大的工具可能會成為下一年度的過時工具,甚至可能很快被另一種工具取代。如前所述,作者的目的不是透過這篇文章來評判哪些工具最受歡迎或功能最全,而是讓讀者全面了解 DevOps 工具的工作方式以及如何在軟體流程中使用它們。

什麽是 DevOps?

DevOps 是開發和 IT 運維工程師一起參與從設計到開發和生產的整個敏捷軟體開發生命周期的一種實踐。敏捷是軟體開發生命周期原則,由 17 名獨立軟體開發人員在 2001 年宣布。

我們正在透過自己的實踐和幫助別人實踐來探索更好的軟體開發方法。透過這項工作,我們開始重視:

  • 個人和互動高於流程和工具

  • 工作的軟體高於詳盡的文件

  • 客戶合作高於合約談判

  • 響應變化高於遵循計劃

  • 也就是說,盡管右側的提到的計畫有價值,但我們更重視左側的計畫。

    在自敏捷宣言發表以來的最近 20 年中,敏捷組織的理念得到了許多組織的認可,並且一些組織已采用了 Scrum 框架進行計畫管理。Sprint 的 Scrum 框架概念和以產品為中心的文化以及快速變化的競爭市場所施加的時間壓力迫使許多軟體開發人員逐步增量地交付產品。

    持續交付需要持續的整合,CI/CD 迫使生產者采用新的工具和技術,以便可以自動執行許多工,並且可以同時快速地執行多個流程。新流行的軟體開發生命周期文化使開發人員、品質保證、T 營運、產品設計師和產品所有者之間的工作更加緊密。這正是 DevOps 概念不可或缺的地方。

    除了傳統的版本控制、協作和部署工具之外,快速的生產和交付迫使軟體公司使用更多工具來滿足敏捷性期望,例如計畫管理、自動化、容器化、編排、監控、分析和視覺化技術。

    DevOps 工具

    版本控制系統

    Git

    Git 是一個開源的分布式版本控制系統。如果您需要更多資訊,請參閱

    https://git-scm.com/about。

    GitHub

    GitHub 是一個 Git 儲存庫托管服務。

    Bitbucket

    Bitbucket 是 Atlassian 提供的基於 Git 的原始碼儲存庫托管服務。

    Apache Subversion(SVN)

    Apache Subversion 是一個軟體版本號和版本控制系統,根據 Apache 授權以開源形式分發。

    Azure DevOps 伺服器

    Azure DevOps Server 是微軟公司提供的版本控制產品。

    還有更多的版本控制技術,例如 Gitlab、Mercurial、Bazaar、AWS CodeCommit、Perforce Helix Core 和 SourceForge。

    容器化

    Docker

    Docker 是執行系統級虛擬化的容器化軟體。該軟體的開發者是 Docker,Inc。該軟體首次釋出於 2013 年。它使用 Go 程式語言編寫。

    容器:容器是軟體的標準單元,它將程式碼及其所有依賴項打包,使得軟體可以從一個環境快速可靠地執行到另一個環境。

    容器映像:Docker 容器映像是一個輕巧、獨立的可執行軟體包,其中包含執行應用程式所需的一切:程式碼、執行時、系統工具、系統庫和配置。容器映像在執行時成為容器,對於 Docker 容器,映像在容器 Docker 引擎上執行時成為容器。它適用於 Linux 和基於 Windows 的應用程式。不論基礎架構如何,容器化軟體的執行方式始終相同。容器將軟體與環境隔離開來,盡管在開發和模擬階段之間存在差異,但是容器能確保軟體均可一致地工作。

    Docker 引擎:Docker 容器技術於 2013 年作為開源 Docker 引擎的方式發起。Docker 的技術之所以獨特是因為它專註於開發人員和系統操作人員的需求,將應用程式依賴項與基礎架構分離開來。

    Docker 技術可從 Docker 及其開放原始碼獲得。所有主要數據中心供應商和雲服務提供商都將其整合到雲技術中。其中,許多提供商利用 Docker 來提供基於容器的 IaaS 產品。此外,領先的開源無伺服器(serverless)框架也利用 Docker 容器技術。

    亞馬遜 ECS

    亞馬遜公司的彈性容器服務(Elastic Container Service,簡稱 ECS)是一項編排服務,它支持執行 Docker 容器以在亞馬遜 AWS 上執行容器化的應用程式。它消除了對單獨的容器編排軟體的安裝和管理需求。盡管 ESC 是免費的,但亞馬遜會對其使用的資源收費。

    AWS Fargate

    AWS Fargate 使您無需管理伺服器或集群即可執行容器。亞馬遜公司根據執行 Fargate 所使用的記憶體和虛擬 CPU 資源收取費用。

    谷歌雲平台

    谷歌雲為您提供了執行容器的不同選項。它們是谷歌 Kubernetes 引擎(用於容器群集管理)、Google 計算引擎(用於虛擬機器和 CI/CD 管道)和 Google 套用引擎靈活環境(用於完全托管的 PaaS 上的容器)。谷歌提供了可用於生產的執行容器化應用程式所需的基礎架構。谷歌根據所使用的資源收費。

    LXC

    LXC 是 Linux 容器的縮寫,Linux 容器是一種 OS 級虛擬化方法,用於執行使用單個 Linux 內核的控制主機上的多個獨立 Linux 系統(容器)。這是 GNU LGPL 授權下的開源免費工具。它可以在 GitHub 庫中找到。

    微軟 Azure

    類似於亞馬遜 ECS,對容器管理不收取任何費用,但對您使用的內容收取費用。

    Apache Mesos

    Apache Mesos 由 Apache 軟體基金會開發,是一個處理電腦集群的開源計畫。它於 2016 年首次釋出,並使用 C++ 程式語言編寫,免費使用。

    Docker-compose

    Docker Compose 用於執行多容器應用程式。Docker-compose 描述互連服務組,這些服務組共享軟體依賴關系並被編排和縮放在一起。您可以使用一個 YAML 來配置您應用程式的服務。然後,使用 docker-compose up 命令,從您的配置中建立並啟動所有服務。

    容器編排

    隨著大公司對其應用程式進行容器化,並將它們遷移到雲中,對容器編排解決方案的需求不斷增長。有許多可用的解決方案,盡管並不詳盡,下面的列表提供了一些可用的容器編排工具和服務。

    Kubernetes

    Kubernetes 是一個開源平台,它支持容器化服務的部署、擴充套件和管理的自動化。Kubernetes 最初由谷歌開發,由雲原生計算基金會(Cloud Native Computing Foundation)維護。有許多付費或免費的產品,但其中最受歡迎的是 Kubernetes。

    部署 Kubernetes 為我們提供了一個集群。Kubernetes 集群由一組工作機(稱為節點)組成,這些節點上執行容器化的套用。每個群集至少有一個工作節點。每個節點由控制平面(control plane)管理,並包含執行 Pod 所需的服務。每個 Pod 是容器的邏輯主機。工作節點托管作為應用程式工作負載元件的 Pod。控制節點管理群集中的工作節點和 Pod。控制平面和節點可以是物理機或虛擬機器。控制平面和節點執行在多台電腦上並不罕見。

    Docker swarm

    使用 Docker Swarm 模式,我們可以定義服務的期望狀態,而 Docker 將維護該狀態。Docker 企業版已將 Kubernetes 與 Swarm 整合在一起。Docker 現在為編排引擎的選擇提供了靈活性。Docker 引擎 CLI 用於建立大量的 Docker 引擎,可在其中部署應用程式服務。

    Minikube

    Minikube 允許您在本地電腦上使用 Kubernetes,並允許您在電腦上使用單節點 Kubernetes 集群。

    Rancher

    Rancher 是使用容器編排的開源平台,被稱為 cattle。它使您能夠利用 Kubernetes、Swarm、Mesos 等編排服務。Rancher 提供了管理容器所需的軟體,組織無需使用一套不同的開源技術從頭開始構建容器服務平台。Rancher 允許管理在客戶指定的提供商上執行的 Kubernetes 集群。

    AWS EKS

    亞馬遜的完全托管的 Kubernetes 服務。

    AKS(微軟 Azure 的全管理 Kubernetes 服務)

    Azure 容器例項(Azure Container Instance,簡稱 ACI)是微軟 Azure 提供的基本容器編排服務。Azure 服務結構( Azure Service Fabric)是微軟 Azure 提供的開源容器編排器。

    Marathon

    Marathon 是一個可在 Apache Mesos 上執行大規模容器的框架。

    Nomad

    Nomad 是 HashiCorp 提供的容器和工作負載協調器。

    IT 自動化

    Jenkins

    Jenkins 是開源、免費、與平台無關的自動化伺服器。Jenkins 提供了幾個外掛程式來支持構建、部署和自動化任何計畫。它是一個獨立的基於 Java 的程式。它支持 Windows、Mac 和其他類似 UNIX 的作業系統。Jenkins 可以透過本機系統軟體包 Docker 安裝,甚至可以由安裝了 Java 執行環境(Java Runtime Environment,簡稱 JRE)的任何電腦獨立執行。

    Chef

    Chef INFRA 是用於自動化基礎架構配置的平台。這將確保每個系統被正確和一致地配置。在此平台上,基礎架構被定義為程式碼。Chef INFRA 將確保配置策略靈活、可版本控制、可測試並且易於閱讀。Chef 是基於合約的付費平台。

    Puppet

    它可以連線雲提供商、DevOps 工具和其他 API。根據來自現有 DevOps 工具的訊號,傳遞觸發工作流以協調對下遊服務的操作。它使您可以透過基於 YAML 的配置自訂和擴充套件工作流程。它具有一個整合庫,可以更輕松地添加步驟。借助 Puppet Enterprise,您可以交付和管理任何雲、基礎架構或服務。Puppet 是基於合約的付費平台。

    Ansible

    Ansible 是 RedHat 的開源 IT 自動化工具。Ansible 可以配置系統、部署軟體以及協調更高級的 IT 任務,例如持續部署。Ansible 使用劇本(playbooks)做配置管理和多機部署系統。

    Terraform:**Terraform 是 Hashi Corp. 提供的開源基礎架構即程式碼軟體工具。Terraform 是用於構建、更改和管理基礎架構的工具。Terraform 將雲 API 編碼為聲明式配置檔。您可以使用 Terraform 透過稱為 HashiCorp 配置語言(HashiCorp Configuration Language,簡稱 HCL)的配置語言來管理環境,以實作人類可讀的自動化部署。

    協 作

    Jira

    Jira 是一種工具,旨在幫助團隊進行計畫管理,錯誤跟蹤和問題跟蹤。簡單來說,它是一個問題跟蹤器。Jira 被大公司廣泛用於軟體開發和軟體測試。它是由澳洲 Atlassian 公司建立的基於 Web 的商業授權產品,於 2002 年首次釋出,廣泛流行且具有可有限使用的免費版本。很多敏捷團隊使用 Jira 軟體,其設計適用於 Scrum 和看板等方法。Jira 還被金融服務、零售、軟體、汽車、非營利組織和政府廣泛使用。

    Slack

    Slack 是 Slack Technologies 開發的專有業務通訊平台。Slack 提供了許多 IRC 風格的功能,包括按主題組織的持久聊天室、私人組、直接訊息將檔保存在一個地方等。Slack 聲稱,與電子信件相比,它更加快捷、井井有條,並且更加安全。

    Monday

    Monday.com 是公司用於任務管理、計畫協作、過程跟蹤和溝通的計畫管理工具。

    谷歌工作區(Workspace)

    谷歌工作區是谷歌基於套用的生產力平台。谷歌將訊息、行事曆、檔共享、聊天、視訊會議和團隊組織工具放在一起,並免費提供給其所有使用者。

    監控和視覺化

    Datadog

    Datadog 主要是針對雲應用程式的監視工具。它為您的所有雲應用程式、伺服器和網路提供詳細的指標。它可以輕松地與其他自動化工具整合,例如 Ansible、Chef、Puppet 等。Datadog 是按主機收費的服務。

    Prometheus(普魯米修斯)

    Prometheus 是用於事件監控和報警的免費軟體應用程式。Prometheus 拉取指標(鍵 / 值),並將數據儲存為時間序列,從而允許使用者以即時方式查詢數據和告警。它以給定的時間間隔與目標進行通訊,以收集指標、匯總數據、顯示數據、甚至在達到某些閾值時發出警報。

    Grafana

    Grafana 是開源的視覺化和分析軟體。它使您可以查詢、視覺化、告警和探索

    指標,無論這些指標儲存在哪裏。簡單的說,它為您提供了將時間序列資料庫(time-series database,TSDB)數據轉換為精美的圖形和視覺化效果的工具。

    Grafana 透過提供相關數據來幫助我們跟蹤使用者行為、應用程式行為、在生產環境或預生產環境中彈出錯誤的頻率、彈出錯誤的型別以及上下文場景。Grafana Cloud 是由 Grafana 實驗室營運的高可用、快速、完全托管的 OpenSaaS 指標平台。Grafana 企業版是 Grafana 的商業版本,其中包括開源版本中未提供的附加功能。

    Loki

    Loki 是受 Prometheus 啟發的水平可延伸、高可用的多租戶(multi-tenant)日誌聚合系統。它的設計具有很高的成本效益,並且易於操作。與其他日誌系統不同,它不索引日誌的內容,而是為每個日誌流設定一組標簽。結論

    大多數 DevOps 工具免費提供,並且它們中的大多數能夠無縫地協同工作,這使我們能管理對自動化、持續整合、持續交付和持續改進的不斷增長的需求。

    往期推薦


  • 點亮,伺服器三年不宕機