我有两个用于暂存和生产的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注册表中看到它。
但第二个命令失败了:
在项目〔01234567890〕区域〔us-east1〕中将新配置应用于云运行服务〔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看不到我能看到的图像?
当我输入这个问题时,我想起了我在这两个项目之间引入的唯一区别:我将生产配置为作为用户管理的服务帐户运行。我这样做是为了让它能够访问生产机密(登台不使用(。
因此,我在我的暂存项目中添加了一个新的服务帐户,并赋予它Secret Manager Secret Accessor角色,然后通过YAML配置为作为该帐户运行,然后重新部署并运行。
这对我来说没有任何意义。它似乎a(与Artifact Registry无关b(解释了前几天它工作的原因。