爱德华Viaene

希望进入devops空间?或者您可能正在使用软件开发,并且您的公司正在采用DevOps技术?bob外围官网无论您在组织中,您都会在日常工作中接触Devops工具。

我们整理了一个最流行的DevOps工具列表,这些工具是公司在应用程序的整个生命周期中使用的。这些DevOps工具可以用于应用程序生命周期的所有阶段,从编写代码到构建和测试,以及从应用程序部署到操作、监视和安全。

学习devops:完整的kubernetes课程

最近更新于2021年1月

畅销书
  • 146讲座
  • 所有级别
4.3 (12392)

Kubernetes将运行和管理您的集装箱应用程序。了解如何构建,部署,使用和维护Kubernetes |由爱德华·Viaene

探索课程

用于应用程序生命周期的最佳DevOps工具

1.应用程序生命周期:编写代码

源码控制

毫无疑问了。每个人都使用Git for Version控件的源代码。克隆,提交和推动等基本命令很容易学习,但还有更多。你能创建一个分支吗?从主人绑定你的分支?解决冲突?南瓜并将你的分支合并到掌柜?如果你不小心做错了什么,怎么办?如果您不知道这些问题的答案,您应该让自己加快速度。任何真实的现场可靠性工程师(SRE)或Cloud / DevOps工程师将能够毫不犹豫地使用这些命令。

软件开发平台bob外围官网

Git与GitHub,Gitlab,Atlassian,Azubob外围官网re Devops或AWS代码代码等软件开发平台集成。这些平台允许开发人员在软件上进行协作,打开拉拔请求(PRS),并解决冲突。您想了解如何使用这些平台。这些平台允许您与同事合作。工程师构建部署管道将需要知道如何在连续交付平台内集成源控制。

2.应用程序生命周期:构建和测试

持续交付

现在您已经了解了软件交付平台,是时候讨论持续交付了。在此阶段,通常使用版本控制中的代码创建管道来构建、测试和部署软件。软件开发平台通常在bob外围官网其平台内提供工具来构建管道。如果是这样,并且您正在从头开始,那么很可能您将使用内置的管道功能。它将完全集成在平台中,使用集成来进行源代码控制、测试(构建工具集成)和部署(例如,Kubernetes)。

除了使用你的软件开发平台,一个流行的开源工具Jenkinbob外围官网s已经存在了一段时间。它被用于几乎所有的组织。Jenkins可以作为一个完整的持续交付平台,负责构建、测试和部署阶段。它还可以集成到现有的平台中。例如,AWS CodeBuild可以自己构建和测试你的软件,但你也可以选择与Jenkins集成,让Jenkins处理构建、测试和部署阶段。

3.应用程序生命周期:部署

连续部署

作为持续交付周期的一部分,您需要能够持续部署您的应用程序。现在,通常使用容器来部署,所以让我们首先介绍一下这一点。

要部署容器,您将需要一个容器编排平台。最受欢迎的是Kubernetes。它在几乎所有公共云计算提供商上都可以作为托管平台。虽然Kubernetes可以为您做很多,但它是一个非常复杂的工具,具有自己的工具生态系统。如果您正在寻找更简单的东西,那么看看云供应商正在提供什么。AWS提供弹性容器服务(ECS)。ECS也是一个集装箱乐队,但要使用的更简单。其他有用的工具是Docker-Compose,用于在本地构建和测试您的容器,Docker Swarm,它是由Docker本身构建的Docker Orchestrator。

在构建用于构建、测试和部署的管道时,您将看到许多平台都对Kubernetes提供开箱即用的支持。Azure DevOps对其托管的Kubernetes服务Azure Kubernetes服务(AKS)进行了集成,允许您使用Azure DevOps轻松地在Kubernetes上部署代码。

部署Docker.

集装箱化有很多好处。您首先编写一个dockerfile,它包含有关如何构建您的Docker映像的信息。此Dockerfile是您构建容器所需的唯一文件。您可以在自己的计算机上构建和运行容器,或作为连续交付过程的一部分运行它。构建后,您可以在任何Docker Orchestrator上运行它,如Kubernetes。

容器将被隔绝在内核水平上。结果,容器比虚拟机(VM)更快地开始。隔离包括网络隔离,过程隔离和资源隔离。这样,您可以在一台计算机上运行多个容器,而不具有端口或资源冲突。

特别是将容器的采用特别展现了在基础架构中轻松部署,重新部署和缩放容器的方式。Kubernetes将管理资源利用率,调度,缩放,安全性和网络,而您可以专注于容器本身的内容。由于Kubernetes作为主要公共云提供商的服务的可用性,您可以在任何地方运行这些容器。唯一的警告是,您仍然需要访问您的数据,因此实际上,跨云部署策略仍然不如您所预期的那么容易。

部署没有码头工人

不使用Docker仍然是一个选择。在Docker来临之前,已经存在连续交付。这里的良好方法是构建虚拟机(VM)图像而不是容器图像。与容器相同的方法仍然适用,但是工件现在不同:VM图像而不是容器。packer是一个开源工具,您可以用于构建这些图像。Packer支持VMware for Ove Prem部署,但也可以像AWS这样的云提供商。构建VM图像的整个过程将需要更长时间,但最终结果是相同的。您需要在基础架构上的某处安排您的图像,并且您需要为此提供编排工具。

一个脱颖而出的送货工具是旋转器。它是Netflix开发的工具,向您不断变化的基础架构推出更改。在Spinnaker中,您可以启动这些图像的构建,与Jenkins集成以进行构建/测试,并在云基础架构上部署它们。

4.应用生命周期:操作

基础设施建设

在您在(云)基础架构上部署之前,您仍然需要在云(或本地)中设置大量资源。最常见的工具可以帮助您的是Terraform。Terraform支持主要云提供商(亚马逊AWS,Microsoft Azure,Google Cloud等)。它允许您将基础架构写为代码,允许您抽出完整的基础架构设置。您可以存储版本控制中的代码,允许您与队友协作,获取更改历史,并使用审计工具。

通常,云提供商也会有工具将您的基础设施构建为代码。AWS将拥有CloudFormation,而Azure将拥有Azure资源管理器模板。这些都是很棒的工具,但我们发现terrform比它们更有优势。Terraform通常更容易使用,当其他人阅读代码时,代码也更容易理解。它也独立于任何云提供商(它是一个免费和开源的HashiCorp工具,就像Packer一样)。您可能会认为一个独立的工具需要更长的时间来支持所有的资源,但现在情况正好相反。Terraform AWS插件社区非常庞大,很快就能支持新的AWS服务。有时甚至比成云更早。也有很好的文档可用,当你需要支持时,还有一个GitHub项目。

你可以在自己的机器上运行terraform,也可以在Jenkins中运行。还有Terraform Cloud,这是HashiCorp为你运行Terraform的产品。

建立不可变基础设施

当使用容器或VM映像来部署应用程序时,每次应用程序更新(Git提交到版本控制)时,您都需要重新构建映像。重建映像之后,您将推出这个新映像。本质上,您将首先关闭当前的应用程序基础结构。然后,您需要用更新的vm或云实例替换它,直到所有运行中的服务器都包含该应用程序的新版本。

这种策略被称为“不可变基础设施”。不是替换应用程序代码本身,而是替换完整运行的实例或服务器。这是一种更好的进行更改的方法,而不是仅仅尝试替换应用程序代码本身。您将基础设施视为不可变的,您将不允许任何就地更改。每个变更都需要经过版本控制、交付管道,并且需要以与普通部署相同的方式部署。

如果您使用这种方法,您将不需要那么依赖配置管理工具,如Ansible、Chef、Puppet或SaltStack。不再需要就地更新。最好的工作方式是通过输送管道。

使用Container Orchestration Tooling时,这更为真实。默认情况下,您的Docker容器是不可变的,因此每次您会滚动更新时,您都会建立一个新的Docker映像。在Kubernetes工作级别,您也不会再发生就地更改。您通常会使用云供应商的预先构建的图像,该云供应商将包含一个最小的软件集,足以作为Kubernetes工作节点运行。所有自定义软件现在都在容器中。升级到工人也将是不可变的,允许完整的不变基础设施设置。

5.应用程序生命周期:监视和安全性

安全威胁

建立所有基础架构来执行Devops策略,不应考虑到安全性。云提供商有很多工具,可以帮助您保护数据并降低数据泄露的风险。一个非常强大,经常被忽视的措施只是使用非常紧密的访问规则。AWS具有身份和访问管理(IAM),用于创建用户,组和角色。这些包含访问规则,称为策略。往往是那些策略过于广泛的策略,允许对用户,组或角色的太多访问。更加紧缩它们可以显着提高您的安全姿势。可以使用特定条件写入高级策略以测试访问源自从,并根据此信息允许或拒绝访问资源的访问。

监控工具

基础设施设置好之后,就需要对其进行监视。监视将包括两方面:监视应用程序和监视基础设施本身。

要监控基础架构,您将要使用云提供商为您提供的工具。对于AWS,这将是CloudWatch。如果没有任何监控或者您不在云端,那么您肯定希望看看Prometheus。此监控工具与大多数云本机制具集成,并且是一个很好的使用工具。您会发现您可以使用的很多不同的代理商。您可以在Linux / Windows Server实例上安装这些代理。其他插件可用于特定服务,如数据库。Prometheus支持拉动指标,但也有一个推送的网关,用于系统的一部分不能支持拉动。

普罗米修斯还可以监视应用程序指标。普罗米修斯为所有流行的编程语言提供了库。您可以在应用程序中设置由Prometheus获取的指标。即使不支持您的编程语言,您唯一需要的是一个基于HTTP的度量端点,Prometheus可以从中提取。这个简单的设计正是普罗米修斯如此受欢迎和强大的原因。您可以通过一个简单的HTTP服务器实现监视任何应用程序或基础设施的一部分,该服务器具有一个公开度量的页面。

无论是使用Prometheus for应用程序还是基础架构监控,您也可以将其与Grafana集成,以创建令人敬畏的视觉仪表板。

配置所有度量标准后,您将要提醒。Prometheus通过警报管理器支持警报。您可以设置触发的规则,并将在需要查看某些内容时通知您。可以将警报发送到电子邮件,但也支持像Slack(for Chatops)这样的其他集成。

当你用新的devops工具优化你的应用生命周期时,考虑一下上面的一些工具。我还建议通过Udemy在线课程来提高您和您的团队的技术技能,以帮助您的团队有效地实现这些新的DevOps工具。

页面上次更新:4月2020年4月

Devops的顶级课程

不仅仅是在Terraform认证
德里克摩根
4.8 (209)
评价最高
DevOps项目:与Jenkins Ansible Docker Kubernetes进行CI/CD
Valaxy Technologies | AR Shankar
4.5 (4962)
Devops基础- CI/CD与AWS +Docker+Ansible+Jenkins
拉胡尔谢蒂
4.5 (1,435)
畅销书
Devops工具和AWS for Java MicroService开发人员
Bharath thippiveddy.
4.7 (446)
Devops目录,模式和蓝图
维克多·法尔契奇,达林·波普
4.7 (90)
进入devops:masterclass
Releaseworks学院
4.4 (796)
Canary部署到Kubernetes使用Istio和朋友
维克多·法尔契奇,达林·波普
4.9 (176)
使用管道和Docker来学习DevOps: CI/CD
爱德华Viaene
4.6 (7,278)
评价最高

更DevOps的课程

DevOps的学生也学习

让你的团队。领导行业。

通过Udemy为Business获取组织的在线课程和数字学习工具库的订阅。

请求一个演示

爱德华的课程

学习Devops:不断交付更好的软件
爱德华Viaene
4.2 (2778)
了解大数据:Hadoop生态系统MasterClass
爱德华Viaene
4.4 (3492)
畅销书
学习DevOps:具有Terraform的基础架构自动化
爱德华Viaene
4.4 (8,893)
畅销书
学习devops:完整的kubernetes课程
爱德华Viaene
4.3 (12388)
畅销书
使用管道和Docker来学习DevOps: CI/CD
爱德华Viaene
4.6 (7,277)
评价最高
学习DevOps: Kubernetes的高级用法
爱德华Viaene
4.3 (1,059)
在AWS和Kubernetes上使用Spinnaker持续部署
爱德华·维亚恩,乔恩·詹伯斯
4.4 (830)
和普罗米修斯一起监视和警报
爱德华·维亚恩,乔恩·詹伯斯
4.3 (2,378)
畅销书
AWS先进的安全
爱德华·维亚恩,乔恩·詹伯斯
4.3 (199)
在Azure起程拓殖
爱德华·维亚恩,乔恩·詹伯斯
4.4 (613)

爱德华的课程