DevOps 不仅是一种文化转变,而且还需要强大的工具才能实现。下面,我们汇总了一些当今最受欢迎的 DevOps 工具。但是,将大量资金投入到精美的SaaS解决方案中可能会迅速吞噬云预算。这些 DevOps 工具都是开放源代码,并支持从容器构建和编排到微服务网络,配置管理,CI / CD 自动化,全栈监视等更多功能。
1. Kubernetes
由于微服务和基于容器的软件无处不在,因此 Kubernetes 在今年的开源 DevOps 工具列表中名列前茅也就不足为奇了。Kubernetes 在2020年的使用量增长了48%,用于协调容器。无需手动发布微服务,Kubernetes可以自动化生产中的容器组的部署,维护和扩展。Kubernetes(有时写为K8s)由Cloud-Native Computing Foundation(CNCF)托管。
2.Docker
Docker 是一个免费的开放源代码平台,用于以轻量级容器的形式构建,发布和运行应用程序。容器打包了程序运行所需的二进制文件,库,配置文件和依赖项。在过去的十年中,容器在敏捷开发中发挥了关键作用,而 Docker 容器引领了这场革命。其核心是 Docker Engine。Docker Hub 还是一个很好的资源,可用于查找和共享作为容器的预包装功能。另外,要插入容器漏洞,使用开源容器审核工具(如Docker Bench或Anchore)可能会有所帮助。
3.Istio
微服务是一种方便的开发风格,但是它们带来了新的开发和架构问题。也就是说,我们如何在所有服务中一致地应用网络策略,如安全性,加密,可观察性和遥测元素?好吧,服务网格是一个答案。服务网格将 Sidecar 代理放置在每个容器旁边,并将这些网络功能抽象到控制平面。Istio 就是这样一种开源服务网格,已被广泛采用。Istio 基于 Envoy 构建,将其开放给插件和可扩展性选项。我们还应该提到 Linkerd 和Kuma 是可行的开源服务网格替代方案。
4. GitHub Actions
GitHub 可以说是地球上最流行的源代码控制和软件协作平台。基于 Git 的 GitHub 平台本身在过去几年中进行了一些重大更新。最值得注意的是 GitHub Actions 功能。GitHub Actions 使托管在 GitHub 上的软件包能够接受输入并触发其他进程。这可以帮助自动化 GitHub 中一些很酷的 DevOps 工作流程,例如代码审查,分支管理或 CI / CD 流程-此处可能的组合是无止境的。GitHub Actions 本质上是使用 GitHub Webhooks 托管在 GitHub 存储库中的 YAML 文件。尽管这比开放源代码工具更多的是功能,但我们认为将其包含在其中很重要。对于公共存储库,Actions 是免费的,最多只能有 100 个 Actions。
5.Jenkins
DevOps 理念的很大一部分是寻找更有效地自动化和部署新迭代的方法。此目标的一部分是创建简化的持续集成和持续交付(CI / CD)管道。Jenkins 是一个开放源代码自动化服务器,带有数百个插件,可自动完成软件项目的构建,部署和测试。尽管从理论上讲 GitHub Actions 可以在将来替换 CI 服务器,但许多 DevOps 团队仍喜欢Jenkins,CircleCI,TravisCI 和 GitLab 社区版之类的 CI 工具。
6.Prometheus
度量标准和警报系统对于站点可靠性工程师可视化应用程序并对问题做出反应至关重要。Prometheus 服务器通过抓取 HTTP 端点来收集时间序列指标,并生成与该数据进行交互的系统,从而提供深度查询,可视化,存储和其他功能。请查看此 Awesome Prometheus 列表,以了解 Prometheus 的介绍和其他资源。
7. Ansible
Ansible 关于自动化的一切, 可用于自动化诸如云配置,网络,部署,配置管理和其他任务的工作。Ansible 具有一个简单而有效的体系结构,相对易于组装-您只需要一个文本编辑器和命令行即可。
8.Chef
Chef 是另一个用于自动化配置管理的基础架构代码(IaC)解决方案。Chef 使用Ruby 来自动化服务器配置,并且与所有主要的云服务提供商(CSP)均能很好地工作。在创建和配置大量计算机时,这可能非常有用。像此列表中的其他自动化工具一样,用户以声明性格式描述其组件和状态。在 Chef 中,这些被称为“食谱”,可以将它们组合成“食谱”。您不能因不符合主题而对厨师感到不满!
9.Terraform
Terraform 是另一个 IaC 工具,可用于使用配置文件启动构建,版本控制和进一步的自动化。如 GitHub 所述, “ Terraform 是一种用于安全,高效地构建,更改和版本化基础结构的工具” 。Terraform 遵循用户使用高级语法创建的“执行计划”。Terraform 的一个独特方面是它强调版本控制-这使您可以像对软件一样对服务的蓝图进行版本控制。
10. JAMStack
如前所述,JAMStack 结合了 JavaScript,API和markdown 来构造基于 Web 的应用程序。尽管不仅仅是单个开源工具,它更像是一种“无头开发”方法,但 JAMStack项目通常是使用开源组件构建的。例如,JAMStack 经常利用开源的无头内容管理系统,例如 Ghost,Strati 和/或 Netlify CMS。
11. ELK Stack
ELK Stack 是由 Elastic 维护的三个开源项目的结合:Elasticsearch,Logstash和Kibana。使用这三个组件,开发人员可以从任何来源获取和记录数据,并创建有用的可视化文件。使用 NoSQL 数据库启用此集中式日志记录,以使用 Elasticsearch 进行存储,使用 Logstash 进行处理和数据收集,以及使用 Kibana 进行可视化。可见性的提高对于数据分析至关重要,并有助于识别错误以减少平均恢复时间(MTTR)。