爱德华Viaene

想进入DevOps领域吗?或者你从事软件开发,而你的公司正在采用DevOps技术?bob外围官网无论您在组织中的哪个位置,您都会在日常工作中接触到DevOps工具。

我们放在一起的最流行的DevOps工具的公司正在使用整个应用程序的生命周期清单。这些DevOps的工具可以在应用程序生命周期的所有阶段,从编写代码来构建和测试,以及从应用程序部署到运行,监控和安全性加以利用。

学习DevOps:完整的Kubernetes课程

最近更新2020七月

畅销书
  • 142个讲座
  • 所有级别
4.4 (11135)

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

探索课程

最好的DevOps工具为您的应用程序生命周期

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

源代码控制

毫无疑问。每个人都在使用Git对其源代码进行版本控制。像克隆、提交和推这样的基本命令很容易学习,但是还有更多内容。你能创建一个分支吗?从主人那里重新建立你的分支?解决冲突?挤压并合并你的分支到主人?如果你不小心犯了错误怎么办?如果你不知道这些问题的答案,你应该让自己了解一下。任何真正的站点可靠性工程师(SRE)或云/ DevOps工程师都可以毫不犹豫地使用这些命令。

软件开发平台bob外围官网

Git集成了GitHub、GitLab、Atlassian、Abob外围官网zure DevOps或AWS CodeCommit等软件开发平台。这些平台允许开发人员在软件上进行协作,打开Pull request (PRs),并解决冲突。您需要了解如何使用这些平台。这些平台允许您与同事在项目上进行协作。构建部署管道的工程师需要知道如何在持续交付平台中集成源代码控制。

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

持续交付

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

除了使用你的软件开发平台,一个流行的开源工具,它已经存在bob外围官网了一段时间詹金斯。它在几乎所有的组织中。詹金斯可以作为一个完整的持续交付平台,以构建,测试和部署阶段的护理。它也可以在现有平台上整合。AWS CodeBuild,例如,可以建立和测试软件本身,但你也必须与詹金斯整合,让詹金斯处理构建,测试和部署阶段的选项。

3.应用生命周期:部署

持续部署

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

要部署的容器,你需要一个容器编排平台。最流行的是Kubernetes。它可以作为一个托管平台上几乎所有的公共云计算供应商。虽然Kubernetes能为你做了很多,这是一个拥有自己的生态系统的工具非常复杂的工具。如果你正在寻找的东西更简单,然后看看什么是云供应商提供。AWS提供弹性容器服务(ECS)。ECS也是一个容器配器,但更易于使用。其他有用的工具是码头工人,撰写本地构建和测试你的容器,和泊坞群,这是一个码头工人配器由码头工人本身建造。

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

部署多克

集装箱有很多的好处。你开始写一个Dockerfile,其中包含如何建立你的泊坞窗图像的信息。这Dockerfile是你需要建立你的容器的唯一文件。你可以建立和你自己的机器上运行的容器中,或运行它作为您的持续交付过程的一部分。一旦建成,就可以在任何泊坞运行配器,像Kubernetes。

容器将在内核级别被隔离。因此,容器的启动速度比虚拟机(VM)快得多。隔离包括网络隔离、进程隔离和资源隔离。这样,您就可以在一台机器上运行多个容器,而不会产生端口或资源冲突。

容器(特别是Docker)的采用为在基础设施中轻松部署、重新部署和伸缩容器铺平了道路。Kubernetes将管理资源利用率、调度、可伸缩性、安全性和网络,而您可以专注于容器本身的内容。由于主要的公共云提供商提供了Kubernetes作为服务,所以实际上您可以在任何地方运行这些容器。惟一需要注意的是,您仍然需要访问您的数据,因此实际上,跨云部署策略仍然不像您预期的那样容易。

部署没有多克

不使用Docker仍然是一种选择。在Docker出现之前,连续交付就已经存在了。这里的一种好方法是构建虚拟机(VM)映像而不是容器映像。与容器相同的方法仍然适用,但是工件现在不同了:使用VM映像而不是容器。Packer是一个开源工具,你可以用它来构建这些图像。Packer支持VMware的on-prem部署,但也支持云提供商,如AWS。构建VM映像的整个过程将花费更长的时间,但最终结果是相同的。您需要在基础设施的某个位置安排映像,为此需要编制工具。

其中一个突出的交付工具是Spinnaker。它是Netflix开发的一种工具,用于对不断变化的基础设施进行更改。在Spinnaker中,您可以开始构建这些映像,与Jenkins集成以进行构建/测试,并将它们部署到您的云基础设施上。

4.应用程序生命周期:操作

基础设施建设

在部署到(云)基础设施之前,仍然需要在云(或本地)中设置大量资源。最常用的工具是Terraform。Terraform支持主要的云提供商(亚马逊AWS、微软Azure、谷歌云和其他)。它允许您将基础设施编写为代码,允许您抽象完整的基础设施设置。您可以将代码存储在版本控制中,从而允许您与队友协作、获取更改历史记录和使用审计工具。

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

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

建设基础设施不变

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

这种策略被称为“不可改变的基础设施。”而不是替换应用程序代码本身,你要替换完全跑步实例或服务器。这是推出的变化,不只是试图做一个就地更换您的应用程序代码本身的一种更好的方式。你把你的基础架构不变的,你不会允许任何就地变化。每一个变化需要通过版本控制,输送管道,并需要以同样的方式作为常规的部署进行部署。

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

当使用容器编排工具,这是更真实的。你Docker容器默认都是不可变的,所以每次会推出一个更新,你将构建一个新的码头工人的形象。在Kubernetes工人的水平,你也不会愿意在原地了变化。您通常要使用从云供应商预建的图像,将包含一套最小的软件,刚好够一个Kubernetes工作节点上运行。所有的自定义软件现在是在容器内。升级到工人也将是不变的,允许一个完整的,不变的基础架构设置。

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

安全威胁

所有的建筑执行您的DevOps战略的基础设施应该不是没有考虑到安全性来实现。云供应商有很多的工具到位,以帮助您保护您的数据,降低数据泄露的风险。一个非常强大的,经常被忽视的措施就是使用非常紧密的访问规则。AWS有身份和访问管理(IAM)来创建用户,组和角色。这些包含访问规则,这是所谓的政策。往往这些政策都写过于宽泛,允许用户,组或角色太大出入。拧紧起来更可显著改善您的安全状况。高级策略可以与特定的条件写入测试,其中访问来自始发,并允许或拒绝访问在此基础上的信息资源。

监视工具

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

要监视的基础设施,你会想用你的云供应商为您提供的工具。对于AWS这将是CloudWatch的。如果没有监控可用或你不是在云上,那么你肯定会想看看普罗米修斯。这个监视工具集成了大多数云原生工具和方法是使用一个很好的工具。你会发现有很多,你可以使用不同的代理。您可以在Linux / Windows的服务器实例上安装这些代理。其他插件可用于特定的服务,如数据库。普罗米修斯支持拉动指标,但也有无法支持拉你的系统的主要部分的推网关。

普罗米修斯还可以监视应用程序指标。普罗米修斯为所有流行的编程语言库。您可以设置指标之内你的应用程序由普罗米修斯拉。即使是不支持的编程语言,你需要的仅仅是一个指标端点通过HTTP那里普罗米修斯可以拉。这个简单的设计就是普罗米修斯是如此的流行和强大的原因。您可以监控您的基础设施以实现简单的HTTP服务器与公开你的度量页面的任何应用程序或部分。

无论您使用普罗米修斯应用程序或基础设施监控,也可以将其与Grafana整合,打造真棒视觉仪表盘。

一旦配置了所有指标,您将需要警报。Prometheus通过警报管理器支持警报。您可以设置被触发的规则,并在需要查看某些内容时通知您。警报可以发送到电子邮件,但也支持其他集成,如slack(用于聊天)。

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

页面最后更新:2020年4月

DevOps中的顶级课程

了解DevOps的:基础设施自动化随着Terraform
爱德华Viaene
4.4 (7348)
畅销书
Docker速成课程为繁忙的DevOps和开发人员
陶W.,结果Level Up,詹姆斯·李
4.4 (10441)
DevOps大师班:GIT Docker Jenkins Kubernetes
LevelUp360°DevOps
4.2 (2943)
DevOps项目:与Jenkins Ansible Docker Kubernetes的CI/CD
Shankar基于“增大化现实”技术
4.4 (3289)
熟练使用Docker, Kubernetes和Azure DevOps
in28Minutes官方
4.4 (1591)
AWS上的Spring框架DevOps
约翰•汤普森
4.5 (658)
AWS大师班:DevOps的W / AWS命令行界面(CLI)
TetraNoodle队Manuj AGGARWAL
4.4 (390)
Azure的DevOps的板项目经理/分析师/开发者
帕特里克视频
4.4 (3042)
畅销书
可能需要动手操作的实验室
Ugur Oktay
4.6 (172)

更DevOps的课程

DevOps的学生也在学习

让你的团队。领导行业。

获取订阅的在线课程和数字学习工具库与您Udemy组织业务。

请求一个演示

爱德华Viaene课程

了解DevOps的:不断提供更好的软件
爱德华Viaene
4.1 (2738)
了解DevOps的:基础设施自动化随着Terraform
爱德华Viaene
4.4 (7359)
畅销书
学习DevOps:完整的Kubernetes课程
爱德华Viaene
4.4 (11135)
畅销书
学习DevOps: Kubernetes的高级用法
爱德华Viaene
4.3 (947)
在AWS和Kubernetes使用三角帆连续部署
爱德华Viaene,乔恩Jambers
4.2 (602)
和普罗米修斯一起监视和报警
爱德华Viaene,乔恩Jambers
4.3 (1788)
畅销书
AWS先进的安全
爱德华Viaene,乔恩Jambers
4.4 (127)
畅销书
在Azure起程拓殖
爱德华Viaene,乔恩Jambers
4.4 (238)

爱德华Viaene课程