AWS自动部署工具codedeploy的部署概述

1)在AWS lambda平台上部署:

三大部分:要部署的内容 -->  部署的配置 --> 更新的lambda函数版本服务器

部署的流程:上传修订的应用程序-->建立一个应用程序-->指定部署组-->指定部署的配置-->指定一个appspec文件-->进行部署-->检查部署结果-->若是出现问题再根据须要从新部署。app

2)在AWS ECS 平台上的部署:

部署前提:负载均衡

在建立codedeploy部署组时,必须指定包含ECS服务的ECS集群;函数

codedeploy必须已经启用ECS服务,默认状况下,ECS部署已启用ECS服务,当建立部署组时须要选择部署ECS集群的ECS服务;spa

在要随ECS部署一块儿更新的ECS服务必须使用ELB,可使用 应用程序负载均衡器 或 Network Load Balancer。官方建议使用 应用程序负载均衡器,以即可以利用动态端口映射和基于路径的路由和优先级规则等功能。在建立 CodeDeploy 应用程序的部署组时,须要指定负载均衡器;代理

在建立部署组时,您须要指定一个或两个侦听器,侦听器是负载均衡器将流量定向到目标组的。(若是使用ECS控制台建立ECS服务,系统建立侦听器)code

一个ECS部署须要2个目标组,一个用于ECS程序的原始任务集,一个用于ECS程序的替换任务集。在部署过程当中,codedeploy会建立一个替换的任务集,并将流量替换到新的任务集,在建立部署组时须要指定目标组。(在部署期间,CodeDeploy 会肯定哪一个目标组与  ECS 服务中状态为 PRIMARY(这是原始任务集)的任务集关联,并将一个目标组与其关联,而后将另外一个目标组与替换任务集关联。若是执行其余部署,则与当前部署的原始任务集关联的目标组将与下一个部署的替换任务集关联)。orm

须要在 CodeDeploy 应用程序的 AppSpec file中指定任务定义的 ARN(运行包含 ECS 应用程序的 Docker 容器须要任务定义);教程

须要在codedeploy应用程序的appspec file中指定容器的名称,appapec file中指定的容器必须是ECS任务定义的之一。(Docker 容器 包含您的软件应用程序须要运行的全部内容。负载均衡器将流量定向到 Amazon ECS 应用程序任务集中的容器);事件

在ECS部署期间,负载均衡器会将流量定向到您 CodeDeploy 应用程序的 AppSpec file所指定容器上的端口,须要在 CodeDeploy 应用程序的 AppSpec file中指定端口。

部署组件:要部署的内容 -->  部署的配置 --> ECS的替换任务集

部署工做流程:建立一个ECS部署,并将部署控制器设置为codedeploy--> 建立一个codedeploy应用程序-->建立一个部署组-->指定一个APPspec file-->部署-->检查部署结果-->出现问题再回到部署环节

3)EC2或本地计算平台上的部署

部署组件:要部署的内容-->  部署的配置 --> 部署组和缩放组

主要的部署工做流程:建立一个应用程序-->指定部署组-->指定部署的配置-->更新须要部署的内容-->部署-->检查部署-->出现问题再回到部署环节

步骤详解:

1.经过指定惟一表示您要部署的应用程序修订和表示应用程序的计算平台的名称来建立应用程序;

2.设置部署组时,要指定部署类型和要部署应用程序修订的实例。就地部署将使用最新的应用程序修订更新实例。蓝/绿部署向负载均衡器注册部署组的一组替换实例并取消注册原始实例、能够指定应用于实例的标签或 Amazon EC2 Auto Scaling 组名称、在全部状况下实例必须配置为在部署中使用(即,它们必须已标记或属于 Amazon EC2 Auto Scaling 组),而且已安装并运行 CodeDeploy 代理、AWS提供了一个 AWS CloudFormation 模板,您可以使用该模板基于 Amazon Linux 或 Windows Server 快速设置 Amazon EC2 实例,还提供了独立的 CodeDeploy 代理、配置Amazon SNS 通知 — 建立触发器,以便在部署和实例中发生指定的事件(例如,成功或失败事件)时,向 Amazon SNS 主题的订阅者发送通知、基于警报的部署管理 — 实现 Amazon CloudWatch 警报监控,以在指标超出或低于 CloudWatch 中设置的阈值时中止部署、自动部署回滚 — 配置部署,使之在部署失败或达到警报阈值时自动回滚到已知良好的版本。

3.指定部署配置,以指明多少实例要同时部署应用程序修订并描述成功和失败的条件;

4.将应用程序修订上传到 Amazon S3 或 GitHub。除了要部署的文件和要在部署期间运行的全部脚本外,您还必须包含application specification file(AppSpec file)。该文件包含部署说明,例如,要将文件复制到的每一个实例上的位置,以及运行部署脚本的时间。

5.将应用程序修订部署到部署组。部署组中每一个实例的 CodeDeploy 代理将您的应用程序修订从 Amazon S3 或 GitHub 复制到该实例。而后,CodeDeploy 代理将取消捆绑修订,使用 AppSpec file将相应文件复制到指定的位置并执行任何部署脚本。。

6.检查部署结果

7.从新修订,从新部署。

注意:如下是开始前须要作的{

设置实例

您须要先设置实例,而后才能首次部署应用程序修订。若是一个应用程序修订须要三个生产服务器和两个备份服务器,您将启动或使用五个实例。

要手动预配实例,请执行如下操做:

  1. 在实例上安装 CodeDeploy 代理。CodeDeploy 代理可安装在 Amazon Linux、Ubuntu Server、RHEL 和 Windows Server 实例上。

  2. 若是要使用标签来标识部署组中的实例,请启用标记。CodeDeploy 依赖标签来标识实例并将其分组到 CodeDeploy 部署组。尽管入门教程同时使用了键和值,可是您能够只使用键或值为部署组定义标签。

  3. 启动附加有 IAM 实例配置文件的  EC2 实例。IAM 实例配置文件必须附加到启动的  EC2 实例,以便让 CodeDeploy 代理验证该实例的身份。

  4. 建立服务角色。提供服务访问权,以便 CodeDeploy 能够展开您的 AWS 帐户中的标签。

对于初始部署,AWS CloudFormation 模板将为您完成全部这些操做。它基于已安装 CodeDeploy 代理的 Amazon Linux 或 Windows Server 建立并配置单个新 Amazon EC2 实例。

注意

对于蓝/绿部署,您能够选择使用您已有的用于替换环境的实例,或者也能够选择让 CodeDeploy 在部署过程当中为您预置新实例}