Назад | Перейти на главную страницу

Обновление до последних образов Docker в Elastic Beanstalk Multicontainer

Я запускаю сайт на Elastic Beanstalk, используя настройку с несколькими контейнерами. Мне интересно, как лучше всего использовать самые свежие изображения.

На сервере CI после успешной фиксации на мастере я создаю образы Docker, отправляю их в репозитории в AWS Elastic Container Service и затем запускаю что-то вроде:

CURRENT_VERSION=`aws elasticbeanstalk describe-environments --environment-names $ENVIRONMENT_NAME | jq -r '.Environments[0].VersionLabel'`
aws elasticbeanstalk update-environment --environment-name $ENVIRONMENT_NAME --version-label $CURRENT_VERSION`

Это примерно работает, но мне интересно, является ли это наиболее эффективным способом обновления сайта. В документы для среды обновления сказать очень мало.

Кроме того, среда состоит из 4 разных изображений, каждое из которых имеет собственное репо и обновляется независимо разными командами. Проблема в том, что иногда обновления «конфликтуют», если среда уже выполняет обновление. Я мог подождать Status быть «готовым» и AbortableOperationInProgress быть ложным, но я не хочу задерживать сервер CI потенциально на несколько минут.

Я думал об использовании Amazon SQS + Lambda, чтобы поставить их в очередь, но мне кажется, что это слишком много. Было бы очень полезно, если бы в EBS уже была встроена такая очередь обновлений. Я не могу быть первым, кто столкнется с этой проблемой.

Любые идеи и указатели приветствуются.

Спасибо,

Хуан