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