devops常用工具 最受歡迎的devops工具



文章插圖
devops常用工具 最受歡迎的devops工具

文章插圖
本文作者使用簡單明了的語言介紹了當今使用的一些 DevOps 技術和工具 。閱讀本文后,您將對這些 DevOps 工具,工作方式、以及如何在軟件過程中使用有一個整體的了解 。
最近一段時間,我們見證了 DevOps 技術的飛速發展 。當今流行且功能強大的工具可能會成為下一年度的過時工具,甚至可能很快被另一種工具取代 。如前所述,作者的目的不是通過這篇文章來評判哪些工具最受歡迎或功能最全,而是讓讀者全面了解 DevOps 工具的工作方式以及如何在軟件過程中使用它們 。
什么是 DevOps?
DevOps 是開發和 IT 運維工程師一起參與從設計到開發和生產的整個敏捷軟件開發生命周期的一種實踐 。敏捷是軟件開發生命周期原則,由 17 名獨立軟件開發人員在 2001 年宣布 。
我們正在通過自己的實踐和幫助別人實踐來探索更好的軟件開發方法 。通過這項工作,我們開始重視:
個人和互動高于流程和工具工作的軟件高于詳盡的文檔客戶合作高于合同談判響應變化高于遵循計劃
也就是說,盡管右側的提到的項目有價值,但我們更重視左側的項目 。
在自敏捷宣言發表以來的最近 20 年中,敏捷組織的理念得到了許多組織的認可,并且一些組織已采用了 Scrum 框架進行項目管理 。Sprint 的 Scrum 框架概念和以產品為中心的文化以及快速變化的競爭市場所施加的時間壓力迫使許多軟件開發人員逐步增量地交付產品 。
持續交付需要持續的集成,CI/CD 迫使生產者采用新的工具和技術,以便可以自動執行許多任務,并且可以同時快速地執行多個流程 。新流行的軟件開發生命周期文化使開發人員、質量保證、T 運營、產品設計師和產品所有者之間的工作更加緊密 。這正是 DevOps 概念不可或缺的地方 。
除了傳統的版本控制、協作和部署工具之外,快速的生產和交付迫使軟件公司使用更多工具來滿足敏捷性期望,例如項目管理、自動化、容器化、編排、監控、分析和可視化技術 。
DevOps 工具1 版本控制系統
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 。
2 容器化
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命令,從您的配置中創建并啟動所有服務 。
3 容器編排
隨著大公司對其應用程序進行容器化,并將它們遷移到云中,對容器編排解決方案的需求不斷增長 。有許多可用的解決方案,盡管并不詳盡,下面的列表提供了一些可用的容器編排工具和服務 。
Kubernetes
Kubernetes 是一個開源平臺,它支持容器化服務的部署、擴展和管理的自動化 。Kubernetes 最初由谷歌開發,由云原生計算基金會(Cloud Native Computing Foundation)維護 。有許多付費或免費的產品,但其中最受歡迎的是 Kubernetes 。
部署 Kubernetes 為我們提供了一個集群 。Kubernetes 集群由一組工作機(稱為節點)組成,這些節點上運行容器化的應用 。每個群集至少有一個工作節點 。每個節點由控制平面(control plane)管理,并包含運行 Pod 所需的服務 。每個 Pod 是容器的邏輯主機 。工作節點托管作為應用程序工作負載組件的 Pod 。控制節點管理群集中的工作節點和 Pod ??刂破矫婧凸濣c可以是物理機或虛擬機 ??刂破矫婧凸濣c運行在多臺計算機上并不罕見 。
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 提供的容器和工作負載協調器 。
4 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)的配置語言來管理環境,以實現人類可讀的自動化部署 。
5 協作
Jira
Jira 是一種工具,旨在幫助團隊進行項目管理,錯誤跟蹤和問題跟蹤 。簡單來說,它是一個問題跟蹤器 。Jira 被大公司廣泛用于軟件開發和軟件測試 。它是由澳大利亞 Atlassian 公司創建的基于 Web 的商業授權產品,于 2002 年首次發布,廣泛流行且具有可有限使用的免費版本 。很多敏捷團隊使用 Jira 軟件,其設計適用于 Scrum 和看板等方法 。Jira 還被金融服務、零售、軟件、汽車、非營利組織和政府廣泛使用 。
Slack
Slack 是 Slack Technologies 開發的專有業務通信平臺 。Slack 提供了許多 IRC 風格的功能,包括按主題組織的持久聊天室、私人組、直接消息將文件保存在一個地方等 。Slack 聲稱,與電子郵件相比,它更加快捷、井井有條,并且更加安全 。
Monday
Monday.com 是公司用于任務管理、項目協作、過程跟蹤和溝通的項目管理工具 。
谷歌工作區(Workspace)
谷歌工作區是谷歌基于應用的生產力平臺 。谷歌將消息、日歷、文件共享、聊天、視頻會議和團隊組織工具放在一起,并免費提供給其所有用戶 。
6 監控和可視化
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常用工具 最受歡迎的devops工具】大多數 DevOps 工具免費提供,并且它們中的大多數能夠無縫地協同工作,這使我們能管理對自動化、持續集成、持續交付和持續改進的不斷增長的需求 。