创建 Amazon ECS 线性部署
通过使用 Amazon ECS 线性部署,您可以按照指定的时间间隔以相等增量逐渐转移流量。这可以为部署过程的每个步骤提供受控验证。
先决条件
在开始线性部署之前,请执行以下操作。
-
配置相应的权限。
-
有关 Elastic Load Balancing 权限的信息,请参阅适用于负载均衡器的 Amazon ECS 基础设施 IAM 角色。
-
有关最低权限的更多信息,请参阅 Amazon ECS 蓝绿部署中 Lambda 函数所需的权限。
-
-
Amazon ECS 线性部署要求服务使用以下功能之一:配置合适的资源。
-
应用程序负载均衡器:有关更多信息,请参阅适用于蓝绿部署、线性部署和金丝雀部署的应用程序负载均衡器资源。
-
-
创建规则,以将流量路由到新的服务修订。有关更多信息,请参阅 Elastic Load Balancing 应用程序负载均衡器中的侦听器规则。
-
为绿色服务修订版创建目标组。使用
awsvpc网络模式执行任务时,目标类型必须是ip。有关目标组的信息,请参阅 Elastic Load Balancing 应用程序负载均衡器中的目标组。
过程
您可以使用控制台或 Amazon CLI 创建 Amazon ECS 线性部署服务。
- Console
-
-
确定要从其中启动服务的资源。
从中启动服务 Steps 集群
-
在集群页面上,选择要在其中创建服务的集群。
此时将显示集群详细信息页面。
-
在服务选项卡上,选择创建。
任务定义 -
在任务定义页面上,选择任务定义。
-
从部署菜单中,选择创建服务。
此时会显示创建服务页面。
-
-
在服务详细信息下,执行以下操作:
-
对于任务定义系列,选择要使用的任务定义。然后,在任务定义修订中,输入要使用的修订。
-
对于 Service name(服务名称),为您的服务输入一个名称。
-
-
要在现有集群中运行服务,请为现有集群选择集群。要在新集群中运行服务,请选择创建集群
-
选择任务在集群基础设施中的分发方式。在计算配置下,选择您的选项。
计算选项 Steps 容量提供程序策略
-
在计算选项下,选择容量提供程序策略。
-
选择策略:
-
要使用集群的原定设置容量提供程序策略,请选择 Use cluster default(使用集群原定设置)。
-
如果集群没有默认的容量提供程序策略,或者要使用自定义策略,请选择使用自定义,添加容量提供程序策略,然后通过指定基准、容量提供程序和权重来定义自定义容量提供程序策略。
-
注意
要在策略中使用容量提供程序,容量提供程序必须与集群相关联。
启动类型 -
在 Compute options(计算选项)部分中,选择 Launch type(启动类型)。
-
对于启动类型,请选择一种启动类型。
-
(可选)当指定 Fargate 时,对于平台版本,请指定要使用的平台版本。如果未指定任何版本,将使用
LATEST平台版本。
-
-
在部署配置下,执行以下操作:
-
对于服务类型,选择副本。
-
对于 Desired tasks(预期任务),输入要在服务中启动并保留的任务数量。
-
要让 Amazon ECS 监控可用区之间的任务分配情况,并在出现不平衡时重新分配任务,请在可用区服务重新平衡下选择可用区服务重新平衡。
-
对于运行状况检查宽限期,输入在任务首次启动后,服务调度程序将忽略运行状况不佳的 Elastic Load Balancing、VPC Lattice 和容器运行状况检查的时间长度(以秒为单位)。如果没有指定运行状况检查宽限期值,则使用默认值 0。
-
-
在部署配置下,配置线性部署设置:
-
对于部署策略,选择线性。
-
对于流量增量百分比,输入每个增量中要转移的流量百分比(例如,10% 以 10% 增量转移流量)。
-
对于增量之间的间隔,输入每个流量转移增量之间等待的时间(以分钟为单位)。
-
对于烘焙时间,输入在蓝色修订终止之前,蓝色服务修订和绿色服务修订在最终流量转移之后同时运行的分钟数。
-
(可选)在部署的特定阶段运行 Lambda 函数。在部署生命周期挂钩下,选择要运行生命周期挂钩的阶段。
要添加生命周期挂钩,请执行以下操作:
-
选择添加。
-
对于 Lambda 函数,输入函数名称或 ARN。
-
对于角色,选择有权调用 Lambda 函数的 IAM 角色。
-
对于生命周期阶段,选择应运行 Lambda 函数的阶段。
-
-
-
要配置 Amazon ECS 如何检测和处理部署故障,请展开 Deployment failure detection(部署故障检测),然后选择您的选项。
-
要在任务无法启动时停止部署,请选择 Use the Amazon ECS deployment circuit breaker(使用 Amazon ECS 部署断路器)。
要让软件在部署断路器将部署设置为故障状态时自动将部署回滚到上次完成的部署状态,请选择故障时回滚。
-
要根据应用程序指标停止部署,请选择使用 CloudWatch 警报。然后,从 CloudWatch 警报名称中选择警报。要创建新报警,请转到 CloudWatch 控制台。
要让软件在 CloudWatch 警报将部署设置为故障状态时自动将部署回滚到上次完成的部署状态,请选择故障时回滚。
-
-
(可选)要使用 Service Connect 与服务进行互连,请展开 Service Connect,然后指定以下参数:
-
选择打开 Service Connect。
-
在 Service Connect configuration(Service Connect 配置)下,指定客户端模式。
-
如果您的服务运行的网络客户端应用程序只需要连接到命名空间中的其他服务,请选择仅限客户端。
-
如果您的服务运行网络或 Web 服务应用程序且需要为该服务提供端点并连接到命名空间中的其他服务,请选择 Client and server(客户端和服务器)。
-
-
要使用默认集群命名空间以外的命名空间,对于命名空间,请选择服务命名空间。这可以是您在 Amazon Web Services 账户的同一 Amazon Web Services 区域中单独创建的命名空间,也可以是使用 Amazon Resource Access Manager(Amazon RAM)与您的账户共享的同一区域中的命名空间。有关共享 Amazon Cloud Map 命名空间的更多信息,请参阅《Amazon Cloud Map 开发人员指南》中的 Cross-account Amazon Cloud Map namespace sharing。
-
(可选)为线性部署配置测试流量标头规则。在测试流量路由下,指定以下内容:
-
选择启用测试流量标头规则,以便在测试期间将特定请求路由到绿色服务修订版。
-
对于标头匹配规则,配置路由测试流量的条件:
-
标头名称:输入要匹配的 HTTP 标头名称(例如
X-Test-Version或User-Agent)。 -
匹配类型:选择匹配条件:
-
精确匹配:路由标头值与指定值完全匹配的请求
-
标头存在性:路由包含指定标头的请求,无论其值如何
-
模式匹配:路由标头值与指定模式匹配的请求
-
-
标头值(如果使用精确匹配或模式匹配):输入要匹配的值或模式。
可以添加多个标头匹配规则以创建复杂的路由逻辑。与任何已配置规则相匹配的请求将路由到绿色服务修订版进行测试。
-
-
选择添加标头规则以配置其他标头匹配条件。
注意
测试流量标头规则有助于在完成全面部署之前使用受控流量验证新功能。这将允许您使用特定请求(例如来自内部测试工具或测试用户的请求)来测试绿色服务修订版,同时维持流向蓝色服务修订版的正常流量。
-
-
(可选)指定日志配置。选择使用日志收集。默认选项将容器日志发送到 CloudWatch Logs。其他日志驱动程序选项都使用 Amazon FireLens 进行配置。有关更多信息,请参阅 将 Amazon ECS 日志发送到 Amazon 服务或 Amazon Partner。
下面更详细地介绍了每个容器日志目标。
-
Amazon CloudWatch – 将任务配置为将容器日志发送到 CloudWatch Logs。提供了默认的日志驱动程序选项,用于代表您创建 CloudWatch 日志组。要指定其他日志组名称,请更改驱动程序选项值。
-
Amazon Data Firehose – 将任务配置为将容器日志发送到 Firehose。提供了默认的日志驱动程序选项,这些选项将日志发送到 Firehose 传输流。要指定其他传输流名称,请更改驱动程序选项值。
-
Amazon Kinesis Data Streams – 将任务配置为将容器日志发送到 Kinesis Data Streams。提供了默认的日志驱动程序选项,这些选项将日志发送到 Kinesis Data Streams 流。要指定其他传输流名称,请更改驱动程序选项值。
-
Amazon OpenSearch Service – 将任务配置为将容器日志发送到 OpenSearch Service 域。必须提供日志驱动程序选项。
-
Amazon S3 – 将任务配置为将容器日志发送到 Amazon S3 存储桶。提供了默认的日志驱动程序选项,但您必须指定有效的 Amazon S3 存储桶名称。
-
-
-
(可选)为线性部署配置负载均衡。
Elastic Load Balancing 类型 Steps 应用程序负载均衡器
-
对于负载均衡器类型,选择应用程序负载均衡器。
-
选择创建新的负载均衡器来创建新的应用程序负载均衡器,或使用现有负载均衡器选择现有应用程序负载均衡器。
-
对于容器,选择用于托管服务的容器。
-
对于 Load balancer name(负载均衡器名称),输入唯一的名称。
-
对于侦听器,为应用程序负载均衡器输入一个端口和协议,以侦听连接请求。预设情况下,负载均衡器将配置为使用端口 80 和 HTTP。
-
对于生产规则,输入规则的评估顺序和路径模式。
此规则适用于生产服务修订流量。
-
对于测试规则,输入规则的评估顺序和路径模式。
此规则适用于测试服务修订流量。
-
-
对于目标组,配置以下内容:
-
对于目标组名称,输入应用程序负载均衡器要将请求路由到的目标组的名称和协议。
-
对于协议,选择应用程序负载均衡器要向其路由请求的目标组的协议。默认情况下,目标组会将请求路由到任务定义中定义的第一个容器。
-
对于取消注册延迟,输入负载均衡器将目标状态更改为
UNUSED的秒数。默认值为 300 秒。 -
对于运行状况检查路径,输入容器中存在的路径,应用程序负载均衡器应定期发送请求以验证应用程序负载均衡器和容器之间的连接运行状况。默认路径为根目录(
/)。 -
对于备用组名称,输入测试服务修订目标组的组名称。
-
-
-
(可选)为了帮助确定您的服务和任务,请展开标签部分,然后配置您的标签。
要让 Amazon ECS 使用集群名称和任务定义标签自动标记全部新启动的任务,选择开启 Amazon ECS 托管标签,然后对于从中传播标签,选择任务定义。
要让 Amazon ECS 使用集群名称和服务标签自动标记全部新启动的任务,选择开启 Amazon ECS 托管标签,然后对于从中传播标签,选择服务。
添加或删除标签。
-
[添加标签] 选择 Add tag(添加标签),然后执行以下操作:
-
对于 Key(键),输入键名称。
-
对于值,输入键值。
-
-
[删除标签] 在标签旁,选择删除标签。
-
-
选择创建。
- Amazon CLI
-
-
使用以下内容创建名为
linear-service-definition.json的文件。将
user-input替换为您的值。{ "serviceName": "myLinearService", "cluster": "arn:aws:ecs:us-west-2:123456789012:cluster/sample-fargate-cluster", "taskDefinition": "sample-fargate:1", "desiredCount": 5, "launchType": "FARGATE", "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "subnet-09ce6e74c116a2299", "subnet-00bb3bd7a73526788", "subnet-0048a611aaec65477" ], "securityGroups": [ "sg-09d45005497daa123" ], "assignPublicIp": "ENABLED" } }, "deploymentController": { "type": "ECS" }, "deploymentConfiguration": { "strategy": "LINEAR", "maximumPercent": 200, "minimumHealthyPercent": 100, "linearConfiguration": { "stepPercentage": 10.0, "stepBakeTimeInMinutes":6 }, "bakeTimeInMinutes": 10, "alarms": { "alarmNames": [ "myAlarm" ], "rollback": true, "enable": true } }, "loadBalancers": [ { "targetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/blue-target-group/54402ff563af1197", "containerName": "fargate-app", "containerPort": 80, "advancedConfiguration": { "alternateTargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/green-target-group/cad10a56f5843199", "productionListenerRule": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-linear-demo/32e0e4f946c3c05b/9cfa8c482e204f7d/831dbaf72edb911", "roleArn": "arn:aws:iam::123456789012:role/LoadBalancerManagementforECS" } } ] } -
运行
create-service。aws ecs create-service --cli-input-json file://linear-service-definition.json
-
后续步骤
-
更新服务以启动部署。有关更多信息,请参阅 更新 Amazon ECS 服务。
-
监控部署过程,确保其遵循线性模式:
-
创建绿色服务修订版并进行纵向扩展
-
流量以增量方式按指定的时间间隔转移
-
每个增量等待指定的时间间隔,然后再进行下一次转移
-
所有流量转移后,烘焙时间开始
-
烘焙时间结束后,蓝色修订将终止
-