爱德华Viaene

想要进入DevOps领域?或者你正在从事软件开发工作,你的公司正在采用DevOps技术?betwayapp下载安装无论您在组织中的哪个位置,您都会在日常工作中接触到DevOps工具。

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

学习DevOps:完整的Kubernetes课程

最后更新日期:2021年9月

  • 146课
  • 各级
4.5 (13,228)

Kubernetes将运行和管理您的容器化应用程序。学习如何构建、部署、使用和维护Kubernetes |爱德华·维亚尼

探索课程

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

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

源控制

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

软件开发平台betwayapp下载安装

Git集成了像GitHub, GitLab, Atlassiabetwayapp下载安装n, Azure DevOps,或AWS CodeCommit这样的软件开发平台。这些平台允许开发人员在软件上进行协作,打开Pull Requests (PRs),并解决冲突。您需要了解如何使用这些平台。这些平台允许您与同事在项目上进行协作。构建部署管道的工程师需要知道如何在持续交付平台中集成源代码控制。

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

连续交付

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

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

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

持续部署

作为连续交付周期的一部分,您需要能够连续部署应用程序。今天,您通常使用容器进行部署,因此让我们先介绍一下这一点。

要部署容器,您需要一个容器编排平台。最受欢迎的是Kubernetes。几乎所有的公共云计算提供商都可以使用它作为托管平台。尽管Kubernetes可以为您做很多事情,但它是一个非常复杂的工具,有自己的工具生态系统。如果您正在寻找一些更简单的东西,那么可以看看云供应商提供了什么。AWS提供弹性容器服务(ECS)。ECS也是一个容器协调器,但是使用起来要简单得多。其他有用的工具还有Docker-compose,用于在本地构建和测试容器,以及Docker swarm,它是由Docker自身构建的Docker协调器。

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

部署码头工人

集装箱化有很多好处。首先编写一个Dockerfile,其中包含如何构建Docker映像的信息。这个Dockerfile是构建容器所需要的唯一文件。您可以在自己的机器上构建并运行容器,也可以将其作为持续交付过程的一部分运行。一旦构建完成,您就可以在任何Docker协调器上运行它,比如Kubernetes。

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

容器的普遍采用,尤其是Docker,为在基础设施中轻松部署、重新部署和扩展容器铺平了道路。Kubernetes将管理资源利用率、调度、伸缩、安全性和网络,而您可以将精力集中在容器本身。由于Kubernetes作为一种服务在主要公共云提供商上的可用性,您实际上可以在任何您想要的地方运行这些容器。唯一需要注意的是,您仍然需要访问数据,因此在现实中,跨云部署策略仍然没有您预期的那么容易。

部署没有多克

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

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

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

建筑基础设施

在部署到您的(云)基础设施之前,您仍然需要在云(或本地)中设置大量资源。最常用的工具就是Terraform。Terraform支持主要的云提供商(Amazon AWS, Microsoft Azure,谷歌cloud等)。它允许您将基础设施写成代码,允许您抽象出完整的基础设施设置。您可以将代码存储在版本控制中,从而允许您与队友协作,获取更改历史,并使用审计工具。

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

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

建立不变的基础设施

当使用容器或VM映像部署应用程序时,每次应用程序更新(Git提交到版本控制)时,都需要重新生成映像。重建图像后,您将推出此新图像。基本上,您首先要关闭当前的应用程序基础架构。然后,您需要将其替换为更新的虚拟机或云实例,直到所有正在运行的服务器都包含新版本的应用程序。

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

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

在使用容器编排工具时,这一点更加正确。你的Docker容器在默认情况下是不可变的,所以每次你要进行更新时,你都将构建一个新的Docker映像。在Kubernetes工作者级别上,您也不希望再进行就地更改。通常,您将使用来自云供应商的预构建映像,其中包含最小的软件集,仅够作为Kubernetes工作节点运行。所有定制软件现在都在容器中。对工人的升级也将是不可变的,允许一个完整的、不可变的基础设施设置。

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

安全威胁

如果没有考虑到安全性,就不应该构建执行DevOps策略的所有基础设施。云提供商有很多工具可以帮助你保护数据,降低数据泄露的风险。一个非常强大但经常被忽视的措施就是使用非常严格的访问规则。AWS通过IAM (Identity & Access Management)创建用户、组和角色。这些规则包含访问规则,称为策略。这些策略通常编写得过于宽泛,允许用户、组或角色进行过多访问。收紧它们可以显著改善你的安全姿势。可以使用特定条件编写高级策略,以测试访问来自何处,并基于此信息允许或拒绝访问资源。

监控工具

一旦你的基础设施建立起来,你就需要监控它。监控将包括两个方面:应用程序监控和基础设施本身监控。

要监视基础设施,您需要使用云提供商提供的工具。对于AWS来说,这将是CloudWatch。如果没有可用的监控,或者您不在云上,那么您肯定想看看Prometheus。该监视工具与大多数云本地工具集成,是一种很好的工具。你会发现你可以使用很多不同的药剂。您可以在Linux / Windows服务器实例上安装这些代理。其他插件可用于特定的服务,如数据库。Prometheus支持抽取指标,但也为不支持抽取的系统部分提供了推送网关。

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

无论您是使用Prometheus来监视应用程序还是基础设施,您都可以将它与Grafana集成,以创建出色的可视化仪表板。

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

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

页面最后更新:2020年4月

DevOps顶级课程

绝对新手邮差培训
里卡多卡斯托迪奥酒店
4.3 (154)
DevOps MasterClass: Terraform Jenkins Kubernetes Docker
LevelUp360°DevOps |谷歌云|地形| Kubernetes
4.4 (4,176)
DevOps项目:与Jenkins Ansible Docker Kubernetes合作的CI/CD
Valaxy Technologies | AR Shankar
4.5 (6763)
学习DevOps: Docker, Kubernetes, Terraform和Azure DevOps
in28Minutes官方,Ravi S | DevOps专家- Docker & Kubernetes,开放云解决方案|微软Azure认证- AZ 900, Ranga Karanam | GCP认证-谷歌云工程师和架构师
4.5 (4377)
畅销书
DevOps项目| 20实时DevOps项目
伊姆兰Teli
4.6 (202)
使用AWS CDK的终极DevOps - 100%亲手操作(使用Python)
卡伦·布雷尔
4.6 (107)
畅销书
DevOps目录,模式和蓝图
尤Farcic,达林教皇
4.7 (207)
学习DevOps:基于Terraform的基础设施自动化
爱德华Viaene
4.5 (10405)
畅销书

更多DevOps课程

DevOps学生也会学习

授权你的团队。引领行业。

通过Udemy for Business订阅您组织的在线课程和数字学习工具图书馆。

请求演示

Edward Viaene的课程

学习DevOps:基于Terraform的基础设施自动化
爱德华Viaene
4.5 (10405)
畅销书
学习DevOps:完整的Kubernetes课程
爱德华Viaene
4.5 (13,228)
学习DevOps:高级Kubernetes用法
爱德华Viaene
4.2 (1138)
在AWS和Kubernetes上使用Spinnaker进行持续部署
爱德华Viaene,乔恩Jambers
4.5 (1,512)
普罗米修斯的监测和警报
爱德华Viaene,乔恩Jambers
4.3 (2706)
畅销书
AWS高级安全
爱德华Viaene,乔恩Jambers
4.1 (261)
蔚蓝地形
爱德华Viaene,乔恩Jambers
4.2 (1,008)

Edward Viaene的课程