在另一个项目中使用 GKE 的 Google 容器注册表

3
一个GKE集群如何从另一个项目中托管的容器仓库拉取容器镜像?
我有一个在<reader-project>项目中的GKE集群,试图访问<registry-project>项目中的GCR镜像。
我尝试将<reader-project>的GCE服务帐号电子邮件添加为具有<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个回答

6

尝试将GCE服务帐户电子邮件添加为具有存储对象查看器角色的用户。这将为服务帐户提供只读访问权限,以访问项目中的GCS对象(容器镜像)。


是否可以在一个 IAM 角色下添加一组项目服务帐户电子邮件地址,以便我也可以授予该组其他权限?看起来应该可以,但我已经尝试了 Storage Viewer 的方法,但没有成功。 - Symmetric
没问题,那应该可以。 - Lizhu Qi
现在这个还不行。我尝试将不同项目的计算引擎服务帐户添加到包含注册表的项目中,但仍然出现 403 错误。 - Lakshman Diwaakar

2
请查看您的GKE所在项目的IAM权限,您会看到一个类似于以下用户的用户:123456789-compute@developer.gserviceaccount.com。然后在您的容器注册表项目中,授予该用户Storage Object Viewer权限。这样,您的GKE就可以从该注册表中拉取镜像。

0

请运行以下命令以检查两个存储桶的权限:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接