AWS ECS: мониторинг состояния обновления службы - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь перенести набор микросервисов из Docker Swarm в AWS ECS с помощью Fargate.

Я создал кластер ECS. Более того, я инициализировал репозитории с использованием ECR, каждый из которых содержит изображение микросервиса.

Я успешно разработал способ создания новых изображений и вставил их в ECR. Фактически, с каждым изменением в коде создается новое изображение докера, помечается и отправляется.

Кроме того, я создал определение задачи, которое связано со службой. Это определение задачи содержит один контейнер и всю необходимую информацию. Более того, его служба определяет, что задача будет выполняться в VPC, связана с балансировщиком нагрузки и имеет целевую группу. Я предполагаю, что при каждом новом развертывании используется образ с тегом «последний».

Пока что с тем, что я объяснил, все ясно и работает хорошо.

Ниже часть, которая смущает меня. После каждой новой сборки я хотел бы обновлять сервис для развертывания новых задач с образом обновления. Я использую cli, чтобы сделать это с помощью следующей команды:

aws ecs update-service --cluster <cluster-name> --service <service-name>

Обычно после выполнения команды я отслеживаю журналы развертывания на вкладке событий и проверяю состояние службы с помощью следующей команды:

aws ecs describe-services --cluster <cluster-name> --service <service-name>

Наконец, я попытался смоделировать случай, когда вновь созданное изображение содержит неверный код. Таким образом, новые задачи не смогут быть развернуты. Что я засвидетельствовал, так это то, что Фаргейт будет продолжать (без остановки) развертывать новые задачи. Кроме того, кроме журналов событий, команда describe-services не содержит релевантной информации, кроме того, что делает Fargate (например, регистрация / отмена регистрации задач). Я удивлен, что мне не удалось найти какой-либо механизм, который инструктирует Fargate или службу остановить развертывание и выполнить откат к уже существующему.

Я нашел эту статью (https://aws.amazon.com/blogs/compute/automating-rollback-of-failed-amazon-ecs-deployments/), которая предоставляет решение. Однако он довольно сложный и предполагает, что каждое новое развертывание запускается новым определением задачи, а это не то, что мне нужно.

Поэтому, учитывая то, что я описал выше, я надеюсь, что вы можете ответить на следующие вопросы:

1) Использование команд консоли (для целей автоматизации) Есть ли способ дать Fargate команду автоматически останавливать текущее развертывание после неудачного развертывания новых задач после нескольких попыток?

2) С помощью команд консоли можно ли отслеживать текущее состояние развертывания? Например, при выполнении обновления службы для службы в Docker Swarm терминал генерирует прямые журналы процесса обновления

3) Есть ли способ у Fargate после неудачного развертывания сигнализировать об ошибке, флаге или сообщении?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...