Развернуть контейнер в Cloud Run после автоматической отправки в реестр артефактов

Я хочу установить соединение (без написания кода) между Google Cloud Artifact Registry и Cloud Run. Поэтому при каждом нажатии я хочу создавать / обновлять службу в Cloud Run с тем же именем.

Это возможно?

3 ответа

Решение

Нет, не можешь. Система, отправляющая образ, должна сразу после запуска развертывания новой версии Cloud Run с новым образом. то latest отметьте, если хотите.

Никакие автоматические действия невозможны при push-событии в реестре артефактов.

В настоящее время существует два разных способа автоматического выполнения кода при загрузке новых артефактов в реестр артефактов:

Первый вариант: облачная функция, запускаемая Pub/Sub.

Реестр артефактов публикует сообщения о новых вставленных и удаленных артефактах в теме Pub/Sub.gcr. Обратите внимание, что вам, возможно, придется создать эту тему самостоятельно.

Чтобы реагировать на изменения артефактов, вы можете создать облачную функцию, которая активируется сообщениями, отправленными в эту тему. Обратите внимание, что вам нужно будет фильтровать полученные сообщения поattributes.action=="INSERT"внутри вашей облачной функции действовать только при создании новых артефактов, а не при их удалении.

Дополнительную информацию об этом можно найти в документации GCP: https://cloud.google.com/artifact-registry/docs/configure-notifications .

Второй вариант: облачная функция, запускаемая Eventarc.

Используя Eventarc, вы можете реагировать на определенные события, например, на загрузку Docker-контейнера в реестр артефактов. Для этого обязательно включите журналы аудита доступа к данным для реестра артефактов, поскольку Eventarc поддерживает только события реестра артефактов на основе журналов аудита: https://cloud.google.com/logging/docs/audit/configure-data-access# конфигурация-консоль-включить

Соответствующим методом реагирования для вашего варианта использования должен бытьDocker-PutManifest. См. https://cloud.google.com/eventarc/docs/event-types#artifact-registry для получения полной документации доступных методов.

Чтобы развернуть облачную функцию, запускаемую Eventarc:

      gcloud functions deploy <YOUR_FUNCTION_NAME> \
   --gen2 \
   --trigger-event-filters="type=google.cloud.audit.log.v1.written" \
   --trigger-event-filters="serviceName=artifactregistry.googleapis.com" \
   --trigger-event-filters="methodName=Docker-PutManifest"
...

Дополнительную информацию об этом см. на странице https://cloud.google.com/functions/docs/calling/eventarc#deployment .

Я бы посоветовал вам подумать о Реестре контейнеров, тогда вы можете подключать автоматические события.

Другие вопросы по тегам