如何理解AWS的自动部署工具codedeploy概述和主要组件

84次阅读
没有评论

共计 3097 个字符,预计需要花费 8 分钟才能阅读完成。

这篇文章给大家介绍如何理解 AWS 的自动部署工具 codedeploy 概述和主要组件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

codedeploy 概述:

codedeploy 是 aws 上面的一个自动部署服务,可以自动的将应用程序部署到 EC2 实例、本地实例(任意的线上或线下自己的一台机器)、无实例的 lamda 函数、ECS 上面。

可以部署的应用程序包括:代码、无服务器的 lamda 函数、web 和配置、可执行文件、包、脚本、多媒体文件。

可以部署到一个或数千个实例。

CodeDeploy 提供了两种部署类型选项:

1)就地部署:停止部署组中每个实例上的应用程序,安装最新的应用程序修订版,并启动并验证新版本的应用程序。您可以使用负载平衡器,以便在部署期间取消注册每个实例,然后在部署完成后恢复为服务。只有使用 EC2 / On-Premises 计算平台的部署才能使用就地部署。

工作原理:创建可部署的内容,添加应用程序规范文件  (AppSpec 文件:定义了 CodeDeploy 执行的部署操作),将可部署内容和 AppSpec 文件捆绑到存档文件中,然后上传到 s3 或 github 中,此时的归档文件称为应用程序修订版   —   告诉 codedeploy 新代码或部署内容在哪,codedeploy 调用一组 EC2  —   每台 EC2 上面的 EC2 实例轮询 codedeploy,确定在哪获得新的内容和时间   —   每个实例上的 CodeDeploy 代理从 S3 或 GitHub 上提取新代码,并使用 AppSpec 文件中的指令将内容部署到实例。

2)蓝绿部署:蓝 / 绿部署将应用程序原始环境中的流量重新路由到替换环境,环境取决于 codedeploy 应用程序的计算平台。

AWS Lambda:流量从 Lambda 函数的一个版本转移到同一 Lambda 函数的新版本。

Amazon ECS:流量从 Amazon ECS 服务中的任务集转移到同一 Amazon ECS 服务中更新的替换任务集。

EC2/ 本地:流量从原始环境中的一组实例转移到一组替换实例。

所有 AWS Lambda 和 Amazon ECS 部署都是蓝 / 绿部署。EC2/ 本地部署可以是就地部署或蓝 / 绿部署。蓝绿部署相比较就地部署的优势:

1)可以在新的替换环境中安装和测试应用程序,在部署的时候只需要重新路由流量就可以应用到生产环境中;

2)如果是 EC2 或本地实例,切换回最新的程序版本将更快,更可靠。这是因为只要原始实例没有被终止,流量就可以路由回原始实例,而在就地部署中,必须重新部署上一个版本的应用程序来进行回滚;

3)如果生产环境使用的是 EC2 或本地实例,则会为蓝绿部署预置新的实例,并且新实例是最新的服务器配置,可以避免生产实例长时间运行出现的问题;

4)如果使用的是 lambda 计算平台,则需要控制流量如何从原始地 lambda 函数版本转移到新的 lambda 函数版本。

例:在 EC2 或本地实例上做蓝绿部署:

注(使用蓝绿部署必须使用 AWS 的 EC2 实例,不可是本地实例);如果使用 EC2 或本地计算平台必须有一个或多个带有标识的 EC2 标签或 EC2 Auto Scaling 组的 EC2 实例(这些实例必须满足:每个 EC2 实例必须附加有正确的 IAM 实例配置文件,并且在每台实例上安装运行 codedeploy 代理);通常,您还会有一个在原始环境中的实例上运行的应用程序修订,但这对蓝 / 绿部署来说不是必需的。

当创建使用蓝绿部署的部署组的时候,可以选择如何指定替换环境:{

复制现有 Amazon EC2 Auto Scaling 组: 在蓝绿部署中,codedeploy 将在部署期间为替换环境创建实例,CodeDeploy 将使用指定的 Amazon EC2 Auto Scaling 组作为替换环境的模板,其中包括相同数量的正在运行的实例和许多其他配置选项。

手动选择实例:使用 Amazon EC2 实例标签或 Amazon EC2 Auto Scaling 组名称指定要计为替换项的实例,选择了此项,在部署前无需指定替换环境的实例。

操作方式:

1)已有充当原始环境的一些实例或一个 Amazon EC2 Auto Scaling 组。首次运行蓝 / 绿部署时,您通常使用已在就地部署中使用的实例;

2)在 codedeploy 中创建一个蓝绿部署,在其中除了就地部署所需的选项之外,还要指定以下内容:

在蓝 / 绿部署过程期间,将流量从您原始环境路由到替换环境的负载均衡器。

立即将流量重新路由到替换环境还是等待您手动路由。

流量路由到替换实例的速率。

被替换的实例是终止还是继续运行。

3)为此部署创建了一个部署将会发生以下情况:

如果选择复制 Amazon EC2 Auto Scaling 组,则将为您的替换环境预置实例;

指定部署的应用程序将安装在替换环境上;

如果在部署组中设置了等待时间,部署将暂停,这是是对替换环境测试和验证的时间,如果未在等待之前进行手动路由流量,部署将停止;

替换环境中的实例向 Elastic Load Balancing 负载均衡器注册,流量开始路由到这些实例;

原始环境中的实例将取消注册,并根据部署组中的规范进行处理,要么终止,要么继续运行。

codedeploy 的主要组件:

应用:唯一标识要部署的应用程序的名称。代码部署使用此名称 (用作容器), 以确保在部署过程中引用修订、部署配置和部署组的正确组合。

计算平台:codedeploy 部署应用程序的平台。EC2/ 本地:可以作为 Amazon EC2 云实例或本地服务器的物理服务器实例。使用 EC2 或本地计算平台创建的应用程序可以包括可执行文件、配置文件和映像等。使用 EC2/ 本地 计算平台的部署通过使用就地部署或蓝 / 绿部署类型,管理流量定向到实例的方式。

部署配置:codedeploy 在部署期间使用的一组部署规则、部署成功条件、失败条件。如果部署采用的是 EC2 或本地实例,可以为部署指定最少数量的运行正常实例。

部署组:一组单独的实例。部署组包含单独标记的实例或 Amazon EC2 Auto Scaling 组中的 Amazon EC2 实例

部署类型:用于在部署组中的实例上,提供最新的的应用程序修订的方法。

IAM 实例配置文件:一种附加到 EC2 实例的 IAM 角色。此配置文件包含了访问 S3 和 github 的访问权限。

修订:lambda 部署修订是一种 yaml 格式或 json 格式的文件,指定有关要部署的 lambda 函数的信息。EC2 本地部署修订是一个存档文件,包含源内容(源代码、网页、可执行文件和部署脚本)以及 application specification file (AppSpec file)。AWS Lambda 修订可存储在 Amazon S3 中。EC2/ 本地 修订存储在 Amazon S3 或 GitHub 中。

服务角色:一组用于向 aws 服务授予权限便可以访问 aws 服务资源的 IAM 角色,在 codedeploy 中,服务角色用于:

读取应用于实例的标记与实例关联的 EC2 auto scaling 组名,这使 codedeploy 能够标识它,可将应用程序部署到实例;(使 codedeploy 对实例有部署的权限,)

对实例、EC2 auto scaling 组和 elastic load balancing 负载均衡器执行操作;(有执行操作的权利)

将信息发布到 aws SNS 主题,以便在发生指定的部署或实例事件时发送通知;(使 codedeploy 有发送信息到 SNS 的权利)

检索 cloudwatch 警报信息,设置部署的警报监视。

关于如何理解 AWS 的自动部署工具 codedeploy 概述和主要组件就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计3097字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)