Amazon ECS(弹性容器服务)中的部署类型
发布: (2025年12月31日 GMT+8 23:05)
4 min read
原文: Dev.to
Source: Dev.to
引言
Amazon Elastic Container Service(Amazon ECS)是一项全托管的容器编排解决方案,可简化在 AWS 上部署、管理和扩展容器化应用程序的过程。 在 ECS 上运行应用程序的关键因素之一是部署新版本的方式。本文将探讨 Amazon ECS 中的部署类型,解释每种类型的工作原理,指出何时使用它们,并讨论最佳实践。 对 DevOps 和云工程师尤其有帮助。
什么是 ECS 部署类型?
ECS 中的部署类型定义了如何将任务定义的新版本引入到活动服务中。根据您的启动类型和负载均衡配置,ECS 支持多种策略:
- 使用 EC2 启动类型的 ECS
- 使用 AWS Fargate 的 ECS
- 使用应用负载均衡器(ALB)的 ECS
主要的 ECS 部署类型包括:
- 滚动部署(ECS 默认)
- 蓝绿部署(使用 AWS CodeDeploy)
- 外部部署(自定义 / 第三方)
滚动部署(ECS 默认部署)
滚动部署是 Amazon ECS 的标准方法。ECS 会根据更新后的任务定义逐步用新任务替换旧任务。
工作原理
- ECS 使用修订后的任务定义启动新任务。
- 现有任务逐步淘汰。
- 该过程受部署配置设置(例如最小健康百分比、最大百分比)的控制。
蓝绿部署(使用 AWS CodeDeploy)
- Blue(蓝) – 当前生产版本
- Green(绿) – 将要发布的新版本
流量以受控方式从蓝色环境切换到绿色环境。
工作原理
- 流量路由策略可以是:
- 同时(一次性全部切换)
- 直线(线性)
- 金丝雀(增量)
- 一旦验证了绿色任务,旧的(蓝色)任务即被终止。
前提条件
- 应用负载均衡器(ALB)
- 使用 CodeDeploy 部署控制器配置的 ECS 服务
- 附加到 ALB 的两个目标组(Blue 与 Green)
外部部署(自定义部署)
外部部署依赖外部系统来管理任务和服务的更新。
工作原理
- 外部工具或脚本更新 ECS 服务和任务。
- 您自行控制扩容、流量切换和回滚流程。
常用工具
- Jenkins
- GitHub Actions
- Argo CD
- 使用 AWS SDK 或 AWS CLI 的自定义脚本
结论
Amazon ECS 提供了一系列部署选项,以匹配不同的应用需求。滚动部署简单且成本效益高,蓝绿部署提供企业级的零停机可靠性,外部部署则在复杂场景下赋予您完全的控制权。了解这些部署类型有助于您在 AWS ECS 上构建健壮、可扩展且可靠的容器化应用程序。
参考文献
- https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html
- https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-bluegreen.html
- https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-steps-ecs.html
- https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html
- https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-external.html
- https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-load-balancing.html
- https://docs.aws.amazon.com/elasticloadbalancing/latest/application/target-group-health-checks.html