1

我有一个 ECS 集群 (example-ecs-cluster) 和一个 EC2 启动类型 ECS 服务 (example-ecs-service)。我正在尝试使用来自 CodeDeploy 的目标组交换构建蓝/绿部署类型,这意味着应首先从测试端口提供新的代码修订版,然后应将其与 prod 端口交换。我创建了一个 ELB 并附加了两个与两个不同目标组相关联的侦听器。一个目标组 (example-target-group) 用于端口 80 的 prod,一个目标组 (example-target-group2) 用于端口 8080 的测试。只有一个任务定义。我可以验证当部署开始时创建了两个不同的任务修订。所以,

ELB
 - Listener 80 --> example-target-group
 - Listener 8080 --> example-target-group2

我只创建了一个 ECS 服务,example-target-group因为 CODE_DEPLOY 部署控制器类型服务不支持多个目标组。

aws ecs create-service --cluster example-ecs-cluster --service-name example-ecs-service --task-definition nodejs-hello-world-task-def --desired-count 1 --deployment-controller type= CODE_DEPLOY --launch-type EC2 --load-balancers targetGroupArn=arn:aws:elasticloadbalancing:us-east-1:548754742764:targetgroup/example-target-group/0f9efaeceb63ac61,containerName=nodejs-hello-world,containerPort=8080

我试图通过仅一个运行两个最大任务的 EC2 实例来实现这一点(一个带有新修订版,另一个带有旧修订版)。

使用目标组交换来处理这种情况的首选方法是什么?谢谢!

4

1 回答 1

0

我使用这里解释的动态端口映射来做到这一点。通过这种方法,我的 ECS 集群连接了一个 EC2 实例和一个 ECS 服务。在每次部署时,ELB 都会切换目标组。

于 2019-12-05T13:52:26.477 回答