2021年最优秀的 DevOps 工具

Blog
Author:
Ori HochOri Hoch
Published On:
8月 5, 2021
Estimated reading time:
1 minutes

 

最近,一份关于 DevOps 趋势的 IDC 报告预测,“到 2022 年,DevOps 市场预计将从 29 亿美元飞速增长到 80 亿美元”,其部分推动力源自 DevOps  工具产品的不断涌现。

诚然,接受 DevOps 文化比使用工具更重要,顶尖的 DevOps 工具甚至对团队决策和态度也影响深远。这些工具通常能够无缝集成,使用简单方便。在这里,我将参考自己的 DevOps 经验,重点推荐一些我认为在这个领域内最好的 DevOps 工具。不过,新工具琳琅满目,且不断更新换代,要了解每一个工具是不现实的,因此本文只专注于最优秀的一部分。鉴于文章工具简介有限,DevOps 中不同层面,如项目管理、版本控制、基础设施管理(架构即代码)、连续部署、功能切换等领域的许多优秀工具可能无法一一涉及。

1.Git 版本控制

Git-logo_incredibuild

工具简介:Git 是一个版本控制系统,用于管理分布式项目和团队工作。尽管大部分 Git 的使用是通过托管服务(如 GitHub GitLab),但许多组织根据策略或管理,选择在本地自行托管 Git

选择原因:2005 年发布以来,Git 的使用量呈爆炸式增长,也逐渐发展成为软件版本控制的实际标准。

  • GitHub 应该是市场上最有名的 Git 服务提供商,用户范围广,用户社区活跃。2018 年,微软收购 Github,开始提供 Actions、安全警报、讨论和订阅等功能。此外,GitHub 还提供了内置的容器注册和 Kubernetes 集成选项。这些功能将 GitHub 从单纯的代码管理工具解放出来,也因此 GitHub 成为横跨开发、通信和安全多个领域的重要工具。
  • GitLab 的许多功能与 GitHub 类似。除此之外,还有一些附加功能,如项目数据分析,指出代码更改可能对系统造成的影响。GitLab 还包括一个内置的容器存储库,以及 Kubernetes 集成以支持 DevOps,与 GitHub非常相似。更多关于 GitLab 的信息

GitHub 和 GitLab 都支持一种代码执行平台,即可集成到软件开发周期(SDLC),SDLC 是 DevOps 的一项重要功能。

除了这些解决方案之外,一种负责软件管理的方法,GitOps,也迅速让 Git 更为热门。

官网:https://git-scm.com

替代产品:BitbucketSourceforge

2.Docker –容器

 Docker_-logo_incredibuild

工具简介:容器,即一些可重复使用的包,Docker 借助容器将程序的运行环境分成不同的抽象层。各容器互相区隔,绑定各自所需的软件、库和配置文件。

入选原因:很少有技术能像 Docker 那样对整个软件开发行业产生如此重大的影响。2013 年 Docker 发布时,容器化已不是一个新概念,Docker 也不是第一个实现容器化的平台,然而,Docker Engine 将容器商品化,瞬间点燃了全世界软件工程师的热情。最近,Docker 通过支持高度可重用、面向服务的容器组件,成为采用微服务架构的关键组件。

官网:https://www.docker.com/

替代产品:Linux LXC、Microsoft Hyper-V、rkt.

相关阅读:Docker vs VM。简而言之,Docker 容器只能在有限的范围内将环境区隔,所有进程依然在同一台主机上运行。与虚拟化解决方案相比,Docker 容器的隔离程度要弱得多。

3.Terraform – 架构即代码

Terraform_-logo_incredibuild

工具简介:Terraform 是由 Hashicorp 设计的一个基础架构,是一个代码工具。通过使用声明性语法描述资源,Terraform 可以支持自然和高度可重复的配置。Terraform 分两个阶段运行,一是计划阶段:生成执行计划;二是执行阶段:应用计划。

选择原因:Terraform 将现有基础架构商品化为代码,在公有云基础架构、私有云基础架构、网络设备、软件即服务和平台即服务平台中备受欢迎。

官网:https://www.terraform.io/

替代产品:PulumiAnsibleSalt

4.Kubernetes –容器编排工具

Kubernetes_-logo_incredibuild

工具简介:Kubernetes 是一个容器编排平台,支持程序的自动部署、扩展和管理。Kubernetes 还支持许多不同的管理策略和实用程序,例如,使用 etcd 管理密钥/值,或者使用 RancherPortainer 管理运营。许多组织还发现,应用服务网格,如 IstioLinkerd 来管理容器和服务之间的交互也很有效果。

选择原因:2014 年首次发布以来,Kubernetes(K8s)已成为容器管理和编排的最佳平台。除了进行内部和云托管,K8s 还是主流云供应商的托管服务产品,例如 AWS Elastic Kubernetes Service (EKS)、GCP Kubernetes Engine (GKE) 和 Azure Kubernetes Service (AKS)。此外,Kubernetes 还支持一些托管容器平台,如 AWS Elastic Container Service (ECS)

Kubernetes 平台还支持许多扩展及附加服务,包括 HelmknativeKeda 等工具和服务。本文将不会详细展开,但今后有机会可以跟大家一起研究。

官网:https://kubernetes.io/

替代产品OpenshiftRancherNomad

相关阅读:

Docker vs Kubernetes ——对立还是统一?

使用 Kubernetes 构建 CI 作业及处理通用进程

5.Jenkins –持续集成

Jenkins_-logo_incredibuild

工具简介:Jenkins 依然是最流行的 CI 管道工具,帮助企业在软件开发周期(SDLC)中实现自动化,是一个开源平台。Jenkins 拥有各种各样的插件,可以扩展本机功能,连接开发、自动化、发布管理等多个交叉领域。更多 Jenkins 相关信息,请点击阅读(包括与 Jenkins Incredibuild 集成信息)。

选择原因:Jenkins 就像是 SDLC 的瑞士军刀,具有各种服务或插件,可满足纷繁复杂的 DevOps 需求。

官网:https://www.jenkins.io/

替代产品: 在之前的博客中,我们讨论了 Jenkins vs BambooJenkins vs TeamCity,以及 Jenkins vs Azure DevOps.

6.ArgoCD – 持续部署

ArgoCD_-logo_incredibuild

工具简介:ArgoCD是一个声明式持续交付(CD)工具,帮助在 Kubernetes 使用 GitOps。ArgoCD 以声明方式管理 Kubernetes 资源,支持 Helm 图表、kustomize 程序、YAML 配置等。ArgoCD 采用直接资源管理的程序模式,或采用抽象到父程序中的继承应用程序模型。

选择原因:部署基础架构和安装容器管理框架都是为了部署容器本身。在这一点上,ArgoCD 算是先驱工具。ArgoCD 可以与 Jenkins CircleCI 等工具无缝集成,或者直接与 Git 存储库集成。更改的需求到达 ArgoCD,ArgoCD 开始计算当前状态和目标状态的差值,然后采取行动使差值合理化。

官网:https://argoproj.github.io/argo-cd

替代产品GitHubHarnessSpinnaker

7.ELK Stack –日志记录和数据分析

ELK_-logo_incredibuild

工具简介:“ELK”是 Elasticsearch、Logstash 和 Kibana 的组合。Logstash从远程端点(如系统或容器)收集日志数据,Elasticsearch 进行搜索和分析,Kibana 将分析结果可视化为图表。

选择原因:由于使用简单且灵活,ELK 多年来一直是日志记录和分析的王牌工具。ELK 不仅可以收集和聚合数据,还能深入解析其含义,厘清数据点之间的复杂关系。这些分析将反馈给 DevOps,帮助扩展、稳定性、安全性等决策。

官网:https://www.elastic.co/what-is/elk-stack替代产品:SplunkSumo LogicGrafana-Loki

8. 虚拟架构和托管服务

cloud-providers_-logo_incredibuild-1

工具简介:云服务或云计算,通常指通过各种抽象化的服务将硬件虚拟化,用于分配和管理资源。

选择原因:2002 年 AWS 成立时,中心虚拟化数据已经不是新鲜事了,但公有云应用的增长无疑是过去 20 年中最重要的技术趋势。使用云服务依然是主流,特别是在大型企业组织中,技术不断更新,系统改朝换代,但云已经成为技术行业的关键部分。

由于各大云供应商,如亚马逊、微软、谷歌,的技术创新,云服务的增长趋势依然强劲。另一方面,云资源用户也在不断进行创新使用、配置。这种良性循环势必会不断激发云技术在未来的价值。

官网:https://aws.amazon.com/ | https://cloud.google.com/ | https://azure.microsoft.com/en-us/

替代产品:VMWareOpenshift

9.LaunchDarkly – 功能切换管理

LaunchDarkly_-logo_incredibuild

工具简介:LaunchDarkly 通过管理功能切换,动态控制软件程序。

选择原因:功能切换是 DevOps 效率的关键,有效的功能切换管理可以将开发和部署与发布及影响分隔,极大地提升团队效率。LaunchDarkly 可促进频繁发布,增强发布版本的可靠性,而无需采用 “实时测试”(Test in Production)的方法。.

LaunchDarkly 强化切换管理,提供简化的视图,便于用户查看。同时,还可以向最终用户或内部用户定向公开切换开关。

官网:https://launchdarkly.com/

替代产品: SplitConfigCat 

10.Prometheus- 监管和提示

Prometheus_-logo_incredibuild

工具简介:Prometheus 将度量(metrics)记录为时序事件,存储在时间序列数据库中,用户可以使用自己的查询语言(PromQL)进行访问、整合。该软件将开发上游与其他可视化工具(如 Grafana)和报警平台(如 PagerDuty)集成。

选择原因:拉式驱动方法和发现服务,可支持微服务、容器、 Kubernetes的动态功能,metrics监控。数据存储的时序方法,使 Prometheus 成为高度动态操作,如 Kubernetes 容器或公有云计算资源的最佳选择。作为 CNCF 开源项目,Prometheus 用户社区也很活跃,因此产品的生命力很旺盛。

官网:https://prometheus.io

替代产品:DatadogNew RelicZabbix

11.Dependabot – 代码依赖项更新

工具简介:Dependabot 是一个开源工具,用于日常扫描代码依赖项,产生拉取请求,改善过时的代码问题。

选择原因:每年都有大量的安全漏洞源自补丁软件的缺失。尽管 Dependabot 并不能解决可能出现的所有补丁问题,但脱离于 SDLC 的自动化工作不仅可以节省开发人员的时间和精力,而且有助于确保及时应用更改,同时仍然通过 Git 拉取请求保证代码的实时性。

官网:https://dependabot.com

替代产品:SnykSonarQube   

12.Slack- 通信工具

工具简介:Slack 是一个商业通信平台,包括小组聊天、视频通话和广播公告等功能(@ 功能不适合害羞的人)。Slack 还支持跨组织通信,例如与云本地计算基金会(CNCF)、cloud-native.slack.com ,以及相当活跃的 C++ 论坛cpplang.slack.com,或公司将外部成员加入讨论中,例如与供应商合作解决问题。Slack API 还可以与自动化脚本以及外部平台、其他供应商集成,从而可以自动接收外部 Slack 消息。

选择原因:有效的沟通是所有组织的生命线,更是DevOps文化的关键。在过去 18 个月里,全世界对沟通的依赖有目共睹。Slack 广受欢迎,此外其出色的软件功能也是用户青睐的重要原因。

官网:https://slack.com

替代产品:Microsoft TeamsGoogle ChatDiscord 

13.Jira – 项目管理

Jira_-logo_incredibuild

工具简介:Jira 是 Atlassian 的项目管理和问题追踪平台。

选择原因:团队遵循许多不同的项目管理策略,如 Agile、Kanban 或者Lean,但 Jira 始终最受用户喜欢。无论采用何种策略进行项目管理,都能让工作变得有意义。DevOps 团队在通过仪表盘和项目计划(如 Jira 提供的)以同步模式(如使用 Slack)或异步模式进行沟通时最为有效。

官网:https://www.atlassian.com/software/jira

替代产品:ZepelBasecampTrello

关于Incredibuild

你是否想过 Incredibuild 也是 DevOps 的重要部分? Incredibuild 可加速从编译、测试等各种计算密集型任务的开发。

软件交付速度受多种因素的影响,例如在云中启动计算资源所需的时间,或在发布之前完成软件测试的时间。但是对于编译语言(如 C/C++)来说,编译大型项目所需的时间是影响最终交付的重要因素。Incredibuild 通过将编译进程分发到公有云中的其他机器上,大幅减少编译时间,提高速度,保证产品按时发布,减少修复和迭代更改所需的时间。点击获取免费的许可证

最佳 DevOps 工具——总结

DevOps 文化和工具不可分割,虽然许多组织已经找到了一些最适合自己的工具,但这个行业中,各种工具的替代产品和更新层出不穷。每个人的DevOps 旅程都不一样,或者说,几乎每个人的 DevOps 经验都是独一无二的。但是,探索和部署 DevOps 工具是最好的开头。