Использование Google Container Registry от GKE в другом проекте
Как кластер GKE может извлечь образы контейнеров из реестра контейнеров, размещенного в другом проекте?
У меня есть кластер GKE в проекте <reader-project>
пытаясь получить доступ к изображению GCR в проекте <registry-project>
,
Я попытался добавить адрес электронной почты учетной записи службы GCE для <reader-project>
как пользователь с доступом к Reader в хранилище в <registry-project>
, но я все еще получаю ошибку:
<Error><Code>AccessDenied</Code>
<Message>Access denied.</Message>
<Details>Caller does not have storage.objects.get access to object us.artifacts.<registry-project>.appspot.com/containers/images/sha256:<tag>.
</Details></Error>
3 ответа
Попробуйте добавить адрес электронной почты учетной записи службы GCE в качестве пользователя с ролью средства просмотра объектов хранения. Он предоставляет учетной записи службы доступ только для чтения к объектам GCS (изображениям контейнеров) в вашем проекте.
Посмотрите на разрешения IAM проекта, под которым у вас есть GKE, и вы увидите пользователя, похожего на: 123456789-compute@developer.gserviceaccount.com
,
Затем в вашем проекте реестра контейнеров предоставьте этому пользователю Storage Object Viewer permission
, После этого вашему GKE будет разрешено извлекать изображения из
Можете ли вы выполнить следующие команды, чтобы проверить разрешения для обоих сегментов:
gsutil acl get gs: //us.artifacts..appspot.com
gsutil acl get gs: //artifacts..appspot.com
artifacts..appspot.com является контейнером по умолчанию. Когда вы добавляете учетную запись службы в качестве средства просмотра объектов хранения, предоставляется разрешение только на чтение для сегмента по умолчанию.
Вот ссылка на инструмент gsutil: https://cloud.google.com/storage/docs/gsutil/commands/acl