我有一個父專案,它有一個為 docker 配置的工件注冊表。
一個孩子的專案有需要從拉其影像的云中運行的服務的父。
該子專案也有被授權通過IAM角色來訪問存盤庫中的服務帳戶的角色/ artifactregistry.writer。
當我嘗試啟動我的服務時,我收到一條錯誤訊息:
Google Cloud Run Service Agent 必須有讀取鏡像的權限,europe-west1-docker.pkg.dev/test-parent-project/docker-webank-private/node:custom-1。確保提供的容器鏡像 URL 正確,并且上述帳戶具有訪問鏡像的權限。如果您剛剛啟用了 Cloud Run API,則權限可能需要幾分鐘才能傳播。注意圖片來自專案[test-parent-project],與本專案[test-child-project]不一樣。必須從該專案向 Google Cloud Run 服務代理授予權限。
我已經通過docker login手動連接并使用服務帳戶的私鑰進行了測驗,并且docker pull命令在我的 PC 上完美運行。
cat $GOOGLE_APPLICATION_CREDENTIALS | docker login -u _json_key --password-stdin https://europe-west1-docker.pkg.dev
> Login succeeded
docker pull europe-west1-docker.pkg.dev/bfb-cicd-inno0/docker-webank-private/node:custom-1
> OK
服務帳戶也附加到云運行服務:

uj5u.com熱心網友回復:
您在 Cloud Run 中使用了兩種型別的服務帳號:
- Google Cloud Run API 服務帳號
- 運行時服務帳戶。
在您的解釋和螢屏截圖中,您談到了運行時服務帳戶,即服務在運行和呼叫 Google Cloud API 時將使用的身份。
但是在運行之前,必須部署服務。這一次,它是一個 Google Cloud Run 內部行程,它運行以拉取容器、創建修訂并執行所有必需的內部操作。為了完成這項作業,還存在一個服務帳戶,它被命名為“服務代理”。
在IAM控制臺中可以找到:格式如下
service-<PROJECT_NUMBER>@serverless-robot-prod.iam.gserviceaccount.com
不要忘記勾選右上角的復選框以包含 Google 托管服務帳戶

如果您希望此部署服務帳戶能夠在另一個專案中拉取映像,請為其授予正確的權限,而不是運行時服務帳戶。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/390049.html
上一篇:Docker不會安裝
