千家信息网

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

发表于:2024-12-12 作者:千家信息网编辑
千家信息网最后更新 2024年12月12日,这篇文章给大家介绍如何理解AWS的自动部署工具codedeploy概述和主要组件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。codedeploy概述:codedeploy是aw
千家信息网最后更新 2024年12月12日如何理解AWS的自动部署工具codedeploy概述和主要组件

这篇文章给大家介绍如何理解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概述和主要组件就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

0