从不同项目访问 Google Artifact 注册表

问题描述 投票:0回答:3

我想在单个 GKE 项目中配置 Google ArtifactRegistry,以便所有其他项目都可以访问此集中式 ArtifactRegistry。

在 Google 文档中,我不清楚如何实现这一点,特别是对于使用默认帐户的 Google Kubernetes Engine 节点。

您知道如何配置访问权限来实现该场景吗?

谢谢你,

google-cloud-platform repository google-kubernetes-engine cicd google-artifact-registry
3个回答
7
投票

使用 GKE,节点服务帐户会拉取映像以在节点上运行它。因此,您必须授予该节点服务帐户(或计算引擎默认服务帐户,如果您使用它)读取 Artifact Registry 中图像的权限。

您有 2 个级别可以在您的服务帐户上授予

roles/artifactregistry.reader
角色

  • 直接在 Artifact 注册表项目的 IAM 页面中。这样,服务帐户将有权访问您在项目中创建的所有注册表
  • 在注册表级别打开,仅授予该注册表的服务帐户,并禁止其他帐户。

这里有一个例子:

  • 选择您的注册表(左侧的复选框)
  • 在右侧权限部分添加主体

enter image description here


1
投票

如果您要向该注册表添加主体,请注意您无法添加尚不存在的服务帐户; GKE 集群运行的项目中的服务帐户必须首先存在,因为 GCP 不允许添加不存在的服务帐户。

如果您确实想使用工件注册表存在的自动化工作流程来管理该项目中的所有内容,这可能会给您带来先有鸡还是先有蛋的问题。因此,在项目中配置注册表并在单独的项目中配置 GKE 及其所有服务帐户之后,您可能需要有一个中间阶段,您需要像缝合器这样的东西将两者连接在一起,如果您在国际交流中心

但是您应该考虑另一种方法来避免任何


0
投票

我想扩展 GCP Cloud Functions 的答案。

在这种情况下,您需要提供不是计算引擎默认服务,而是云构建器服务帐户角色

roles/artifactregistry.reader

除此之外,@guillaume-blaquiere 所说的一切都成立。

默认的云构建器服务帐户是

<PROJECT_NUMBER>@cloudbuild.gserviceaccount.com

© www.soinside.com 2019 - 2024. All rights reserved.