【问题标题】:Using Google Container Registry from GKE in another project在另一个项目中使用来自 GKE 的 Google Container Registry
【发布时间】:2016-07-27 19:00:03
【问题描述】:

GKE 集群如何从托管在另一个项目中的 Container Registry 中提取容器镜像?

我在项目 <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>

【问题讨论】:

    标签: google-kubernetes-engine google-container-registry


    【解决方案1】:

    尝试将 GCE 服务帐户电子邮件添加为具有存储对象查看者角色的用户。它为服务帐户授予对项目中 GCS 对象(容器图像)的只读访问权限。

    【讨论】:

    • 是否可以在一个 IAM 角色下添加一堆项目服务帐户电子邮件,以便我也可以向该组授予其他权限?看起来应该是,但我已经为 Storage Viewer 尝试过这种方法,但它不起作用。
    • 是的,应该没问题。
    • 这现在不起作用。我尝试将不同项目的计算引擎服务帐户添加到包含注册表的项目中。我仍然收到 403 错误。
    【解决方案2】:

    查看您拥有 GKE 的项目的 IAM 权限,您会看到类似于:123456789-compute@developer.gserviceaccount.com 的用户。

    然后在您的容器注册表项目中,授予该用户Storage Object Viewer permission。然后,您的 GKE 将被允许从中提取图像

    【讨论】:

      【解决方案3】:

      您能否运行以下命令来检查两个存储桶的权限:

      gsutil acl 获取 gs://us.artifacts..appspot.com

      gsutil acl 获取 gs://artifacts..appspot.com

      artifacts..appspot.com 是默认存储桶。当您将服务帐户添加为存储对象查看器时,将授予默认存储桶的只读权限。

      这里是关于 gsutil 工具的链接: https://cloud.google.com/storage/docs/gsutil/commands/acl

      【讨论】:

        猜你喜欢
        • 2019-03-05
        • 2020-10-03
        • 1970-01-01
        • 1970-01-01
        • 2022-11-07
        • 1970-01-01
        • 1970-01-01
        • 2013-04-05
        • 1970-01-01
        相关资源
        最近更新 更多