我应该向 CircleCi 使用的服务帐户添加哪些角色?

Which roles should I add to my service account utilised by CircleCi?

我正在 运行 测试并将我的 docker 图像从 CircleCi 推送到 Google Container Registry。至少我正在努力。 我的服务帐户需要哪些角色才能将图像拉取和推送到 GCR? 即使作为角色为 "Project Owner" 的帐户,我也会收到此错误:

 gcloud --quiet container clusters get-credentials $PROJECT_ID
   Fetching cluster endpoint and auth data.
   ERROR: (gcloud.container.clusters.get-credentials) 
   ResponseError: code=403, 
   message=Required "container.clusters.get" permission(s) 
   for "projects/$PROJECT_ID/locations/europe-west1/clusters/$CLUSTER".

根据 this 文档,您需要 storage.admin 角色才能从 Google 推送(读取和写入),并需要 storage.objectViewer 角色才能拉取(只读)容器注册表。

关于无法以所有者身份获取凭据的主题,您可能使用的是机器的服务帐户而不是您的所有者帐户。通过 command:

检查您使用的是哪个帐户
gcloud auth list

您可以通过 UI 更改计算机正在使用的服务帐户,方法是先停止实例,然后编辑服务帐户。您还可以使用 Google 凭据使用 command:

gcloud auth login

希望这对您有所帮助

当您收到 Required "___ANYTHING____" permission 消息时:

  • 转到控制台 -> IAM -> 角色 -> 创建新的自定义角色 [ROLE_NAME]

  • 添加 container.clusters.get and/or 您需要的任何其他权限才能让整个事情顺利进行(例如,我需要 kubectl 的一些权限)

  • 将该角色(控制台 -> IAM -> Add+)分配给您的服务帐户