目錄
配置管理:
Puppet
Ansible
Chef
持續集成:
Jenkins
TeamCity
Bamboo
代碼管理:
GitHub
BitBucket
GitLab
持續部署:
Spinnaker
Octopus Deploy
Argo CD
漏洞管理:
TwistLock(Palo Alto Networks )
系統資料
Anchore
質量/測驗:
JMeter
JUnit
Selenium
SonarQube
記錄和監控:
Grafana
New Relic
Nagios
專案管理和協作
JIRA
Slack
Microsoft Teams
DevOps 正在改變軟體開發的狀態,在一項DevOps 調查中,超過 80% 的軟體行業受訪者表示,DevOps 正在以某種形式有效地為他們的作業增加價值--投產速度、產品質量等,
2021 年將是 DevOps 的重要一年,由于 DevOps 跨越 Dev、Ops、IT、安全和產品團隊,以及軟體開發的不同階段,因此有大量工具可供我們選擇,
在本文中,我詳細介紹了目前市場上可用的一些優秀的DevOps 工具,同時分類歸納整理,

配置管理:
Puppet

Puppet 是一種開源配置管理和部署工具,通常用于確保所有服務器都配置到所需的狀態,Puppet 是基于代理的,最常用于 Linux 和 Windows 同時控制多個應用程式服務器,
Puppet 主要用于客戶端/服務器配置,其中受管節點與服務器的配置保持同步,借助 Puppet 的代碼管理工具 R10K,可以更輕松地對 CI/CD 代碼實施自動化或手動更改、更新、審查和測驗,你還可以使用 R10K 和 Puppetfiles 來創建環境的自動部署,
Puppet 還提供了與 Git 的輕松集成以進行版本控制,
Puppet 是宣告性的,因此你需要定義一個宣告性狀態,Puppet會找出如何最好地實作該狀態,
缺點:
- 整體速度緩慢
- Puppet 一般無法自動檢查 exec 資源之外的系統狀態
- Hiera是Puppet的配置資料查找系統,它的執行速度也慢
Ansible

?
Ansible 是一種開源配置管理和編排工具,以其簡單性和性能而聞名,Ansible可以使用 SSH 連接到節點,
Ansible 可以在任何安裝了 Python 2(版本 2.7)或 Python 3(版本 3.5 及更高版本)的機器上運行,包括 Red Hat、Debian、CentOS、macOS 和 BSD,
Ansible 使用 YAML(一種標記語言)管理配置變得非常容易,對于跨平臺的自動化任務,Ansible 也很有效,你還可以使用 Ansible 的拉模式從特定檔案中獲取存盤庫和運行命令,將 shell 腳本和組態檔轉換為 Ansible Playbooks 或 Roles 也很容易,Ansible 也有很多可用的檔案,
缺點:
- 隨著系統規模變大,也變得緩慢
- 缺乏 Windows 支持
- 當數百個服務器需要同步時效率低下
Chef

Chef 是一個開源 DevOps 工具,主要用于配置管理,Chef 也基于master-agent模型,因為 Chef 客戶端在每臺客戶端機器上運行(使用“knife”工具并通過 SSH 進行通信),但是,Chef 與 Puppet 的不同之處在于它的額外層,這被稱為 Workstation,其中包含所有配置----這些配置首先在本地機器上自動測驗,然后推送到服務器,
當存在主機依賴時,Chef 非常出色,它會獲取系統狀態的描述,并將它們與代理的實時實體進行比較,并確保物件保持同步,
Chef 使用 AWS OpsWorks 等服務維護更大規模的自動化功能,Chef Inspec 還有助于確保網路和部署的安全性和完整性,Chef InSpec 是一個開源框架,允許對你的應用程式進行自動和手動測驗和審計,
AWS Opworks適用于在AWS中使用Chef Automate和Puppet Enterprise的用戶,
借助AWS Opworks,你可以輕松自動化服務器的部署,配置和管理方式,
官網鏈接:https://aws.amazon.com/opsworks/
盡管 Chef 具有強大的 GUI,但你必須了解 Ruby 才能利用 Chef 的基礎架構即代碼的真正力量,尤其是在涉及復雜任務和自定義時,
缺點:
- Agent 實體需要定期監聽 master 來安裝更新
- 初學者難以理解
- 缺乏詳細的檔案
- 缺乏按需的可擴展性
持續集成:
Jenkins
?

Jenkins 是一種用 Java 撰寫的自動化服務,它可以充當 CI(持續集成)工具,使開發人員可以輕松地將新組件集成到軟體中以實作無縫集成,Jenkins 使用插件進行集成來實作這一目標,
Jenkins 偵聽新的拉取請求,將新的作業分支合并到主代碼中,運行自動化測驗,生成新的測驗資料,報告失敗并將最新的代碼更改部署到 QA 環境,
Jenkins Pipeline 用于實作持續集成程序的自動化表達,你可以在流水線中定義構建檔案,將它們加載到 SCM 并配置作業變數,
Jenkins 已經存在了很長時間,并且由于其成熟的生態系統、插件支持、檔案和社區,實際上已經成為一個標準,由于其簡單的 UX/Syntax 流水線和 Docker 集成,它已成為許多公司的首選之一,
缺點:
- 要使用 Jenkins,你可能需要學習 Groovy,Jenkins 中的 Groovy 腳本不容易撰寫和編輯,
- 在許多情況下,你還需要在 UI 中手動配置構建、硬編碼組態檔和設定訪問控制,
- 如果沒有 JenkinsFile,Jenkins 極難使用,JenkinsFile 是一個文本檔案,包含 Jenkins Pipeline 的定義,
TeamCity

TeamCity 是一款高級 的CI 工具(也提供功能有限的免費版本),以其易于使用的界面、流暢的配置和創造性的功能而聞名,TeamCity 在 Java 環境和 Apache Tomcat 服務器中運行,但也可以安裝在 Windows 和 Linux 服務器上,
應該選擇 TeamCity 嗎?這在很大程度上取決于你的需求,如果你有預算,并且你的主要任務包括設定固定數量的構建代理,以便輕松地并行執行構建,TeamCity 適合你,TeamCity 也有一個非常完善的檔案,TeamCity 的“Snapshot Dependencies”功能允許你在整個流水線中保持相同的源版本,而無需代碼實作,
但是,TeamCity 會自動為你修復雪花代理(snowflake agents ),你必須為此使用配置工具或容器技術,
TeamCity 基于模板的構建配置可以讓你的生活更輕松,
TeamCity 還原生支持 AWS、GCE 和 Azure 中的代理自動擴展,它還通過插件支持 VMware 和 Kubernetes,還與 GitHub 本地集成,
缺點:
- 費用昂貴
- 日志難以決議
Bamboo

Bamboo 是由 Atlassian 開發的持續集成和持續部署服務器,Bamboo 的主要優勢之一是能夠在單個作業流中將自動化構建、測驗和發布與其他 Atlassian 產品(如 JIRA、BitBucket、Stash、Hipchat 和 Confluence)集成,從而創建一個穩固的軟體開發和交付的生態系統,
Bamboo 還具有可靠、易于使用的 GUI,
與 BitBucket、Confluence 和 Jira 的輕松集成是 Bamboo 的一大優勢,它還可以啟動類似 cron 的觸發器,如果你有審查分析、自動化測驗等,這些觸發器會派上用場,
缺點:
- Bamboo的代碼分析能力不強
- Bamboo 無法集中構建配置
- 沒有全域工具配置
- Bamboo 缺乏憑據插件,這意味著必須在每個相關的 Bamboo 專案上進行密碼設定或更改
代碼管理:
GitHub

GitHub 是全球數百萬人使用的最流行的源代碼管理工具之一,GitHub 的主要優勢包括其易于使用的 UI、其智能功能--如恢復意外洗掉的存盤庫、多樣化的集成和安全性,GitHub 幾乎很少宕機,這使得它非常可靠,
GitHub 擁有龐大的社區,非常適合開源專案,由于 Microsoft 擁有 GitHub,因此 Azure DevOps 和 Microsoft 工具可以實作可靠的集成,GitHub 使你可以更好地控制 CI/CD 的執行程序,
但是,GitHub 提供的免費的功能有限,
BitBucket

BitBucket 是一種軟體版本控制存盤庫服務,通常用于源代碼管理,該服務基于 Mercurial 或 Git 版本控制系統,如果你使用其他 Atlassian 產品,BitBucket 會很有用,在管理大量代碼存盤庫方面,BitBucket 也以其效率而聞名,免費的公共 BitBucket 存盤庫支持無限數量的用戶,
BitBucket 還以其與 JIRA 和 Confluence 的無縫集成而聞名,BitBucket 是私人存盤庫的首選,
BitBucket 還為完整的 CI/CD 周期提供流水線服務,
缺點:
- 正常運行時間中,BitBucket 不提供SLA 協議
- 用戶界面體驗不好
GitLab

GitLab 基于 Git,為軟體開發提供版本控制、持續集成、持續部署等功能,由于其強大的 CI 服務,大多數公司更喜歡使用 GitLab 進行源代碼管理,如果你希望在自己的服務器上集成 CI/CD,GitLab 也是一種可行的方法,因為你可以在你的服務器上托管 GitLab,GitLab 是免費和開源的,并提供無限成員數量的免費私人存盤庫,
GitLab 還允許你在私有環境中安裝部署,
持續部署:
Spinnaker

Spinnaker 是一個開源 CD 軟體平臺,可與 Kubernetes、Google Cloud Platform、AWS、Microsoft Azure 和 Oracle Cloud 配合使用,它主要是一個部署和交付平臺,用于獲取你的應用程式并將其部署到生產環境中,
Spinnaker 的儀表板和界面非常易于使用,開發人員可以輕松地進行自動構建、測驗、驗證并將代碼推送到生產環境,借助 Spinnaker,你可以使用 Kuberenetes、GitHub 和 Google 的云構建,提交和部署對軟體的更改,
Spinnaker 還可以構建 EC2 AMI、配置 ASG 和設定負載均衡器,
缺點:
- 缺乏有效的可擴展性
- 檔案不完善
- 自動化任務操作復雜
Octopus Deploy

Octopus Deploy 是一個用于自動化部署的 CD 工具,它可以在代理機器上自動部署應用程式和服務,Octopus Deploy 適用于 ASP.NET Web 應用程式、Java 應用程式、NodeJS 應用程式和運行自定義腳本到多種環境,包括 AWS 和 Azure,大多數情況下,它與 AzureDevOps 一起使用,并受到 Microsoft 生態系統公司的青睞,
Octopus Deploy 可以集成流水線的 CI 基礎設施,你可以向 Octopus 發起 API 呼叫,以通過 CI 流水線創建新版本并推送二進制檔案,
缺點:
- 費用昂貴
Argo CD

Argo CD 是為 Kubernetes 提供的 GitOps 持續交付工具,它是 CNCF Argo 專案的一部分,該專案是一組 Kubernetes 原生工具,用于在 Kubernetes 上運行和管理作業和應用程式,
理想情況下,開發人員希望專注于撰寫應用程式并將其代碼推送到 git 倉庫上,而不必擔心 CI/CD 流水線以及配置和運行應用程式時的其他操作問題,Kubernetes 上一個非常流行的模式是將應用程式從 git 自動部署到生產環境中,這就是 Argo CD 的用武之地,它會持續監視 git 倉庫的新提交,并自動將它們部署到生產環境中,Argo CD 應用倉庫中預定義的 Kubernetes 部署清單檔案來創建或升級在 Kubernetes 上運行的應用程式,
綜上可知, Argo CD 可以自動應用更新或更改的清單資訊,以對集群進行更改,ArgoCD 服務器可以跟蹤你的專案分支,Argo CD 還可以自動檢測何時將構建分支合并到部署分支中,
缺點:
- Argo CD 不支持 CI,這意味著如果你想要一個完整的 CI/CD 流水線,你將需要其他工具,如 Jenkins、Travis、Circle CI 或 Gitlab CI,
- 不支持回滾鉤子( rollback hooks),
漏洞管理:
TwistLock(Palo Alto Networks )

TwistLock 為基于容器的應用程式提供威脅和漏洞檢查,該服務以其與 Kubenetes 和 Docker 容器的集成而聞名,TwistLock 現在歸 PaloAlto Networks 所有,通過其運行時應用安全保護和容器自動掃描,提供運行時的安全檢查,
TwistLock 有一個強大的檔案,而且易于部署并優化資源消耗,它還以其 CI/CD 流水線集成、對容器安全協議和鏡像掃描的強合規性而聞名,
TwistLock 還以其精細級別的安全分析而聞名,該服務還使用 AI 功能來了解你的環境,
他們還提供基于 SaaS 的安全掃描(prisma 云)和內部部署解決方案,
系統資料

Sysdig 是一種用于云基礎架構、服務和應用程式的監控工具,Sysdig 通常用于 PaaS 基礎設施上的容器安全、監控以及編排監控,
Sysdig 還可用于監控 OpenShift 集群,因為它提供細粒度資料來分析指標,
使 Sysdig 脫穎而出的是其容器監控與編排層的強大集成,
如果你想深入了解行程級流量,Sysdig 也很有用,Sysdig Opensource 允許你在內核系統呼叫級別捕獲主機的詳細資訊,
其他一些功能包括:
- 網路圖
- 監控基于 AWS 的系統
- 輕松集成
Anchore

?
Anchore 是一個完整的容器安全作業流解決方案,可與各種開發工具和平臺無縫集成,Anchore 為一系列不同的應用程式提供量身定制的容器檢查和合規性解決方案,使團隊能夠遵守行業安全標準,
安全團隊可以審計和驗證整個組織的合規性,??
功能包括:
- 支持webhooks,包括云托管或本地 Kubernetes 環境和 CI/CD 平臺
- 基于策略的安全性和合規性
- 檢查: - 漏洞掃描 - 密鑰和憑據資訊 - 作業系統 - 第三方庫 - Dockerfile
質量/測驗:
JMeter

JMeter 是一種用于測驗 Web 應用程式的負載測驗工具,即使 JMeter 用于負載/性能測驗,它仍然可以用于 API 呼叫、狀態代碼和回應,JMeter 還支持很多插件,
你還可以使用 JMeter 的并發池大小功能,在測驗期間為每個執行緒啟動多個連接,
JMeter 是獨立于平臺的,可以在不同環境下流暢運行,
你還可以通過多種方式查看測驗結果,包括圖形、圖表、樹視圖、XML 和 JSON,
JUnit

JUnit 是一個單元測驗框架,主要用于 Java 應用程式,JUnit 框架屬于 Java 框架的 xUnit 家族,
JUnit 使用注解來幫助你確定應該在測驗中使用的方法,、也因其自定義功能而在開發者社區中享有盛譽,你還可以在 JUnit 中使用斷言來測驗預期結果,
在 JUnit 中,你可以在多個引數之間使用不同的組合,使用 JUnit 為整個應用程式創建和管理豐富的單元測驗用例,將會變得非常容易,JUnit 還可以在模塊或系統級測驗之前,自動測驗應用程式的所有功能和單元,
Selenium

?
Selenium 是一個端到端的測驗軟體測驗平臺,以其友好的用戶界面而聞名,它允許測驗人員模擬 Web 系統行為、發送 API 請求并分析系統行為,
Selenium 允許你用 RUBY 或 HTML 撰寫復雜和高級的測驗腳本,以解決多個級別的復雜性,
Selenium 為 Web 應用程式開發人員提供了一個完整的 IDE,用于編輯、記錄和除錯測驗,你可以為多個測驗用例設定自定義的起點和斷點,
SELENIUM 的其他一些主要特性包括:
- 與多個開發平臺集成,如 Jenkins、Maven、TestNG、QMetry、SauceLabs,
- 使用 Selenium Grid 進行并行測驗,
- 兼容所有著名語言,包括 Java、Ruby、C#、PHP、JavaScript、Perl 和 R,
SonarQube
?

SonarQube 是一個開源工具,用于代碼質量、持續檢查、安全和錯誤分析,它適用于 Java、Python、XML 和 PHP 以及許多開箱即用的語言,該工具可以通過 xpath 運算式動態添加規則,
SonarQube 主要用于靜態分析,它與 GitLab 有很好的集成,SonarQube 的儀表板和高級跟蹤,使你可以對代碼質量和檢查進行大量控制,
一些缺點包括:
- SonarQube 與 JavaScript 的集成不是很順利
- 有時執行比較慢
- 對第三方工具和插件的支持有限
記錄和監控:
Grafana

Grafana 是一種基于 Apache 2.0 許可證構建的開源分析和監控解決方案,以其出色的 UI、圖形、圖表、實時分析和觸發器而聞名,Grafana 可以從多個來源提取資料,包括 Graphite、InfluxDB、OpenTSDB 和 Prometheus,
Grafana 主要用于監控 Docker 容器、網路設備、帶寬、資料流、虛擬服務器、Azure 基礎設施、資料庫和 Web 應用程式,Grifana 還以其豐富的插件,以及與 Telegraf 和 Zabbix 的無縫集成而聞名,
Grafana 可以為你可視化資料,包括準確的宕機時間、宕機前的事件、用戶日志、資料中心溫度和性能預測等指標,
New Relic

New Relic 是一個全堆疊監控工具,用于跟蹤基于云的應用程式和軟體,New Relic 提供豐富的儀表板、分布式跟蹤支持、詳細日志、自上而下的可見性和監控,New Relic 對后端呼叫具有強大的監控能力,可以詳細說明系統速度變慢的原因,
該工具對于需要詳細分析多個堆疊組態檔的公司非常有用,
NEW RELIC 的一些缺點包括
- 客戶支持比較少
- 費用昂貴
- 除錯復雜困難
Nagios

Nagios 是一個開源軟體,可以監控系統、網路和基礎設施,它主動監控服務的健康狀況并維護日志存盤檔案,它還顯示宕機原因、宕機持續時間和可能觸發宕機的事件
Nagios 還提供了幾個配置選項和警報功能,你可以抑制主機警報、在主機上強制實施維護模式、自定義警報通知設定等等,
Nagios 支持數百個插件,你還可以創建自定義并的插件,
但是,由于 Nagios 相對較舊,因此很難使用最新的基礎架構進行操作,它缺乏資料庫驅動的配置支持,
專案管理和協作
JIRA

?
JIRA 是全球軟體公司使用的專案管理和協作工具,JIRA 是一個非常強大的工具,提供各種自定義和功能,
為了充分利用 JIRA 的優勢和強大功能,你需要一位專家,因為如果你的需求很復雜,則該工具很難配置,你可以使用 JIRA 的 Portfolio 功能創建時間表、發布沖刺計劃等,你可以使用 JIRA 的結構來跟蹤不同級別的進度,
其他一些功能包括
- Zephyr for JIRA 是一個本地測驗應用程式,可用于整個軟體測驗生命周期
- 關鍵路徑工具
- 計算團隊速度的工具
- 與 Atlassian 的產品(如 BitBucket 和 Bamboo)集成
JIRA 的一些缺點包括
- 用戶界面體驗不好
Slack

Slack 是一種協作和通信工具,最近廣受歡迎,Slack 以其實時對話、搜索功能和友好的用戶界面而聞名,
由于其強大的用戶界面、有趣的功能和敏捷性,Slack 正在迅速取代軟體行業的電子郵件,
由于它的流行,現在有幾個軟體協作工具為即時訊息提供了 Slack 集成,
JIRA 和 Slack 集成通常用于專案活動日志、Sprint 會議、票務解決方案和警報,
還可以為 Slack 制作自定義聊天機器人、觸發器等,
Microsoft Teams

Microsoft Teams 是一種通信和協作工具,它對在 Windows 生態系統中作業的公司很有用,除了即時訊息服務之外,Teams 也很有用,因為它與 Azure DevOps 平臺集成,你還可以將你的團隊與 Azure Repos 和 Azure Pipelines 連接起來,
團隊提供不同的渠道,團隊可以在其中相互協作,這將創建一個特定于專案的通信存盤庫,你可以隨時搜索它,
其他一些功能包括:
- 檔案倉庫
- 電話/視頻會議
- 集成聊天機器人
- 集成 Office 365
雖然選擇很好,但眾多太多可能令人生畏,因為缺乏標準化和自動化,可能會在入職或交接程序中產生極高的學習曲線,通常,同一組織內的團隊會投資于相似的工具,從而浪費時間和財務資源,隨著構建和集成工具鏈的增多,也會讓開發人員筋疲力盡,隨著工具版本的老化,安全問題也會暴露, 因此,選擇工具時要做好統一規劃,長遠考慮,以及對新工具的關注,
參考鏈接: https://dzone.com/articles/top-25-devops-tools-for-2021
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/294527.html
標籤:其他
