最全的 DevOps 工具集合,再也不怕選型了?。ㄗ钍軞g迎的devops工具)
隨著 DevOps 的出現(xiàn)頻率越來越高,很多企業(yè)都在蠢蠢欲動,想要設(shè)計(jì)和開發(fā) DevOps 平臺。工欲善其事必先利其器,本文為大家總結(jié)了 DevOps 各個(gè)階段可以選擇的工具,也許 DevOps 平臺的技術(shù)選型在這一篇文章中就可以完成。
DevOps 的目標(biāo)是持續(xù)改進(jìn),因此技術(shù)選型也是分階段的。
DevOps 技術(shù)類別
規(guī)劃工具
在規(guī)劃階段最重要的是要制定共同的目標(biāo)、保證透明度和賦權(quán)。目前業(yè)內(nèi)比較常用的規(guī)劃工具主要包括 GitLab、TaskTop、CollabNet VersionOne、Pivotal Tracker、Trello 和 Azure Boards。
GitLab
GitLab 是基于 Web 的 DevOps 生命周期工具。它提供了一個(gè) Git 存儲庫管理器,使用由 GitLab Inc. 開發(fā)的開源許可證來提供 Wiki、問題跟蹤和 CI/CD 管道功能。
GitLab 提供了一些工具用來在實(shí)踐中規(guī)劃事務(wù),還可以用來查看工作的范圍。
Tasktop
Tasktop 可以將所有這些工具添加到 Tasktop 支持的全套敏捷和應(yīng)用程序生命周期管理(ALM)、PPM 和 ITSM 工具中,從而在整個(gè)生命周期中提供前所未有的可視化特性。
CollabNet VersionOne
VersionOne 支持 Scrum、看板、XP、SAFe 和混合開發(fā)方法,簡化了跨所有團(tuán)隊(duì)、程序、軟件產(chǎn)品組合和企業(yè)的計(jì)劃、跟蹤和報(bào)告工作。
Pivotal Tracker
全球各地開發(fā)人員都可以使用這款敏捷項(xiàng)目管理工具,圍繞一個(gè)共享的,帶有優(yōu)先級的 backlog 進(jìn)行實(shí)時(shí)協(xié)作。
Trello
Trello 是基于 Web 的看板風(fēng)格列表制作應(yīng)用程序,是 Atlassian 的子應(yīng)用。
許多團(tuán)隊(duì)在規(guī)劃各個(gè) sprint 時(shí)都會用它。
Azure Boards
可以跟蹤軟件項(xiàng)目,并使用敏捷工具(包括 Scrum boards、看板 boards 和儀表板等)改進(jìn)規(guī)劃工作。同時(shí),還有工具可以幫助你可視化工作、共享計(jì)劃、跟蹤進(jìn)度,并確保你正在向目標(biāo)邁進(jìn)。
問題跟蹤
問題跟蹤階段是為了提供客戶響應(yīng)能力,減少知識浪費(fèi),縮短反饋鏈路。目前業(yè)內(nèi)比較常用的問題跟蹤工具包括 Atlassian Jira、JetBrains YouTrack 和 ZenDesk。
Atlassian Jira
Jira 是 Atlassian 開發(fā)的專用問題跟蹤產(chǎn)品,提供了錯(cuò)誤跟蹤和敏捷項(xiàng)目管理功能。
JetBrains YouTrack
YouTrack 是由 JetBrains 開發(fā)的,基于瀏覽器的專用商業(yè)軟件,融合了錯(cuò)誤跟蹤器、問題跟蹤系統(tǒng)以及項(xiàng)目管理軟件。它的賣點(diǎn)是基于查詢的問題搜索,擁有自動完成、分批處理問題、自定義問題屬性集,以及創(chuàng)建自定義工作流的特性。
Zendesk
Zendesk 可以輕松地從所有渠道跟蹤每一個(gè)客戶問題。目前 Uber 和 Airbnb 等許多公司都在使用 Zendesk Support 作為他們的問題跟蹤軟件。
源代碼控制
源代碼控制主要是為了控制資產(chǎn),減少溝通障礙,賦能團(tuán)隊(duì)。目前業(yè)內(nèi)比較常用的 SCM 工具包括 Git、GitHub、GitLab、Bitbucket 和 Subversion。
Git
Git 是一個(gè)分布式版本控制系統(tǒng),用來在軟件開發(fā)過程中跟蹤源代碼的更改。它是專為協(xié)調(diào)不同程序員的工作而設(shè)計(jì)的,也可用于跟蹤各種文件集中的更改。它的優(yōu)勢包括速度、數(shù)據(jù)完整性以及對分布式非線性工作流的支持。
GitHub
GitHub 提供了 Git 的分布式版本控制和源代碼管理功能,自己也有很多特性。
GitLab
GitLab 中的版本控制提供了世界一流的源代碼管理功能,可幫助你的開發(fā)團(tuán)隊(duì)共享、協(xié)作并盡可能提高生產(chǎn)力。
Bitbucket
Bitbucket 是 Atlassian 所有的、基于 Web 的版本控制庫托管服務(wù),可用在使用 Mercurial 或 Git 版本控制系統(tǒng)的源代碼和開發(fā)項(xiàng)目上。
Subversion
Apache Subversion 是一個(gè)軟件版本和修訂控制系統(tǒng),其根據(jù) Apache 許可開源。軟件開發(fā)人員可使用 Subversion 來維護(hù)源代碼、網(wǎng)頁和文檔等文件的當(dāng)前和歷史版本。
構(gòu)建工具
構(gòu)建階段主要是為了保持打包的一致性,自動執(zhí)行容易出錯(cuò)的活動,生成早期質(zhì)量信號。目前業(yè)內(nèi)比較常用的構(gòu)建工具包括 Maven/Gradle、MSBuild、Rake、JFrog Artifactory、Sonatype Nexus 和 NuGet。
Maven/Gradle
Maven 是主要用于 Java 項(xiàng)目的自動化構(gòu)建工具。Maven 還可以構(gòu)建和管理以 C#、Ruby、Scala 等語言編寫的項(xiàng)目。
Gradle 是一個(gè)開源的自動化構(gòu)建系統(tǒng),其基于 Apache Ant 和 Apache Maven 的理念,并引入了基于 Groovy 的領(lǐng)域特定語言,替代 Apache Maven 使用的 XML 格式來聲明項(xiàng)目配置。
MSBuild
Microsoft Build Engine(通常稱為 MSBuild)是用來托管代碼及原生 C 代碼的免費(fèi)開源構(gòu)建工具集,它之前是.NET Framework 的一部分。Visual Studio 依賴 MSBuild(反之則不然)。
Rake
Rake 是一個(gè)軟件任務(wù)管理和自動化構(gòu)建工具。它允許用戶指定任務(wù)并描述依賴關(guān)系。你也可以對命名空間中的組任務(wù)執(zhí)行這些操作。
JFrog Artifactory
JFrog Artifactory 這款工具可用來存儲構(gòu)建過程的二進(jìn)制輸出,以備分發(fā)和部署之用。Artifactory 支持許多軟件包格式,如 Maven、Debian、npm、Helm、Ruby、Python 和 Docker。
JFrog 提供了高可用性、復(fù)制、災(zāi)難恢復(fù)和可伸縮特性,并兼容許多本地和云存儲產(chǎn)品。
Sonatype Nexus
Sonatype Nexus 是一款存儲庫管理器。你可以用它代理、收集和管理依賴項(xiàng),這樣就用不著和一大堆 JAR 打交道了。它簡化了軟件分發(fā)的工作。
你可以配置自己的內(nèi)部構(gòu)建,然后發(fā)布到 Nexus 上供其他開發(fā)者使用。
NuGet
NuGet 是.NET 的軟件包管理器。NuGet 客戶端工具提供了生成和使用軟件包的功能。
NuGet Gallery 是為所有包作者和使用者提供的軟件包中心存儲庫。
測試工具
測試階段主要是檢測內(nèi)部質(zhì)量,建立對已部署構(gòu)件的信心。目前業(yè)內(nèi)常用的測試工具包括 JUnit、xUnit.net、Selenium、Jasmine 和 Cucumber。
JUnit
JUnit 是用于 Java 編程語言的單元測試框架。JUnit 在測試驅(qū)動開發(fā)的環(huán)境中扮演著重要角色,從 SUnit 起源的一組單元測試框架(統(tǒng)稱為 xUnit)之一。
xUnit.net
xUnit.net 是由 NUnit 的原作者編寫的,用于.NET Framework 的開源單元測試工具。
Selenium
Selenium 是用于測試 Web 應(yīng)用程序的可移植框架。Selenium 提供了一種回放工具,使用戶無需學(xué)習(xí)測試腳本語言就能編寫功能測試。
Jasmine
Jasmine 是用于 JavaScript 的開源測試框架。它可以在任何支持 JavaScript 的平臺上運(yùn)行,不會入侵應(yīng)用程序或 IDE,還有著易讀的語法。在它身上可以找到 Screw.Unit、JSSpec、JSpec 和 RSpec 等諸多單元測試框架的影子。
Cucumber
Cucumber 是一種支持行為驅(qū)動開發(fā)的軟件工具。
Cucumber BDD 方法的核心是一種稱為 Gherkin 的普通語言解析器。它能用客戶可以理解的邏輯語言來指定預(yù)期的軟件行為。
持續(xù)集成和部署(CI/CD)
CI 工具的存在是為了快速反饋和減少缺陷、等待。目前業(yè)務(wù)比較常用的 CI 工具包括 Jenkins、CircleCI、Travis CI、Concourse、AWS CodePipeline 和 Azure Pipelines。
Jenkins
Jenkins 是一個(gè)免費(fèi)的開源自動化服務(wù)器。Jenkins 可用來自動化軟件開發(fā)過程中非人類參與的工作,基于 CI 和 CD 的技術(shù)理念。這是一個(gè)基于服務(wù)器的系統(tǒng),可在 servlet 容器(例如 Apache Tomcat)中運(yùn)行。
CircleCI
CircleCI 是世界上最大的共享 CI/CD 平臺,也是代碼從構(gòu)思到交付過程的中央樞紐。
作為最常用的 DevOps 工具之一,CircleCI 每天處理超過 100 萬個(gè)構(gòu)建,因此收集了大量關(guān)于工程團(tuán)隊(duì)工作方式以及代碼運(yùn)行方式的數(shù)據(jù)。Spotify、Coinbase、Stitch Fix 和 BuzzFeed 等公司使用 CircleCI 來提升工程團(tuán)隊(duì)的生產(chǎn)力、發(fā)布更好的產(chǎn)品并更快地將產(chǎn)品推向市場。
Travis CI
TravisCI 是一項(xiàng)托管 CI 服務(wù),用于構(gòu)建和測試 GitHub 上托管的軟件項(xiàng)目。Travis CI 為私有項(xiàng)目提供各種付費(fèi)計(jì)劃,并提供了開源的免費(fèi)方案。TravisPro 提供了在客戶自己的硬件上定制化部署專有版本的能力。
Concourse
Concourse 是用 Go 編寫的自動化系統(tǒng)。人們經(jīng)常將它用于 CI/CD,其賣點(diǎn)是強(qiáng)大的可伸縮性,可以提供很簡單或者很復(fù)雜的自動化管道。
AWS CodePipeline
AWS CodePipeline 是一項(xiàng)完全托管的 CD 服務(wù),可幫助你自動化發(fā)布管道,以實(shí)現(xiàn)快速、可靠的應(yīng)用程序和基礎(chǔ)架構(gòu)更新流程。
每當(dāng)你更改代碼時(shí),CodePipeline 都會根據(jù)你定義的發(fā)布模型自動執(zhí)行發(fā)布流程中的構(gòu)建、測試和部署階段。這使你能夠快速可靠地交付功能和更新。
你可以輕松地將 AWS CodePipeline 與第三方服務(wù)(例如 GitHub)或你自己的自制插件集成。使用 AWS CodePipeline 時(shí)你按需付費(fèi)即可。它沒有前期費(fèi)用或長期承諾。
Azure Pipelines
可用它獲取適用于 Linux、macOS 和 Windows 的云托管管道。生成 Web、桌面和移動應(yīng)用程序。部署到云端或本地。
使用 Pipelines 自動化構(gòu)建和部署流程可以節(jié)約很多時(shí)間,從而騰出更多資源投入創(chuàng)造活動。
而 CD 工具主要是為了將復(fù)雜的管道自動化,統(tǒng)一團(tuán)隊(duì)目標(biāo)。目前業(yè)內(nèi)比較常用的 CD 工具包括 Spinnaker、Octopus Deploy 和 AWS CodeDeploy。
Spinnaker
Spinnaker 是一個(gè)免費(fèi)的開源 CD 軟件平臺,最初由 Netflix 開發(fā),不久被谷歌看中并發(fā)展起來。
Spinnaker 是一個(gè)多云 CD 平臺,能夠以高速度和強(qiáng)信心來發(fā)布軟件更改。它提供了強(qiáng)大而靈活的管道管理系統(tǒng),并支持與主流云提供商的集成。
Octopus Deploy
Octopus Deploy 是全球領(lǐng)先的 CD 團(tuán)隊(duì)使用的自動部署和發(fā)布管理工具。
Octopus 是一個(gè)工具集,可以顯著簡化任何 DevOps 流程,以通過云或虛擬機(jī)連續(xù)測試和部署大量微服務(wù)或應(yīng)用程序。
AWS CodeDeploy
AWS CodeDeploy 是一項(xiàng)完全托管的部署服務(wù),可自動將軟件部署到各種計(jì)算服務(wù)上,例如 Amazon EC2、AWS Fargate、AWS Lambda 和你的本地服務(wù)器等。
你可以使用 AWS CodeDeploy 自動執(zhí)行軟件部署,無需容易出錯(cuò)的手動操作。
配置管理工具
配置管理工具的作用是將基礎(chǔ)架構(gòu)代碼化,加強(qiáng)一致性。目前業(yè)內(nèi)常用的配置管理工具包括 Terraform、BOSH、Chef、Ansible、Puppet、Google Cloud Deployment Manager。
Terraform
Terraform 是由 HashiCorp 創(chuàng)建的開源基礎(chǔ)架構(gòu)即代碼(IaC)軟件工具。它讓用戶能夠使用 Hashicorp 配置語言或 JSON(可選)這兩種高級配置語言來定義和配置數(shù)據(jù)中心基礎(chǔ)架構(gòu)。
BOSH
BOSH 是一個(gè)將小型和大規(guī)模云軟件的發(fā)布工程、部署和生命周期管理統(tǒng)一在一起的項(xiàng)目。BOSH 可以在數(shù)百個(gè) VM 上配置和部署軟件。它還能以接近零的停機(jī)時(shí)間執(zhí)行監(jiān)視、故障恢復(fù)和軟件更新任務(wù)。
雖然 BOSH 是為了部署 Cloud Foundry 而開發(fā)的,但它也可以用來部署幾乎所有軟件(例如 Hadoop)。BOSH 特別適合大型分布式系統(tǒng)。
此外,BOSH 支持多個(gè)基礎(chǔ)架構(gòu)即服務(wù)(IaaS)提供商,例如 VMware vSphere、Google Cloud Platform、Amazon WebServices EC2、Microsoft Azure、OpenStack 和阿里云。它帶有一個(gè)云提供商界面(CPI),使用戶可以擴(kuò)展 BOSH 以支持其他 IaaS 提供商,如 Apache CloudStack 和 VirtualBox 等。
Chef
Chef 是一種配置管理工具,用來處理物理服務(wù)器、虛擬機(jī)和云中的機(jī)器設(shè)置。許多公司使用 Chef 軟件來控制和管理自己的基礎(chǔ)架構(gòu),他們包括 Facebook、Etsy、Cheezburger 和 Indiegogo 等。
Chef 是持續(xù)自動化軟件領(lǐng)域的領(lǐng)導(dǎo)者、應(yīng)用程序自動化領(lǐng)域的創(chuàng)新者,也是 DevOps 運(yùn)動的創(chuàng)始人之一。Chef 與全球 1000 多家最具創(chuàng)新力的公司合作,以實(shí)現(xiàn)他們數(shù)字化轉(zhuǎn)型的愿景,并提供可快速交付軟件的實(shí)踐和平臺。
Ansible
Ansible 是一種開源的軟件預(yù)備、配置管理和應(yīng)用程序部署工具。它可以在許多類 Unix 系統(tǒng)上運(yùn)行,既可以配置類 Unix 系統(tǒng)也可以配置微軟 Windows。它自帶聲明式語言來描述系統(tǒng)配置。
Puppet
Puppet 提供的能力可以定義系統(tǒng)所需的軟件和配置,然后在初始設(shè)置后保持指定狀態(tài)。
用戶使用與 Ruby 類似的聲明式領(lǐng)域特定語言(DSL)來定義指定環(huán)境或基礎(chǔ)架構(gòu)的配置參數(shù)。Puppet 使用稱為 Facter 的一個(gè)實(shí)用程序獲取系統(tǒng)信息,該程序跟隨 Puppet 軟件包一并安裝。
Puppet master 是一個(gè)系統(tǒng),使用清單來管理它所控制的所有節(jié)點(diǎn)的重要配置信息。
Master 控制的節(jié)點(diǎn)都安裝了 Puppet 并運(yùn)行 Puppet 代理(即守護(hù)程序)。代理收集的節(jié)點(diǎn)配置信息將發(fā)送到 Puppet master。然后,Puppet master 根據(jù)節(jié)點(diǎn)的配置策略來編制一個(gè)目錄。每個(gè)節(jié)點(diǎn)都使用這些信息來將任何必要的配置更新應(yīng)用到自己身上。
Puppet 使用的是 pull 模式,在該模式下,代理定期輪詢 master,以檢索特定于站點(diǎn)和節(jié)點(diǎn)的配置。在這種基礎(chǔ)架構(gòu)中,受管理的節(jié)點(diǎn)通常以后臺服務(wù)的形式運(yùn)行 Puppet 代理應(yīng)用程序。
Google Cloud Deployment Manager
Google Cloud Deployment Manager 是一項(xiàng)基礎(chǔ)架構(gòu)管理服務(wù),可輕松創(chuàng)建、部署和管理 Google Cloud Platform 資源。
云平臺
云平臺主要是為了自動化、觀察軟件的運(yùn)行時(shí),目前業(yè)內(nèi)常用的云平臺包括 Amazon Web Services、Microsoft Azure、Google Cloud Platform、Pivotal Cloud Foundry、Heroku 和 Container Schedulers。
Amazon Web Services
Amazon Web Services(AWS)是一個(gè)安全的云服務(wù)平臺,提供計(jì)算能力、數(shù)據(jù)庫存儲、內(nèi)容交付等功能,以幫助業(yè)務(wù)擴(kuò)展和成長。
簡單來說,AWS 允許你進(jìn)行以下操作:
- 在云中運(yùn)行 Web 和應(yīng)用程序服務(wù)器以托管動態(tài)網(wǎng)站
- 將所有文件安全地存儲在云中,可以從任何地方訪問它們
- 使用托管數(shù)據(jù)庫(如 MySQL、PostgreSQL、Oracle 或 SQLServer)存儲信息
- 使用內(nèi)容交付網(wǎng)絡(luò)(CDN)在世界范圍內(nèi)快速交付靜態(tài)和動態(tài)文件
- 向你的眾多客戶發(fā)送大量電子郵件
Microsoft Azure
Microsoft Azure 是由微軟創(chuàng)建的一種云計(jì)算服務(wù),可通過微軟管理的數(shù)據(jù)中心構(gòu)建、測試、部署和管理應(yīng)用程序和服務(wù)。
Microsoft Azure(以前稱為 Windows Azure)是微軟的公共云計(jì)算平臺。它提供了多種云服務(wù),包括計(jì)算、分析、存儲和網(wǎng)絡(luò)等用途。用戶可以在這些服務(wù)中挑選自己所需的選項(xiàng),以在公有云中開發(fā)和擴(kuò)展新的應(yīng)用程序,或運(yùn)行現(xiàn)有應(yīng)用程序。
Google Cloud Platform
由谷歌提供的 Google Cloud Platform 是一套云計(jì)算服務(wù),運(yùn)行在谷歌內(nèi)部為其最終用戶產(chǎn)品(例如 Google Search、Gmail 和 YouTube)打造的同一套基礎(chǔ)架構(gòu)上。
Google Cloud Platform 提供了計(jì)算資源,用于在 Web 上部署和運(yùn)營應(yīng)用程序。它的專長是為個(gè)人和企業(yè)提供構(gòu)建和運(yùn)行軟件的場所,并使用 Web 來連接軟件用戶。
谷歌的云計(jì)算服務(wù)可幫助你直面各種業(yè)務(wù)挑戰(zhàn),包括數(shù)據(jù)管理、混合和多云以及 AI 和 ML 等。
Pivotal Cloud Foundry
Pivotal Cloud Foundry(PCF)是一個(gè)開源、多云的應(yīng)用程序平臺即服務(wù)(PaaS),由 501 組織 Cloud Foundry Foundation 管理。該軟件最初由 VMware 開發(fā),但之后轉(zhuǎn)移到了 Pivotal Software。隨著 VMware 于 2019 年底收購 Pivotal,它也重新回到了 VMware。
PCF 是用于部署、管理和持續(xù)交付應(yīng)用程序、容器和函數(shù)的多云平臺。PCF 允許開發(fā)人員快速部署和交付軟件,而無需管理底層基礎(chǔ)架構(gòu)。
Heroku
Heroku 是一種支持多種編程語言的云 PaaS。Heroku 是最早的云平臺之一,自 2007 年 6 月就開始開發(fā)了;當(dāng)時(shí)它僅支持 Ruby 編程語言,但現(xiàn)在支持 Java、Node.js、Scala、Clojure、Python、PHP 和 Go。
Heroku 是基于容器的云 PaaS。開發(fā)人員使用 Heroku 來部署、管理和擴(kuò)展現(xiàn)代應(yīng)用程序。這一平臺優(yōu)雅、靈活且易于使用,為開發(fā)人員提供了將自己的應(yīng)用推向市場的最簡單途徑。
容器調(diào)度程序
容器調(diào)度程序的主要任務(wù)是在最合適的主機(jī)上啟動容器,并將它們連接起來。它必須具備自動故障轉(zhuǎn)移能力,并且在數(shù)據(jù)太多,單個(gè)實(shí)例無法處理 / 計(jì)算時(shí)擴(kuò)展容器。
三種最受歡迎的容器調(diào)度程序分別是 Docker Swarm、Apache Mesos 和 Kubernetes。
Docker Swarm
DockerSwarm 是 Docker 開發(fā)的容器調(diào)度程序。由 Docker 開發(fā)的這個(gè)集群解決方案提供了很多優(yōu)勢,比如說它使用了標(biāo)準(zhǔn)的 Docker API。Swarm 的架構(gòu)由兩大元素組成:
Docker Swarm 架構(gòu),?Alexandre Beslic(DockerInc.)
Apache Mesos 和 Mesosphere Marathon
Mesos 的目的是建立一個(gè)可擴(kuò)展且高效的系統(tǒng),以支持當(dāng)前和將來的各種框架。這也是主要問題所在:Hadoop 和 MPI 之類的框架都是獨(dú)立開發(fā)的,因此無法在各個(gè)框架之間進(jìn)行細(xì)粒度的共享。
Mesos 的對策是添加一個(gè)資源共享薄層,為框架提供訪問集群資源的公共接口。Mesos 正在將對調(diào)度的控制權(quán)委派給框架,因?yàn)樵S多框架已經(jīng)實(shí)現(xiàn)了復(fù)雜的調(diào)度機(jī)制。
根據(jù)要在集群上運(yùn)行的作業(yè)類型可以將框架分為四類,其中一些具有 Marathon 之類的原生 Docker 支持。Mesos 0.20.0 中添加了對 Docker 容器的支持。
我們將重點(diǎn)介紹 Mesos 與 Marathon 的搭配用法,因?yàn)楹笳呤?Mesosphere 積極維護(hù)的框架,在調(diào)度方面提供了許多功能,如約束、運(yùn)行狀況檢查、服務(wù)發(fā)現(xiàn)和負(fù)載平衡等。
使用 Marathon 的 Apache Mesos 架構(gòu),?AdrianMouat
如圖所見,集群中有四個(gè)元素。ZooKeeper 幫助 Marathon 查找 Mesos master 的地址,可以使用多個(gè)實(shí)例來處理故障。
Marathon 負(fù)責(zé)啟動、監(jiān)視并擴(kuò)展容器。Mesos master 將分配給節(jié)點(diǎn)的任務(wù)發(fā)送給 Marathon,并在節(jié)點(diǎn)具有一些可用的 CPU/RAM 時(shí)向 Marathon 提出要約。Mesos slaves 負(fù)責(zé)運(yùn)行容器并提交自身可用資源的列表。
Kubernetes
Kubernetes 是用于 Docker 容器的編排系統(tǒng),使用標(biāo)簽和 pods 的概念將容器分為許多邏輯單元。Pod 是 Kubernetes 與其他兩種解決方案之間的主要區(qū)別所在——它們是位于同一地點(diǎn)的容器的集合,共同組成部署和調(diào)度服務(wù)。與基于基于相似性的容器協(xié)同調(diào)度機(jī)制(如 Swarm 和 Mesos)相比,這種方法簡化了集群的管理。
Kubernetes 調(diào)度程序的任務(wù)是監(jiān)視 PodSpec 為空的 Pod。NodeName 賦予一個(gè)值,以將容器調(diào)度在集群中的某個(gè)位置。
這是與 Swarm 和 Mesos 不一樣的地方,因?yàn)?Kubernetes 允許開發(fā)人員在運(yùn)行 Pod 時(shí)通過定義 PodSpec.NodeName 來繞過調(diào)度程序。
調(diào)度程序使用謂詞和優(yōu)先級來定義容器應(yīng)運(yùn)行的節(jié)點(diǎn)。這些參數(shù)的默認(rèn)值可以使用新的調(diào)度程序策略配置覆蓋。
如果使用命令行標(biāo)志 policy-config-file 指向描述啟動 Kubernetes 時(shí)要使用的謂詞和優(yōu)先級的 JSON 文件,調(diào)度程序就會使用管理員定義的策略。
Kubernetes 架構(gòu)(灰色部分是容器,彩色部分是 pods),?GoogleInc.
監(jiān)控和記錄工具
監(jiān)控和記錄工具主要是為了在發(fā)生故障時(shí)快速響應(yīng),快速恢復(fù),同時(shí)減少事故期間的人員參與。目前業(yè)內(nèi)比較常用的監(jiān)控和記錄工具包括 ELK Stack、Datadog、New Relic、Prometheus、Zipkin 和 Azure Monitor。
ELK Stack
ELK Stack 是三個(gè)開源產(chǎn)品的集合——它們分別是 Elasticsearch、Logstash 和 Kibana。它們都是由 Elastic 公司開發(fā)、管理和維護(hù)的。
E 代表 ElasticSearch,用于存儲日志
L 代表 Logstash,用于傳輸、處理和存儲日志
K 代表 Kibana,是一種可視化工具(Web 界面)
Datadog
Datadog 是針對云規(guī)模應(yīng)用程序的監(jiān)視服務(wù),可通過基于 SaaS 的數(shù)據(jù)分析平臺來監(jiān)視服務(wù)器、數(shù)據(jù)庫、工具和服務(wù)。
Datadog Application Performance Monitoring(APM 或跟蹤)可與你的日志和基礎(chǔ)架構(gòu)監(jiān)視器并用,提供自動生成的儀表板(用于監(jiān)視關(guān)鍵指標(biāo),如請求量和延遲)乃至單個(gè)請求的跟蹤細(xì)節(jié),幫助你深入了解應(yīng)用程序的性能表現(xiàn)。
應(yīng)用程序收到請求時(shí),Datadog 可以在整個(gè)分布式系統(tǒng)上查看跟蹤,并向你顯示關(guān)于該請求狀況的詳細(xì)系統(tǒng)數(shù)據(jù)。
New Relic
New Relic 是一家位于加州舊金山的技術(shù)公司,致力于開發(fā)基于云的軟件,以幫助網(wǎng)站和應(yīng)用程序所有者跟蹤服務(wù)性能。
New Relic 開發(fā)的用于應(yīng)用程序性能監(jiān)視(APM)的軟件分析產(chǎn)品,可提供有關(guān) Web 應(yīng)用程序性能以及最終用戶體驗(yàn)滿意度的實(shí)時(shí)和趨勢數(shù)據(jù)。
Prometheus
Prometheus 是用于事件監(jiān)視和警報(bào)的免費(fèi)軟件應(yīng)用程序。它將實(shí)時(shí)指標(biāo)記錄在一個(gè)時(shí)間序列數(shù)據(jù)庫中,該數(shù)據(jù)庫使用 HTTP 拉取模型構(gòu)建,支持靈活查詢和實(shí)時(shí)警報(bào)。
Prometheus 服務(wù)器的工作方式是抓取,也就是調(diào)用監(jiān)視器上配置的各個(gè)節(jié)點(diǎn)的指標(biāo)端點(diǎn)。它定期收集這些指標(biāo)并將其存儲在本地。節(jié)點(diǎn)在 Prometheus 服務(wù)器抓取的端點(diǎn)上公開這些指標(biāo)。
Zipkin
Zipkin 是一個(gè)分布式跟蹤系統(tǒng)。它能收集用來解決服務(wù)架構(gòu)中延遲問題所需的時(shí)序數(shù)據(jù)。其功能包括收集和查找這類數(shù)據(jù)。
如果日志文件中有跟蹤 ID,則你可以直接跳至該跟蹤 ID。否則,你可以基于屬性來查詢,可用屬性包括服務(wù)、操作名稱、tagsm 和持續(xù)時(shí)間等。系統(tǒng)會為你總結(jié)一些有趣的數(shù)據(jù),例如在一個(gè)服務(wù)中花費(fèi)的時(shí)間百分比,以及操作是否失敗等。
Azure Monitor
Azure Monitor 提供了一個(gè)全面的解決方案,從你的云和本地環(huán)境中收集、分析數(shù)據(jù)和執(zhí)行遙測任務(wù),從而最大程度地提高應(yīng)用程序和服務(wù)的可用性和性能。
它可以幫助你了解應(yīng)用程序的性能,并主動識別影響它們的問題以及它們所依賴的資源。
你可以使用 Azure Monitor 做很多事情,例如:
- 使用 Application Insights 檢測和診斷跨應(yīng)用程序和依賴項(xiàng)的問題
- 將基礎(chǔ)架構(gòu)問題與分別適用于 VM/ 容器的 AzureMonitor 相關(guān)聯(lián)
- 使用 Log Analytics 深度分析監(jiān)視數(shù)據(jù),以進(jìn)行故障排除和深度診斷
- 通過智能警報(bào)和自動化操作支持大規(guī)模運(yùn)營
- 使用 Azure 儀表板和工作簿創(chuàng)建可視化內(nèi)容
通訊工具
通訊工具主要是用于多團(tuán)隊(duì)溝通,減少等待時(shí)間,改善協(xié)作能力。目前業(yè)內(nèi)比較常用的通訊工具包括 Slack、Microsoft Teams、Google Hangouts 和 Zoom。
Slack
Slack 是 Slack Technologies 開發(fā)的專用即時(shí)消息平臺。
Slack 本質(zhì)上是整個(gè)公司的聊天室,旨在取代電子郵件作為你交流和共享信息的主要方法。它的工作空間使你可以按頻道來組織小組討論,并支持私信功能,可以一站式共享信息和文件等。
Microsoft Teams
Microsoft Teams 是一個(gè)統(tǒng)一的通信和協(xié)作平臺,提供了可靠的工作聊天、視頻會議、文件存儲和應(yīng)用程序集成特性。
Teams 是基于聊天的協(xié)作工具,可為跨越全球、遠(yuǎn)程和分散的團(tuán)隊(duì)提供在一個(gè)公共空間共同工作和共享信息的能力。它有一些很酷的功能,如文檔協(xié)作、一對一聊天和團(tuán)隊(duì)聊天等等。
Google Hangouts
Google Hangouts 是谷歌開發(fā)的一種通訊軟件產(chǎn)品。Hangouts 最初是 Google 的功能,后來在 2013 年成為獨(dú)立產(chǎn)品,當(dāng)時(shí)谷歌也開始將 Google Messenger 和 Google Talk 的功能集成到 Hangouts 中。
Hangouts Chat 是一種與組織中的成員交流的有效方法。你可以向一位或多位同事發(fā)送消息,創(chuàng)建空間來與多人開始持續(xù)會話,并使用機(jī)器助手來幫助你自動化操作。Chat 可在你的計(jì)算機(jī)瀏覽器以及適用于 Android 和 iOS 的移動應(yīng)用中使用。
Zoom
Zoom Video Communications 是一家遠(yuǎn)程會議服務(wù)公司,總部位于加州圣何塞。它提供了將視頻會議、在線會議、聊天和移動協(xié)作結(jié)合在一起的遠(yuǎn)程會議服務(wù)。
對于尋求整體業(yè)務(wù)解決方案的團(tuán)隊(duì)來說,Skype 是更好的選擇。Zoom 非常適合經(jīng)常進(jìn)行視頻聊天和會議的團(tuán)隊(duì)。但是,這兩種工具都不是專門為遠(yuǎn)程工作而構(gòu)建的。
知識共享工具
知識共享工具主要是為了提高新員工的生產(chǎn)力,減少重復(fù)錯(cuò)誤。目前比較常用的知識共享工具包括 GitHub Pages、Confluence、Jekyll 和 Google Sites。
GitHub Pages
GitHub Pages 是一種靜態(tài)站點(diǎn)托管服務(wù),可直接從 GitHub 上的存儲庫中獲取 HTML、CSS 和 JavaScript 文件,還可以在構(gòu)建過程中運(yùn)行這些文件并發(fā)布網(wǎng)站。你可以在 GitHub Pages 示例集合中查看 GitHub Pages 網(wǎng)站的示例。
Confluence
Confluence 是 Atlassian 開發(fā)和發(fā)行的協(xié)作軟件程序。Atlassian 用 Java 編程語言編寫了 Confluence,并于 2004 年首次發(fā)布。
Confluence 是一個(gè)協(xié)作 Wiki 工具,用于幫助團(tuán)隊(duì)有效地協(xié)作和共享知識。借助 Confluence,你可以在 Team Calendars 附加組件的幫助下捕獲項(xiàng)目需求、向特定用戶分配任務(wù),還能一次管理多個(gè)日歷。
Jekyll
Jekyll 是一個(gè)簡單的,博客型的靜態(tài)網(wǎng)站生成器,可用于個(gè)人、項(xiàng)目或組織的網(wǎng)站生成。它是由 GitHub 的聯(lián)合創(chuàng)始人 Tom Preston-Werner 用 Ruby 編寫的,根據(jù)開源 MIT 許可發(fā)行。
Jekyll 是一個(gè)解析引擎,打包為一個(gè) Ruby gem,用來從動態(tài)組件(例如模板、部件、液態(tài)代碼、markdown 等)構(gòu)建靜態(tài)網(wǎng)站。Jekyll 被稱為“簡單、博客型的靜態(tài)站點(diǎn)生成器”。
Google Sites
Google Sites 是谷歌提供的結(jié)構(gòu)化 Wiki 和網(wǎng)頁創(chuàng)建工具。Google Sites 宣稱的目標(biāo)是讓任何人都能夠創(chuàng)建讓不同編輯者協(xié)作的簡單網(wǎng)站。
你們可以一起用它為團(tuán)隊(duì)、項(xiàng)目或活動創(chuàng)建引人入勝的高質(zhì)量站點(diǎn)。這些網(wǎng)站在各種設(shè)備的屏幕上看起來都很漂亮——所有這些工作都無需學(xué)習(xí)設(shè)計(jì)或編程知識。
小結(jié)
本文介紹整個(gè) DevOps 工具鏈——包括規(guī)劃工具、問題跟蹤工具、源代碼管理、構(gòu)建和測試代碼、持續(xù)集成和部署源代碼、管理配置、使用云平臺、監(jiān)控和記錄等工具,后面還有溝通和知識共享這些軟工具的介紹。
DevOps 是一種令人興奮的工作方式。這不是唯一可行的方法,甚至可能不是最好的方法,將來可能會出現(xiàn)更好的選擇。但就目前而言,這是一種團(tuán)隊(duì)集體合作,且是通過可持續(xù)的方式運(yùn)送重要價(jià)值的好方法,它能夠幫助團(tuán)隊(duì)成員專注于客戶,而不是 IT 效率。