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