2021年25佳DevOps工具, 你用了几个

DevOps 正在改变软件开发的状态。在一项DevOps 调查中,超过 80% 的软件行业受访者表示,DevOps 正在以某种形式有效地为他们的工作增加价值–投产速度、产品质量等。

2021 年将是 DevOps 的重要一年。由于 DevOps 跨越 Dev、Ops、IT、安全和产品团队,以及软件开发的不同阶段,因此有大量工具可供我们选择。

在本文中,我详细介绍了目前市场上可用的一些优秀的DevOps 工具,同时分类归纳整理。

2021 年 25 大 DevOps 工具 - Opsera.io

配置管理:

Puppet

#木偶

Puppet 是一种开源配置管理和部署工具,通常用于确保所有服务器都配置到所需的状态。Puppet 是基于代理的,最常用于 Linux 和 Windows 同时控制多个应用程序服务器。

Puppet 主要用于客户端/服务器配置,其中受管节点与服务器的配置保持同步。借助 Puppet 的代码管理工具 R10K,可以更轻松地对 CI/CD 代码实施自动化或手动更改、更新、审查和测试。你还可以使用 R10K 和 Puppetfiles 来创建环境的自动部署。

Puppet 还提供了与 Git 的轻松集成以进行版本控制。

Puppet 是声明性的,因此你需要定义一个声明性状态,Puppet会找出如何最好地实现该状态。

缺点:
  • 整体速度缓慢
  • Puppet 一般无法自动检查 exec 资源之外的系统状态
  • Hiera是Puppet的配置数据查找系统,它的执行速度也慢

Ansible

img

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

img

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

img

Jenkins 是一种用 Java 编写的自动化服务,它可以充当 CI(持续集成)工具,使开发人员可以轻松地将新组件集成到软件中以实现无缝集成。Jenkins 使用插件进行集成来实现这一目标。

Jenkins 侦听新的拉取请求,将新的工作分支合并到主代码中,运行自动化测试,生成新的测试数据,报告失败并将最新的代码更改部署到 QA 环境。

Jenkins Pipeline 用于实现持续集成过程的自动化表达。你可以在流水线中定义构建文件,将它们加载到 SCM 并配置作业变量。

Jenkins 已经存在了很长时间,并且由于其成熟的生态系统、插件支持、文档和社区,实际上已经成为一个标准。由于其简单的 UX/Syntax 流水线和 Docker 集成,它已成为许多公司的首选之一。

缺点:
  • 要使用 Jenkins,你可能需要学习 Groovy。Jenkins 中的 Groovy 脚本不容易编写和编辑。
  • 在许多情况下,你还需要在 UI 中手动配置构建、硬编码配置文件和设置访问控制。
  • 如果没有 JenkinsFile,Jenkins 极难使用。JenkinsFile 是一个文本文件,包含 Jenkins Pipeline 的定义。

TeamCity

img

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

img

Bamboo 是由 Atlassian 开发的持续集成和持续部署服务器。Bamboo 的主要优势之一是能够在单个工作流中将自动化构建、测试和发布与其他 Atlassian 产品(如 JIRA、BitBucket、Stash、Hipchat 和 Confluence)集成,从而创建一个稳固的软件开发和交付的生态系统。

Bamboo 还具有可靠、易于使用的 GUI。

与 BitBucket、Confluence 和 Jira 的轻松集成是 Bamboo 的一大优势。它还可以启动类似 cron 的触发器,如果你有审查分析、自动化测试等,这些触发器会派上用场。

缺点:
  • Bamboo的代码分析能力不强
  • Bamboo 无法集中构建配置
  • 没有全局工具配置
  • Bamboo 缺乏凭据插件,这意味着必须在每个相关的 Bamboo 项目上进行密码设置或更改

代码管理:

GitHub

img

GitHub 是全球数百万人使用的最流行的源代码管理工具之一。GitHub 的主要优势包括其易于使用的 UI、其智能功能–如恢复意外删除的存储库、多样化的集成和安全性。GitHub 几乎很少宕机,这使得它非常可靠。

GitHub 拥有庞大的社区,非常适合开源项目。由于 Microsoft 拥有 GitHub,因此 Azure DevOps 和 Microsoft 工具可以实现可靠的集成。GitHub 使你可以更好地控制 CI/CD 的执行过程。

但是,GitHub 提供的免费的功能有限。

BitBucket

img

BitBucket 是一种软件版本控制存储库服务,通常用于源代码管理。该服务基于 Mercurial 或 Git 版本控制系统。如果你使用其他 Atlassian 产品,BitBucket 会很有用。在管理大量代码存储库方面,BitBucket 也以其效率而闻名。免费的公共 BitBucket 存储库支持无限数量的用户。

BitBucket 还以其与 JIRA 和 Confluence 的无缝集成而闻名。BitBucket 是私人存储库的首选。

BitBucket 还为完整的 CI/CD 周期提供流水线服务。

缺点:
  • 正常运行时间中,BitBucket 不提供SLA 协议
  • 用户界面体验不好

GitLab

img

GitLab 基于 Git,为软件开发提供版本控制、持续集成、持续部署等功能。由于其强大的 CI 服务,大多数公司更喜欢使用 GitLab 进行源代码管理。如果你希望在自己的服务器上集成 CI/CD,GitLab 也是一种可行的方法,因为你可以在你的服务器上托管 GitLab。GitLab 是免费和开源的,并提供无限成员数量的免费私人存储库。

GitLab 还允许你在私有环境中安装部署。

持续部署:

Spinnaker

img

Spinnaker 是一个开源 CD 软件平台,可与 Kubernetes、Google Cloud Platform、AWS、Microsoft Azure 和 Oracle Cloud 配合使用。它主要是一个部署和交付平台,用于获取你的应用程序并将其部署到生产环境中。

Spinnaker 的仪表板和界面非常易于使用。开发人员可以轻松地进行自动构建、测试、验证并将代码推送到生产环境。借助 Spinnaker,你可以使用 Kuberenetes、GitHub 和 Google 的云构建,提交和部署对软件的更改。

Spinnaker 还可以构建 EC2 AMI、配置 ASG 和设置负载均衡器。

缺点:
  • 缺乏有效的可扩展性
  • 文档不完善
  • 自动化任务操作复杂

Octopus Deploy

img

Octopus Deploy 是一个用于自动化部署的 CD 工具。它可以在代理机器上自动部署应用程序和服务。Octopus Deploy 适用于 ASP.NET Web 应用程序、Java 应用程序、NodeJS 应用程序和运行自定义脚本到多种环境,包括 AWS 和 Azure。大多数情况下,它与 AzureDevOps 一起使用,并受到 Microsoft 生态系统公司的青睐。

Octopus Deploy 可以集成流水线的 CI 基础设施。你可以向 Octopus 发起 API 调用,以通过 CI 流水线创建新版本并推送二进制文件。

缺点:
  • 费用昂贵

Argo CD

img

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 )

img

TwistLock 为基于容器的应用程序提供威胁和漏洞检查。该服务以其与 Kubenetes 和 Docker 容器的集成而闻名。TwistLock 现在归 PaloAlto Networks 所有,通过其运行时应用安全保护和容器自动扫描,提供运行时的安全检查。

TwistLock 有一个强大的文档,而且易于部署并优化资源消耗。它还以其 CI/CD 流水线集成、对容器安全协议和镜像扫描的强合规性而闻名。

TwistLock 还以其精细级别的安全分析而闻名。该服务还使用 AI 功能来了解你的环境。

他们还提供基于 SaaS 的安全扫描(prisma 云)和内部部署解决方案。

系统数据

img

Sysdig 是一种用于云基础架构、服务和应用程序的监控工具。Sysdig 通常用于 PaaS 基础设施上的容器安全、监控以及编排监控。

Sysdig 还可用于监控 OpenShift 集群,因为它提供细粒度数据来分析指标。

使 Sysdig 脱颖而出的是其容器监控与编排层的强大集成。

如果你想深入了解进程级流量,Sysdig 也很有用。Sysdig Opensource 允许你在内核系统调用级别捕获主机的详细信息。

其他一些功能包括:
  • 网络图
  • 监控基于 AWS 的系统
  • 轻松集成

Anchore

img

Anchore 是一个完整的容器安全工作流解决方案,可与各种开发工具和平台无缝集成。Anchore 为一系列不同的应用程序提供量身定制的容器检查和合规性解决方案,使团队能够遵守行业安全标准。

安全团队可以审计和验证整个组织的合规性。‍‍

功能包括:
  • 支持webhooks,包括云托管或本地 Kubernetes 环境和 CI/CD 平台
  • 基于策略的安全性和合规性
  • 检查: – 漏洞扫描 – 密钥和凭据信息 – 操作系统 – 第三方库 – Dockerfile

质量/测试:

JMeter

img

JMeter 是一种用于测试 Web 应用程序的负载测试工具。即使 JMeter 用于负载/性能测试,它仍然可以用于 API 调用、状态代码和响应。JMeter 还支持很多插件。

你还可以使用 JMeter 的并发池大小功能,在测试期间为每个线程启动多个连接。

JMeter 是独立于平台的,可以在不同环境下流畅运行。

你还可以通过多种方式查看测试结果,包括图形、图表、树视图、XML 和 JSON。

JUnit

img

JUnit 是一个单元测试框架,主要用于 Java 应用程序。JUnit 框架属于 Java 框架的 xUnit 家族。

JUnit 使用注解来帮助你确定应该在测试中使用的方法。、也因其自定义功能而在开发者社区中享有盛誉。你还可以在 JUnit 中使用断言来测试预期结果。

在 JUnit 中,你可以在多个参数之间使用不同的组合。使用 JUnit 为整个应用程序创建和管理丰富的单元测试用例,将会变得非常容易。JUnit 还可以在模块或系统级测试之前,自动测试应用程序的所有功能和单元。

Selenium

img

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

img

SonarQube 是一个开源工具,用于代码质量、持续检查、安全和错误分析。它适用于 Java、Python、XML 和 PHP 以及许多开箱即用的语言。该工具可以通过 xpath 表达式动态添加规则。

SonarQube 主要用于静态分析。它与 GitLab 有很好的集成。SonarQube 的仪表板和高级跟踪,使你可以对代码质量和检查进行大量控制。

一些缺点包括:
  • SonarQube 与 JavaScript 的集成不是很顺利
  • 有时执行比较慢
  • 对第三方工具和插件的支持有限

记录和监控:

Grafana

img

Grafana 是一种基于 Apache 2.0 许可证构建的开源分析和监控解决方案,以其出色的 UI、图形、图表、实时分析和触发器而闻名。Grafana 可以从多个来源提取数据,包括 Graphite、InfluxDB、OpenTSDB 和 Prometheus。

Grafana 主要用于监控 Docker 容器、网络设备、带宽、数据流、虚拟服务器、Azure 基础设施、数据库和 Web 应用程序。Grifana 还以其丰富的插件,以及与 Telegraf 和 Zabbix 的无缝集成而闻名。

Grafana 可以为你可视化数据,包括准确的宕机时间、宕机前的事件、用户日志、数据中心温度和性能预测等指标。

New Relic

img

New Relic 是一个全栈监控工具,用于跟踪基于云的应用程序和软件。New Relic 提供丰富的仪表板、分布式跟踪支持、详细日志、自上而下的可见性和监控。New Relic 对后端调用具有强大的监控能力,可以详细说明系统速度变慢的原因。

该工具对于需要详细分析多个堆栈配置文件的公司非常有用。

NEW RELIC 的一些缺点包括
  • 客户支持比较少
  • 费用昂贵
  • 调试复杂困难

Nagios

img

Nagios 是一个开源软件,可以监控系统、网络和基础设施。它主动监控服务的健康状况并维护日志存储文件。它还显示宕机原因、宕机持续时间和可能触发宕机的事件

Nagios 还提供了几个配置选项和警报功能。你可以抑制主机警报、在主机上强制实施维护模式、自定义警报通知设置等等。

Nagios 支持数百个插件。你还可以创建自定义并的插件。

但是,由于 Nagios 相对较旧,因此很难使用最新的基础架构进行操作。它缺乏数据库驱动的配置支持。

项目管理和协作

JIRA

img

JIRA 是全球软件公司使用的项目管理和协作工具。JIRA 是一个非常强大的工具,提供各种自定义和功能。

为了充分利用 JIRA 的优势和强大功能,你需要一位专家,因为如果你的需求很复杂,则该工具很难配置。你可以使用 JIRA 的 Portfolio 功能创建时间表、发布冲刺计划等。你可以使用 JIRA 的结构来跟踪不同级别的进度。

其他一些功能包括
  • Zephyr for JIRA 是一个本地测试应用程序,可用于整个软件测试生命周期
  • 关键路径工具
  • 计算团队速度的工具
  • 与 Atlassian 的产品(如 BitBucket 和 Bamboo)集成
JIRA 的一些缺点包括
  • 用户界面体验不好

Slack

img

Slack 是一种协作和通信工具,最近广受欢迎。Slack 以其实时对话、搜索功能和友好的用户界面而闻名。

由于其强大的用户界面、有趣的功能和敏捷性,Slack 正在迅速取代软件行业的电子邮件。

由于它的流行,现在有几个软件协作工具为即时消息提供了 Slack 集成。

JIRA 和 Slack 集成通常用于项目活动日志、Sprint 会议、票务解决方案和警报。

还可以为 Slack 制作自定义聊天机器人、触发器等。

Microsoft Teams

img

Microsoft Teams 是一种通信和协作工具。它对在 Windows 生态系统中工作的公司很有用。除了即时消息服务之外,Teams 也很有用,因为它与 Azure DevOps 平台集成。你还可以将你的团队与 Azure Repos 和 Azure Pipelines 连接起来。

团队提供不同的渠道,团队可以在其中相互协作。这将创建一个特定于项目的通信存储库,你可以随时搜索它。

其他一些功能包括:
  • 文件仓库
  • 电话/视频会议
  • 集成聊天机器人
  • 集成 Office 365

虽然选择很好,但众多太多可能令人生畏。因为缺乏标准化和自动化,可能会在入职或交接过程中产生极高的学习曲线。通常,同一组织内的团队会投资于相似的工具,从而浪费时间和财务资源。随着构建和集成工具链的增多,也会让开发人员筋疲力尽。随着工具版本的老化,安全问题也会暴露。 因此,选择工具时要做好统一规划,长远考虑,以及对新工具的关注。

参考链接: https://dzone.com/articles/top-25-devops-tools-for-2021

K8S中文社区微信公众号

评论 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    最全空降Golang资料补给包(满血战斗),包含文章,书籍,作者论文,理论分析,开源框架,云原生,大佬视频,大厂实战分享ppt https://github.com/0voice/Introduction-to-Golang

    5suitaitou1个月前 (08-13)回复