Не удалось развернуть службу облачного запуска с использованием образа из другого проекта

#google-cloud-run

#google-cloud-run

Вопрос:

Получение этой ошибки при попытке развернуть службу облачного запуска с использованием образа из другого проекта в той же организации.

» Агент службы облачного запуска Google должен иметь разрешение на чтение образа, gcr.io/my-builds/consultoriaweb@sha256:8c655b2bab ….. Убедитесь, что указанный URL-адрес изображения контейнера указан правильно и что у указанной выше учетной записи есть разрешение на доступ к образу. Если вы только что включили API облачного запуска, распространение разрешений может занять несколько минут. Обратите внимание, что образ взят из project [my-builds], который отличается от этого project [my-webapp] . Необходимо предоставить разрешение агенту службы облачного запуска Google из этого проекта «.

Я выбираю образ для развертывания из реестра контейнеров в проекте my-builds с помощью веб-интерфейса консоли Google.

Уже добавлено разрешение IAM для проекта [my-builds], попробовал оба:

[my-webapp-project-number]-compute@developer.gserviceaccount.com => роль Пользователя Вычислительного образа

[my-webapp-project-number]@cloudservices.gserviceaccount.com => роль Пользователя Вычислительного образа

В документации Google говорится, что я должен просто предоставить роли / compute.imageUser для:

[my-webapp-project-number]@cloudservices.gserviceaccount.com в моем проекте-builds, но я не могу заставить его работать.

Документация Google по использованию изображений из других проектов, но я не знаю, применимо ли это к облачному запуску. https://cloud.google.com/deployment-manager/docs/configuration/using-images-from-other-projects-for-vm-instances#granting_access_to_images

Заранее спасибо за любую помощь в этом

Ответ №1:

Вы смешали разные вещи. Образ контейнера не является образом загрузочного диска Compute Engine.

Итак, вам необходимо предоставить учетной записи службы агента службы облачного запуска для доступа к образу для вашего другого проекта. Здесь вы можете найти документацию по предоставлению доступа к образу GCR.

Затем вам необходимо получить учетную запись службы агента службы облачного запуска, которая имеет этот шаблон

 service-<projectNumber>@serverless-robot-prod.iam.gserviceaccount.com
 

И то, и другое вместе, вы можете перейти к консоли проекта, в котором размещен образ контейнера; перейдите на страницу IAM, нажмите добавить

  • Добавьте учетную запись службы агента службы облачного запуска в качестве участника
  • Предоставьте роль: средство просмотра объектов хранилища.

Комментарии:

1. Любые советы, как сделать то же самое с помощью terraform?

2. Вы должны иметь возможность получить номер проекта с помощью Terraform. Затем вам просто нужно создать сценарий создания имени учетной записи службы и предоставить ему то, что вам нужно

3. Что-то, что может быть полезно знать: если вы установите разрешения и попытаетесь повторно развернуть тот же образ, он продолжит сбой. Вы должны перейти на другой образ, а затем вернуться, иначе он никогда не повторит попытку.

Ответ №2:

Спасибо. Заставьте его работать!

Я нашел много разных ресурсов / документов о настройке разрешения на облачный запуск для извлечения изображений контейнеров из других проектов. Итак, я проверил, чтобы найти тот, который действительно действительно нужен:

Для реестра артефактов:

  • Участники: serviceAccount:service-<projectNumber>@serverless-robot-prod.iam.gserviceaccount.com
  • Роль: roles/artifactregistry.reader

Для реестра контейнеров:

  • Участники: serviceAccount:service-<projectNumber>@serverless-robot-prod.iam.gserviceaccount.com
  • Роль: roles/storage.objectViewer

Еще раз спасибо.