#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
Еще раз спасибо.