Как заставить Cloud Run обрабатывать несколько одновременных развертываний?

У меня есть проект с 4 компонентами, и для каждого компонента настроен хостинг в Google Cloud Run, отдельные развертывания для тестирования и для производства. Я также использую Google Cloud Build для сборки и развертывания компонентов.

Из-за отсутствия хороших событий веб-перехватчика из исходной системы я в настоящее время вынужден запускать перестройку всех компонентов в проекте каждый раз, когда появляется новое изменение. В проекте это означает 8 разных образов для сборки и развертывания, поскольку для тестирования и производства также используются разные настройки времени сборки.

Мне удалось оптимизировать Cloud Build для довольно хорошей обработки 8 параллельных сборок, но все они завершаются примерно в одно и то же время, а затем все 8 отправляются в Cloud Run. Часто кажется, что Cloud Run это совсем не нравится, и он начинает выдавать мне некоторые ошибки, которые я не смог исправить.

Первое и более серьезное заключается в том, что часто около 4-6 из 8 развертываний выполняются, как ожидалось, а остальные либо значительно задерживаются, либо просто терпят неудачу, часто так что первые несколько проходят нормально, затем несколько - со значительными задержками и финальные 1-2 просто проваливаются. Похоже, это вызвано тем, что некоторая «квота запросов на согласование» исчерпана в регионе (в данном случае europe-north1), так как это ошибка, которую я вижу в верхней части службы Cloud Run -view:  Ошибка развертывания службы Cloud Run

Вдобавок, что в основном раздражает, сама панель управления Cloud Run, похоже, не справляется с развертыванием 8 служб, поскольку просто нахождение в представлении панели управления со списком служб регулярно вызывает у меня еще одну ошибку, связанную с некоторыми квотами чтения:  введите описание изображения здесь < / а>

Я попытался связаться с Google с помощью рекомендованной ими кнопки «Отправить отзыв», но не получил ответа в течение ~ 1 недели + (кто знает, когда я его отправил, потому что они, похоже, не подтверждают получение).

Один из вариантов, который я могу сделать, чтобы попытаться улучшить ситуацию, - это развернуть «тестовый» и «рабочий» варианты в разных регионах, однако это было бы менее чем оптимальным, и похоже, что это простая конфигурация где-то с ограничениями. Могу ли я рассмотреть другие варианты? Или мне просто попытаться настроить на них некоторую синхронизацию, чтобы не все развертывания запускались одновременно?

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


person Janne Enberg    schedule 22.05.2020    source источник
comment
Если я хорошо понял, ваша основная проблема в том, что вы не можете развернуть несколько сервисов одновременно, верно? Эта потребность исходит из общих источников, когда вы ее меняете, вам нужно все повторно развертывать, все равно верно? Используете ли вы специальный параметр при развертывании Cloud Run с Cloud Build?   -  person guillaume blaquiere    schedule 22.05.2020
comment
@guillaumeblaquiere Основная проблема заключается в том, что одновременное развертывание нескольких сервисов вызывает ошибки в Cloud Run. Никаких особых аргументов не используется, просто использую их точный пример. gcloud run deploy <service> --image <gcrRepository>:<tag> --region europe-north1 --platform managed --allow-unauthenticated   -  person Janne Enberg    schedule 22.05.2020


Ответы (1)


Это проблема с Cloud Run. Ожидается, что разработчики смогут развертывать множество служб параллельно.

Ошибка должна быть исправлена ​​в течение нескольких дней или пары недель.

[обновление] Теперь ошибка должна быть исправлена.

Обязательно используйте флаг --async, если вы хотите выполнить параллельное развертывание: gcloud run deploy $SERVICE --image --async

person Steren    schedule 24.05.2020
comment
Может, пара недель - срок относительный. Еще один способ решить эту проблему - распределить ваши развертывания по нескольким регионам, но это не всегда вариант. - person Janne Enberg; 03.08.2020