随着2021年的结束,我们在DevOps.com想要选出今年最受欢迎的文章。以下是我们“2021年最佳”系列中的第8篇。
DevOps不仅仅是一种文化转变——它需要伟大的工具来实现。下面,我们整理了一些目前最受欢迎的DevOps工具。但是,如果把大量资金投入到花哨的SaaS解决方案中,很快就会吞噬云计算的预算。这些DevOps工具都是开源的,支持从容器构建和编配到微服务网络、配置管理、CI/CD自动化、全栈监控等一切功能。以下是我们最喜欢的2021年DevOps开源工具。
1、kubernetes
随着微服务和基于容器的软件的无处不在,Kubernetes成为今年DevOps开源工具的冠军也就不足为奇了。Kubernetes在2020年的使用率上升了48%,被用来协调容器。Kubernetes可以在生产环境中自动部署、维护和扩展容器组,而不是手动发布微服务。Kubernetes有时以k8的形式编写,由云本地计算基金会(Cloud-Native Computing Foundation, CNCF)托管。
2、Docker
Docker软件是一个免费的开源平台,用于构建、发布和运行一个轻量级的容器。容器将程序运行所需的二进制文件、库、配置文件和依赖项打包起来。在过去的十年中,容器在敏捷开发中扮演了关键角色,Docker容器引领了这场革命。其核心是Docker引擎。Docker Hub也是一个很好的资源,用于查找和共享预先打包的容器功能。此外,为了堵住容器漏洞,使用Docker Bench或Anchore等开源容器审计工具可能会有帮助。
3、Istio
微服务是一种便捷的开发风格,但它们带来了新的开发和架构问题。也就是说,我们如何在所有服务中一致地应用网络策略,如安全性、加密、可观察性和遥测元素?服务网格是一个答案。服务网格在每个容器旁边放置一个边车代理,并将这些网络功能抽象到控制平面。Istio就是这样一个被广泛采用的开源服务网格。Istio建立在特使的基础上,向插件和可扩展性选项开放。我们还应该提到Linkerd和Kuma,它们是可行的开源服务网格替代品。
4、GitHub Actions
GitHub可以说是这个星球上最受欢迎的源代码控制和软件协作平台。基于Git的GitHub平台本身在过去的几年里经历了一些重大的更新。最值得注意的是GitHub的Actions功能。GitHub Actions使托管在GitHub上的软件包能够接受输入并触发其他进程。这可以帮助在GitHub中自动化一些很酷的DevOps工作流程,比如代码审查、分支管理或CI/CD流程——这里的可能性组合是无穷无尽的。从本质上说,GitHub Actions是在GitHub存储库中托管的YAML文件,它利用了GitHub的webhook。虽然这更多的是一个特性而不是一个开源工具,但是我们觉得在这里包含它是很重要的。操作对公共存储库是免费的,限制为100个操作。
5、Jenkins
DevOps哲学的一个重要部分是寻找方法来自动化和更有效地部署新的迭代。这个目标的一部分是创建一个流线型的持续集成和持续交付(CI/CD)管道。Jenkins是一个开源自动化服务器,拥有数百个插件,可以自动化软件项目的构建、部署和测试。虽然GitHub Actions在理论上可以在未来取代CI服务器,但是像Jenkins、CircleCI、TravisCI和GitLab Community Edition这样的CI工具仍然是许多DevOps团队的首选。
6、Prometheus
度量和警报系统对于站点可靠性工程师可视化应用程序和对问题作出反应至关重要。Prometheus是一个毕业的CNCF项目,它是一个广受欢迎的开源监控解决方案。Prometheus服务器通过抓取HTTP端点来收集时间序列指标,并生成与这些数据交互的系统,提供深度查询、可视化、存储和其他功能。
7、Ansible
Ansible全是关于自动化的。Ansible是一个由Red Hat赞助的开源项目,可以用来自动化云配置、网络、部署、配置管理和其他任务。Ansible有一个简单而有效的架构,组装起来相对容易——你所需要的只是一个文本编辑器和命令行。您可以在文本文档中描述您的基础架构,并在剧本中组织您想要的状态。作为一个实际的例子,请查看OpenIO如何使用Ansible。“Ansible是我们部署OpenIO核心的标准工具,也是我们的web、OIO-FS和所有即将推出的选项的标准工具,”Cédric Delgehier, OpenIO的Ops写道。
8、Chef
Chef是另一个实现配置管理自动化的基础设施即代码(IaC)解决方案。Chef使用Ruby自动化服务器配置,并与所有主要的云服务提供商(csp)合作良好。这在创建和供应大量机器时非常有用。与此列表中的其他自动化工具一样,用户以声明式格式描述其组件和状态。在《主厨》中,这些被称为“食谱”,可以归类为“烹饪书”。你不能因为《主厨》没有主题就批评他!
9、Terraform
Terraform是另一个IaC工具,可以使用配置文件启动构建、版本控制和进一步的自动化。正如GitHub上所描述的那样:“Terraform是一个安全有效地构建、更改和版本化基础设施的工具。”Terraform遵循用户使用高级语法创建的“执行计划”。Terraform的一个独特之处在于它强调版本控制——它允许你对你的服务蓝图进行版本控制,就像你对你的软件一样。
10、JAMStack
正如我之前提到的,JAMStack结合了JavaScript、api和markdown来构建基于web的应用程序。虽然JAMStack是一种“无头开发”方法,而不是单一的开放源码工具,但它经常使用开放源码组件构建。例如,JAMStack经常利用开源无头内容管理系统,如Ghost、Strapi和/或Netlify CMS。
11. ELK Stack
ELK Stack是由Elasticsearch、Logstash和Kibana三个开源项目组成的联盟。使用这三个组件,开发人员可以从任何来源获取和记录数据,并创建有用的可视化。这种集中的日志记录是通过NoSQL数据库实现的,通过Elasticsearch进行存储,通过Logstash进行处理和数据收集,通过Kibana进行可视化。增加可见性对于数据分析至关重要,并有助于识别错误,从而减少平均恢复时间(MTTR)。
总结
编程不仅仅是交付高质量的代码,它还涉及到高效的执行。这种全面改进运营的动力实际上是将运营投入到每件事情中。有了强大的开源DevOps工具,这意味着越来越多的架构师可以在他们的部署模型中采用DevOps方法。
DevOps作为一种实践,以及它的底层技术,一直在发展。在2021年,人们将投入大量精力来讨论引入微服务开发风格的影响。因此,我们注意到容器协调器和服务网格的成熟。为实现自动化的构建和发布管道,将基础设施蓝图化为代码并创建自动化的、可重复的配置是另一个必须具备的条件。更不用说,许多无代码和低代码平台正在向非程序员开放DevOps功能,尽管是从专有的角度来看。
值得注意的是,一些流行的开源DevOps工具(如Docker和Chef)已经被收购,模糊了它们的业务和开源根源之间的界限。当涉及到开源工具时,采用具有代表不同涉众的可靠社区支持的与供应商无关的工具是一个很好的实践。这将帮助您的项目经得起未来的考验。即使开源是“免费的”,用户也必须确保它的好处超过上线时间和自托管的运营开销。
DevOps工具有助于实现软件部署的自动化。在这里,我们试图列出一些最令人兴奋的工具来帮助自动化这个过程。当然,DevOps领域出现了许多新工具,而我们几乎还没有触及到表面。你有上面没有提到的最喜欢的DevOps工具吗?
请在下面的评论中告诉我!