AWS CodeDeploy - возможно ли даже скоординированное развертывание нескольких Сервисов ECS, работающих на общей ASG? - PullRequest
0 голосов
/ 26 сентября 2019

Я рассматриваю возможность использования AWS CodeDeploy для плавных развертываний зеленого, синего цвета.Однако на одной из первых страниц документации в статье «Интеграция продуктов и услуг / Amazon EC2 Autoscaling» я столкнулся с фундаментальной проблемой - крайне нежелательно делиться ASG между приложениями AWS CodeDeploy / группами развертывания.

Язапуск десятков служб ECS (app_one, app_two, app_xxx) в одном кластере ECS (backend).Они работают с общими экземплярами EC2, управляемыми одной AutoScalingGroup.Каждый app имеет свою собственную TargetGroup, но все они используют один и тот же ElasticLoadBalancer и добавляют правила к своему слушателю (/api/app_one переходит в TargetGroup, используемую app_one, /api/app_two переходит к app_two и т. Д.).

Я хочу продолжать использовать общие экземпляры EC2 в моем кластере ECS, но зеленый / синий развертывают мои приложения, иногда выполняя развертывание нескольких приложений одновременно.

Мои вопросы:

  • я должен отказаться от CodeDeploy все вместе?В конце концов, что мне нужно, это вопиющий разрыв фундаментальных понятий.Мои приложения работают на не очень маленьких экземплярах, но обычно используют только 10-30 процентов из них.Для меня нет ничего необычного в том, чтобы одновременно запускать 5 или 6 задач на одном компьютере из нескольких служб ECS.Я не могу создать разные ASG для каждого app, так как это резко увеличит количество моих экземпляров и счет AWS.

  • , если ответ выше - да, каковы мои альтернативы AWS?Шаговые функции AWS, выполняющие масштабирование ASG, запуск задачи ECS, настройки ELB и так далее для меня?

  • Возможно ли вообще выполнять скоординированное развертывание между двумя или более группами развертывания CodeDeploy?Допустим, я хочу обновить две службы ECS до новых версий одновременно: app_one и app_two.В идеале я ожидал бы, что CodeDeploy будет запускать новые контейнеры в общей инфраструктуре, добавляя новые экземпляры EC2, если необходимо, меняя TargetGroupArn сразу в нескольких правилах ELB, а затем уничтожая старые контейнеры.

Я быНе называйте мой вариант использования экзотическим или редким - я хочу, чтобы мое приложение делило ресурсы, когда это возможно, и иногда мне нужно развернуть несколько служб одновременноЧестно говоря, я ошеломлен тем, что, возможно, даже невозможно сделать это чисто, без написания тонны AWS Step Functions и Lambdas.

Возможно, что-то не так с моей архитектурой все вместе?Спасибо за любые идеи и предложения.

...