AWS ECS Перезапустите сервис, если не запущен последний образ - PullRequest
0 голосов
/ 23 января 2019

Я настраиваю автоматическое развертывание с использованием Azure DevOps для развертывания в AWS ECS, где запущены службы на экземпляре EC2 (не Fargate).Образы Docker загружаются в ECR, и ECS полностью настраивается с использованием шаблонов CloudFormation.

После завершения развертываний (загружено новое изображение и / или применены любые изменения CloudFormation) Мне нужно перезапустить службу, только если она не работает по последней версииверсия изображения, которое использует определение задачи.Если CloudFormation обновил определение службы или задачи, он автоматически перезапустится, и я не хочу перезапускать его снова.Кроме того, если образ докера не был развернут, я не хочу его перезапускать.Итак, есть ли способ проверить, какую версию образа в данный момент выполняет задача службы?
Я не могу проверить, изменилась ли версия определения задачи, потому что в большинстве случаев это просто изображение, которое изменяется ине определение задачи.Я загружаю образ с помощью тега Latest, поэтому я могу просто вызвать ForceNewDeployment службы, чтобы он развернул новую версию, но если это возможно, я не хочу этого делать, если ничего не изменилось.

IПервоначально планировалось попытаться отследить это в процессе развертывания, но из-за того, как настроен наш конвейер выпуска и некоторых ограничений в DevOps Azure, я не смогу это сделать.

Я думаю, чтоЛучшее решение, если это возможно, - проверить, какая версия образа в настоящее время выполняется для каждой задачи в службе, и если у образа есть обновленная версия, выполните ForceNewDeployment в службе.Но ... есть ли способ сделать это?Или есть ли лучший способ сделать то, что я пытаюсь сделать?

Редактировать: Когда я загружаю образ Docker в ECR, я добавляю два тега: «Последний» и номер выпуска DevOps (»1234" ).Сначала я надеялся просто запросить изображения ECR в конце выпуска, и если у кого-то есть тег с номером текущего выпуска, я знаю, что изображение было обновлено.Проблема в том, что я не знаю, был ли перезапущен сервис из-за изменения CloudFormation.

...