![](/img/trans.png)
[英]GCP - Not able to Push docker image from Compute Engine to Container Registry
[英]Access GCP Docker image from different project
我有兩個 GCP 項目。 projectA 包含一個工件注冊表,我在其中存儲我的 docker 圖像,projectB 是我想使用這樣的圖像通過應用程序引擎(靈活)部署它的地方。
這是我的命令的樣子:
gcloud app deploy --project=projectB --version=test1 --image-url="asia-northeast1-docker.pkg.dev/projectA/default/my-image:latest"
它像這樣失敗:
錯誤:(gcloud.app.deploy)錯誤響應:[7] App Engine appspot 和 App Engine 靈活環境服務帳戶必須對圖像具有權限 [asia-northeast1-docker.pkg.dev/projectA/default/my-image :最新的]。 請檢查 App Engine 默認服務帳戶是否具有 [Storage Object Viewer] 角色,App Engine Flexible 服務帳戶是否具有 App Engine Flexible Environment Service Agent 角色
我確保App Engine default service account
具有Storage Object Viewer
角色(在兩個項目中),但是我無法在任何地方找到App Engine Flexible service account
。
您需要確保項目 B 的App Engine default service account
可以訪問項目 A 中的 gcs 存儲桶。
您應該將 go 到 projectA 到“IAM”(而不是“服務帳戶”),在那里您將能夠從 projectB 添加App Engine default service account
的projectB
地址。
在 Google Cloud 上,您有 2 個容器注冊表產品:容器注冊表和工件注冊表。
當您使用 Container Registry(舊版)時,Kunal 的回答是正確的,您需要在您的項目中將服務帳戶授予 Storage Object Viewer。
然而,新注冊表 Artifact Registry 的一個主要演變是 IAM 兼容性。 這次您可以授予的不是項目 scope(即使您可以,但我不推薦),而是在注冊表 scope 中。您有一個 IAM 角色專用於此。
Go 到 Artifact Registry,select it(左側的復選框)和 go 到右側的權限面板
點擊add member,添加你的service account和select 正確的role,這里神器閱讀器就夠了
(當然,如果您在項目 scope 授予您的服務帳戶具有相同的角色,它也有效)
編輯 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.