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 并在现有 ALB 上创建 ECS/Fargate 服务。使用现有的监听器?