59

2019十佳DevOps工具,你用了几个?

 5 years ago
source link: http://cloud.51cto.com/art/201903/592979.htm?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

本文整理了工具列表,为大家选择所需的工具提供详实的参考信息。让我们一起看看从自动化build工具到应用程序性能监控平台领域里,十大最佳DevOps工具是哪些吧。

1、Gradle

EzErmqQ.jpg!web

DevOps工具集需要一种可靠的build工具。Apache Ant和Maven统治着自动化build工具市场很多年,但是Gradle在2009年现身,从那时起它就迈着稳定增长的步伐越来越流行。Gradle的功能很强大,允许用户用Java,C++,Python或者其他语言编程。各种流行的IDE,比如Netbeans,Eclipse以及Intellij IDEA也都支持Gradle。如果这还无法说服你使用它,那么还有一点可能有所帮助,Google也选择它作为Andriod Studio的正式build工具 。

Maven和Ant使用XML配置,Gradle则引入了一种基于Groovy的DSL来描述build。在2016年,Gradle团队还发布了一种基于Kotlin的DSL,因此用户现在也可以用Kotlin来编写build的脚本。这意味着Gradle的学习需要一定的时间,如果你以前用过Groovy,Kotlin或其他JVM语言的话,那么会有助于Gradle的快速掌握。除此之外,Gradle使用Maven的repository格式,因此如果使用过Maven的话对Gradle的依赖管理也会比较熟悉。还可以将Ant build导入进Gradle。

Gradle最好的设计是增量build,因此可以节省大量的编译时间。根据Gradle的性能报告,它比Maven快100倍。这样的性能优势一部分来源于这种增量设计,另外也得益于Gradle的build缓存和daemon。build缓存重用task的输出,而Gradle的Daemon将build的信息储存在内存里,可以在多个build间共享。

总的来说,Gradle让快速交付成为可能,也让配置更加灵活。

参考阅读

  • Gradle:
  • https://gradle.org/
  • 正式build工具:
  • https://developer.android.com/studio/build/
  • 基于Kotlin的DSL:
  • https://github.com/gradle/kotlin-dsl
  • 将Ant build导入:
  • https://docs.gradle.org/current/userguide/ant.html
  • 增量build:
  • https://blog.gradle.org/introducing-incremental-build-support
  • 性能报告:
  • https://gradle.org/gradle-vs-maven-performance/
  • build缓存:
  • https://blog.gradle.org/introducing-gradle-build-cache
  • daemon:
  • https://docs.gradle.org/current/userguide/gradle_daemon.html

2、Git

QbEBnev.jpg!web

Git是最流行的DevOps工具之一,在软件界使用广泛。它是一种分布式SCM(源码管理)工具,远程团队和开源贡献者都很喜欢它。Git让用户可以跟踪自己开发工作的进度。用户可以保存自己源码的不同版本,并且在需要的时候切回之前的版本。它也很适合做实验,因为可以创建单独的分支,在需要的时候仅仅merge新特性。

要将Git和DevOps工作流集成起来,还需要维护repository,团队成员可以向其中push各自的工作。目前,两大最佳在线的Git repo托管服务是GitHub和Bitbucket。GitHub更有名气,但是Bitbucket给小团队(不超过五个成员)提供免费不受限的私有repo。使用GitHub,用户仅仅可以免费访问公有的repo——当然这对于很多项目来说仍然是很好的解决方案。

GitHub和Bitbucket都有很好的集成。比如,用户可以将它们和Slack集成,这样团队的每个人都能在有任意commit时收到通知。

内容更新注释:GitHub现已有免费私有仓库。由于本文是译文,存在一定时差,特此注明。

参考阅读

  • Git:
  • https://git-scm.com/
  • GitHub:
  • https://github.com/
  • Bitbucket:
  • https://bitbucket.org/

3、Jenkins

jU7jmum.jpg!web

Jenkins是很多软件开发团队在走向DevOps时会用的自动化工具。它是开源的CI/CD服务器,帮助用户自动化交付流水线的不同阶段。Jenkins之所以流行的主要原因是其巨大的插件生态系统。目前,它提供1000多个插件,因此它可以和几乎所有DevOps工具(从Docker到Puppet)集成。

使用Jenkins,用户可以搭建并且根据实际需要自定义自己的CI/CD流水线。Jenkins文档里介绍了如下示例:

mEvyAzR.jpg!web

这仅仅是一种可能的实现。看着很不错,不是吗?

使用Jenkins很容易,它在Windows,Mac OS X和Linux上开箱即用。很容易就可以使用Docker安装它。用户可以通过浏览器搭建并且配置Jenkins服务器。如果你是第一次使用它,可以选择安装最常用的插件。当然也可以创建自定义配置。

使用Jenkins,用户可以尽快迭代并部署新代码。它还帮助用户度量流水线里每一步是否成功。我听到有人抱怨Jenkins很“丑陋”且并不直观的UI。但是,我仍旧可以很容易地找到需要的所有东西。

参考阅读

  • Jenkins:
  • https://jenkins.io/
  • 1000多个插件:
  • https://plugins.jenkins.io/
  • Jenkins文档:
  • https://jenkins.io/doc/book/pipeline/
  • 使用Jenkins很容易
  • https://jenkins.io/download/
  • 使用Docker安装它
  • https://wiki.jenkins.io/display/JENKINS/Installing+Jenkins+with+Docker

4、Bamboo

BBbINbI.jpg!web

Bamboo是Atlassian的CI/CD服务器解决方案,很多特性和Jenkins类似。它们都是流行的DevOps工具,帮助用户自动化发布流水线,从build到部署。但是,Jenkins是开源的,Bamboo是收费的。因此,这里永恒的问题是,有免费软件时有必要选择收费软件吗?这取决于你的经费和目标。

Bamboo有很多预构建的功能,而这些功能在Jenkins里得自己手动搭建。这也正是Bamboo的插件更少的原因(大概100个,Jenkins有1000+个)。实际上,你并不需要Bamboo的很多插件,因为它带着很多开箱可用的功能。

Bamboo和其他Atlassian产品,比如Jira和Bitbucket无缝集成。用户还可以访问内建的Git和Mercurial分支工作流及测试环境。总之,Bamboo可以节省很多配置的时间。它的UI也更为直观,有提示,自动补全和其他有用的特性。

参考阅读

Bamboo:

https://www.atlassian.com/software/bamboo

5、Docker

3UzQV3E.jpg!web

Docker在2013年发布之后已经成为了首屈一指的容器平台,并且仍然在持续改进。它是最重要的DevOps工具之一。Docker在科技界掀起了容器化的潮流,主要是因为它让分布式开发成为可能,并且自动化了应用程序的部署。它将应用程序隔离成单独的容器,因此应用变得更加便携也更为安全。Docker应用程序也独立于OS以及平台。用户可以使用Docker容器代替虚拟机,比如VirtualBox。

我最喜欢Docker的一点是用户无需担心依赖管理。可以将所有依赖打包进应用程序的容器,并将所有的东西当做独立的单元交付。然后,用户可以很轻松地在任意机器或者平台上运行这个应用程序。

Docker也和Jenkins以及Bamboo集成。如果你将自动化服务器和Docker搭配使用,可以进一步改进交付工作流。另外,Docker也很适用于云计算。最近几年,所有主流的云供应商,比如AWS,Google Cloud,都已经支持Docker。因此,如果你计划云迁移,那么Docker可以帮助简化这一进程。

参考阅读

  • Docker:
  • https://www.docker.com/
  • Jenkins:
  • https://jenkins.io/solutions/docker/
  • Bamboo:
  • https://confluence.atlassian.com/bamboo/getting-started-with-docker-and-bamboo-687213473.html

6、Kubernetes

jYbaUnb.jpg!web

今年,每个人都在谈论Kubernetes。它是容器编排平台,将容器化推进到下一个层面。它可以使用Docker或者其他替代产品。Kubernetes仍然很新;2015年才推出第一个版本。它由一些Google的工程师创建,他们想找到管理大规模容器的方案。使用Kubernetes,用户可以将容器组织成逻辑单元。

如果你只有几个容器,那么可能并不需要容器编排平台。但是,当系统达到一定级别的复杂度,需要扩展资源的时候,这就是合理的下一步。Kubernetes让用户可以自动化管理上百个容器的过程。

使用Kubernetes,无需将容器化的应用程序绑定到某个单独的机器里。相反,你可以将它部署到一个机器集群里,Kubernetes会自动化分发并在整个集群里调度容器。

一个Kubernetes集群包含一个master和几个worker节点。master节点实现预定义的规则,并且将容器部署到worker节点上。Kubernetes负责所有一切。比如,它注意到某个worker节点下线了,就会将其上的容器重新分发到别的节点上。

参考阅读

  • Kubernetes:
  • https://kubernetes.io/

7、Puppet企业版

AbQryaz.jpg!web

Puppet Enterprise是一个跨平台的配置管理平台。它让用户可以将基础架构当做代码来管理。因为它自动化了基础架构管理,用户可以更快更安全地交付软件。Puppet还给开发人员提供了小型项目可以使用的开源工具。但是,如果你负责的是较大的基础架构,就会发现Puppet Enterprise的额外特性是有价值的,比如:

  • 实时报告
  • 基于角色的访问控制
  • 节点管理

使用Puppet Enterprise,你可以管理多个团队和数千资源。它能自动理解基础架构里的关系。它处理依赖关系并且智能地处理故障。当遇到一次失败的配置时,它也会跳过所有依赖的配置。Puppet最好的一点是它有5000多个模块,可以和很多流行的DevOps工具集成。

参考阅读

  • Puppet Enterprise:
  • https://puppet.com/products/puppet-enterprise
  • 开源工具:
  • https://puppet.com/download-open-source-puppet
  • 额外特性:
  • https://puppet.com/products/why-puppet/puppet-enterprise-and-open-source-puppet
  • 5000多个模块:
  • https://forge.puppet.com/
  • 很多流行的DevOps工具:
  • https://puppet.com/products/managed-technology

8、Ansible

AreMfqj.jpg!web

Ansible是一个配置管理工具,和Puppet,Chef类似。用户可以用它配置自己的基础架构并且自动化部署。和其他类似的DevOps工具相比,它的主要卖点是简洁易用。Ansible遵循和Puppet一样的基础架构即代码(IAC)的理念。但是,它使用超级简单的YAML语法。使用Ansible,用户可以在YAML里定义任务,而Puppet则有自己的声明式语言。

无代理的架构是另一个经常被提及的Ansible的特性。因为后台没有运行daemon或者代理,Ansible是安全并且轻量级的配置管理自动化的解决方案。和Puppet类似,Ansible也有一些模块。

如果想要更好地理解Ansible在DevOps工作流里是怎么工作的,可以查看Red Hat Blod里的这篇博文 。它介绍了在Jenkins流水线里,如何使用Ansible来预配环境以及部署应用。

参考阅读

  • Ansible:
  • https://www.ansible.com/
  • 一些模块:
  • https://docs.ansible.com/ansible/latest/modules/modules_by_category.html
  • 这篇博文:
  • https://www.redhat.com/en/blog/integrating-ansible-jenkins-cicd-process

9、Nagios

fMnMzeE.jpg!web

Nagios是最流行的免费并开源的DevOps监控工具。它可以监控基础架构从而帮助用户发现并解决问题。使用Nagios,用户可以记录事件,运行中断以及故障。用户还可以通过Nagios的图表和报告监控趋势。这样,可以预测运行中断和错误,并且发现安全攻击。

虽然基础架构监控里有很多DevOps工具,但是Nagios因为其丰富的插件生态而脱颖而出。因为Nagios已经发布很多年了(2002年发布),围绕它的社区很大。除了插件,社区还贡献了add-on,指导文章,翻译等等有用的东西——都是免费的。

Nagios提供了四中开源监控解决方案:

  • Nagios Core
  • Nagios XI
  • Nagios Log Server
  • Nagios Fusion

Nagios Core是一个命令行工具,提供了所有基本功能。用户还可以选择Nagios XI ,它提供了基于网页的GUI以及监控向导程序。Nagios提供了功能的比对。

Nagios Log Server让用户可以搜索日志数据,并且配置可能攻击的报警。Nagios Fusion可以同时监控多个网络。

整体来说,Nagios给DevOps团队提供了基础架构监控解决方案。但是,它需要一定的时间搭建,并且需要考虑和你的环境的兼容性。

参考阅读

  • Nagios:
  • https://www.nagios.org/
  • 插件生态:
  • https://exchange.nagios.org/
  • 功能的比对:
  • https://www.nagios.org/downloads/nagios-core/

10、Raygun

ayeuAru.jpg!web

Raygun是领先的错误监控以及崩溃报告的平台。应用程序性能监控(APM)是其最近的项目。Raygun的DevOps工具帮助用户分析性能问题,并且定位到代码的某一行,某个function或者API调用。APM工具和Raygun的错误管理工作流可以协同工作。比如,它自动定位最高优先级的问题,并创建issue。

Raygun APM能够帮助最大化其他DevOps的价值,因为你总是能收到问题通知。因为它自动将错误链接到源码里,Raygun给整个团队提供统一的真理来源来定位错误和性能问题,将开发和运维紧密联系在一起。

参考阅读

  • Raygun:
  • https://raygun.com/
  • 应用程序性能监控:
  • https://raygun.com/platform/apm

哪些DevOps工具适合你的团队?

找到最佳的DevOps工具需要一些测试和经验。搭建以及配置开源软件通常需要更多时间。大多数商业DevOps工具都有免费试用版本,用户可以测试并且评估。最终选择哪些工具取决于团队的需求和目标。

译者介绍

崔婧雯,现就职于IBM,高级软件工程师,负责IBM WebSphere业务流程管理软件的系统测试工作。曾就职于VMware从事桌面虚拟化产品的质量保证工作。对虚拟化,中间件技术,业务流程管理有浓厚的兴趣。DockOne社区金牌翻译。

开发和运维的集成翻开了软件开发的全新篇章。如果你还是DevOps的新手,或者正在寻求改进已有流程的方法,那么第一道关卡就是调研哪些工具最适合你的团队。

jQVRJrb.png!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK