У меня есть кластер ECS (example-ecs-cluster) с типом запуска ECS Service EC2 (example-ecs-service). Я пытаюсь создать тип развертывания Blue / Green с переключением целевой группы из CodeDeploy, что означает, что новая версия кода должна сначала обслуживаться с тестового порта, а затем должна быть заменена на порт prod. Я создал ELB и прикрепил двух слушателей, связанных с двумя разными целевыми группами. Одна целевая группа (example-target-group) для продукта с портом 80 и одна целевая группа (example-target-group2) для теста с портом 8080. Существует только одно определение задачи. Я могу убедиться, что при запуске развертывания создаются две разные версии задач. Итак, я ожидаю увидеть, что новая ревизия должна быть доступна через тестовый порт 8080, и как только CodeDeploy перенаправит трафик из исходной задачи, установленной в задачу замены, он должен быть доступен через порт 80. Однако, когда новое развертывание запускает оба Тестовый порт и порт prod служат для новой ревизии одновременно, чего не должно происходить.
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 с двумя максимальными запущенными задачами (одна с новой версией, а другая со старой).
Каков предпочтительный способ обработки этого сценария с использованием замены целевой группы? Спасибо!