You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跨项目访问集中式Google Artifact Registry的GKE默认账号配置问询

配置跨项目GKE节点访问集中式Artifact Registry

要让其他GKE项目的默认节点服务账号访问单个项目中的Artifact Registry,核心是通过IAM授权跨项目服务账号的镜像拉取权限,具体步骤如下:

1. 定位关键信息

  • 记录存放Artifact Registry的项目ID(记为artifact-host-project)
  • 对每个需要访问的GKE项目,获取其项目编号——默认节点服务账号固定格式为:[目标项目编号]-compute@developer.gserviceaccount.com

2. 授予跨项目镜像拉取权限

在存放Artifact Registry的项目中,为目标GKE项目的默认节点服务账号添加roles/artifactregistry.reader角色,允许其拉取镜像:

gcloud projects add-iam-policy-binding artifact-host-project \
  --member="serviceAccount:[目标项目编号]-compute@developer.gserviceaccount.com" \
  --role="roles/artifactregistry.reader"

如果需要批量授权多个项目,可使用循环脚本简化操作:

# 替换为需要授权的目标项目ID列表
TARGET_PROJECTS=("proj-team-a" "proj-team-b" "proj-team-c")

for proj in "${TARGET_PROJECTS[@]}"; do
  PROJ_NUM=$(gcloud projects describe $proj --format='value(projectNumber)')
  gcloud projects add-iam-policy-binding artifact-host-project \
    --member="serviceAccount:${PROJ_NUM}-compute@developer.gserviceaccount.com" \
    --role="roles/artifactregistry.reader"
done

3. 在目标GKE集群中使用镜像

在其他项目的GKE workload配置里,直接指定Artifact Registry的完整镜像路径即可,格式示例:

[区域]-docker.pkg.dev/artifact-host-project/[仓库名称]/[镜像名称]:[标签]

Pod配置示例:

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
spec:
  containers:
  - name: test-container
    image: us-central1-docker.pkg.dev/artifact-host-project/my-app-repo/backend:v1.0.0

4. 验证配置有效性

  • 登录目标GKE节点,执行拉取命令测试:
docker pull us-central1-docker.pkg.dev/artifact-host-project/my-app-repo/backend:v1.0.0
  • 若拉取失败,优先排查:
    • IAM绑定是否已生效(权限同步通常需要1-2分钟)
    • 目标节点所在VPC是否允许443端口出站(默认VPC规则已包含该权限)
    • 镜像路径是否正确,Artifact Registry仓库是否处于正常状态

内容的提问来源于stack exchange,提问作者carrotcakeslayer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 13:50:26