0

我有两个用于暂存和生产的 Cloud Run Knative YAML 文件。我有两个用于暂存和生产的 GCP 项目以及两组工件注册表。

我使用简单的 zip 并像这样构建:

gcloud builds submit --tag us-east1-docker.pkg.dev/proj-a/repo-x/image-y:1.0

然后我编辑最后yaml调整标签,然后重新部署:

gcloud run services replace staging.yaml

前几天这一切都在工作,我的登台和生产站点已经启动。刚才它也适用于我的生产项目。

我刚刚切换了项目使用gcloud config set core/project proj-b,然后再次运行这两个命令,进行了必要的调整。

第一个命令成功;图像已构建,我可以在 Artifact Registry 中看到它。

但是第二个命令失败了:

将新配置应用于项目 [01234567890] 区域 [us-east1] 中的 Cloud Run 服务 [cloud-run-z]

X 正在部署... 未找到映像“us-east1-docker.pkg.dev/proj-a/repo-x/image-y:1.0”。

X 创建修订版... 未找到映像“us-east1-docker.pkg.dev/proj-a/repo-x/image-y:1.0”。

. 路由流量...

部署失败

错误:(gcloud.run.services.replace)找不到图像“us-east1-docker.pkg.dev/proj-a/repo-x/image-y:1.0”。

我可以看到图像,我已经将它在控制台中写入的 URL 粘贴到了我yaml的位置,这在前几天可以正常工作。

为什么 Cloud Run 看不到我可以看到的图像?

4

1 回答 1

1

当我输入这个问题时,我想起了我在两个项目之间引入的唯一区别:我已将生产配置为作为用户管理的服务帐户运行。我这样做是为了允许它访问生产机密(暂存不使用)。

因此,我在我的暂存项目中添加了一个新的服务帐户,并为其赋予了 Secret Manager Secret Accessor 角色,然后通过 YAML 配置为作为该帐户运行,然后重新部署并运行。

这对我来说实际上没有任何意义。似乎 a)与工件注册表无关 b)解释为什么它在前几天工作。

于 2021-12-21T18:35:08.987 回答