AWS CDK 是不是提供用于部署 ECS 应用程序的构造?

Posted

技术标签:

【中文标题】AWS CDK 是不是提供用于部署 ECS 应用程序的构造?【英文标题】:Does AWS CDK provide constructs to deploy ECS applications?AWS CDK 是否提供用于部署 ECS 应用程序的构造? 【发布时间】:2020-06-18 13:00:13 【问题描述】:

我们一般采用BlueGreen & Rolling部署策略,

用于 ECS 容器实例中的 docker 容器,以进行部署和更新。


Ansible ECS 模块允许使用以下模块实施此类部署策略:

https://docs.ansible.com/ansible/latest/modules/ecs_taskdefinition_module.html

https://docs.ansible.com/ansible/latest/modules/ecs_task_module.html

https://docs.ansible.com/ansible/latest/modules/ecs_service_module.html


AWS CDK 是否提供此类结构来实施部署策略?

【问题讨论】:

滚动更新,我有更新:github.com/aws/aws-cdk/issues/6605#issuecomment-601812497 【参考方案1】:

CDK 支持更高级别的 ECS 构造,称为“ECS 模式”。其中之一是 ApplicationLoadBalancedFargateService,它允许您在 Application Load Balancer 后面定义 ECS Fargate 服务。在这种情况下,开箱即用支持滚动更新。您只需使用更新的 Docker 映像运行 cdk deploy,ECS 将负责部署。它将:

    使用新的 Docker 映像启动新任务。 等待新部署的几次成功的运行状况检查。 开始向新任务发送新流量,同时让现有连接优雅地完成旧任务。 所有旧连接完成后,ECS 将自动停止旧任务。

如果您的新任务未启动或运行状况不佳,ECS 将继续运行原始任务。

关于蓝绿部署,我认为是yet to be supported in CloudFormation。完成后,它可以在 CDK 中实现。如果您可以不用 BlueGreen 作为 IaC,您可以手动定义您的 CodeDeploy。

【讨论】:

对于在 ECS 容器实例 (EC2) 而不是 fargate/ 中运行的应用程序的 CDK 支持怎么样? 我只运行 Fargate 工作负载,但是看看 CDK 的 API 文档,它应该也受支持 检查这个...github.com/aws/aws-cdk/issues/6605#issuecomment-601812497【参考方案2】:

查看这个 NPM 插件,它有助于使用 CDK 进行蓝绿部署。

https://www.npmjs.com/package/@cloudcomponents/cdk-blue-green-container-deployment

【讨论】:

【参考方案3】:

现在云形成支持蓝绿色部署。

https://aws.amazon.com/about-aws/whats-new/2020/05/aws-cloudformation-now-supports-blue-green-deployments-for-amazon-ecs/

不要认为 CDK 实现已经完成。

【讨论】:

以上是关于AWS CDK 是不是提供用于部署 ECS 应用程序的构造?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 aws-cdk 从 AWS Secrets Manager 导入 EKS 密钥?

使用 aws cdk 创建 sam canary 部署

AWS CDK 并在现有 ALB 上创建 ECS/Fargate 服务。使用现有的监听器?

如何识别 aws cdk 应用程序何时在部署状态下运行?

如何从在 AWS ecs 上使用 docker 部署的应用程序获取日志

AWS ECS 生产 Docker 部署