收藏!這些 DevOps 工具你知道嗎?

作者 | M. Altun

策劃 | 田曉旭

本文作者使用簡單明瞭的語言介紹了當今使用的一些 DevOps 技術和工具。閱讀本文後,您將對這些 DevOps 工具,工作方式、以及如何在軟件過程中使用有一個整體的瞭解。

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

01

什麼是 DevOps?

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

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

也就是說,儘管右側的提到的項目有價值,但我們更重視左側的項目。

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

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

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

02

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)的配置語言來管理環境,以實現人類可讀的自動化部署。

IT 自動化


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)數據轉換爲精美的圖形和可視化效果的工具。

Loki

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

03

結論

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

原文鏈接:

https://medium.com/clarusway/popular-devops-tools-review-ee0cffea14ec

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/pBXux0cVKjbFoJF-C7YguA