Cloud 运行 通过 YAML 部署说找不到图像
Cloud Run deploying via YAML says Image not found
我有两个 Cloud 运行 Knative YAML 文件用于暂存和生产。我有两个用于暂存和生产的 GCP 项目以及两套 Artifact Registry。
我使用简单的 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 中看到它。
但是第二个命令失败了:
Applying new configuration to Cloud Run service [cloud-run-z] in project [01234567890] region [us-east1]
X Deploying... Image 'us-east1-docker.pkg.dev/proj-a/repo-x/image-y:1.0' not found.
X Creating Revision... Image 'us-east1-docker.pkg.dev/proj-a/repo-x/image-y:1.0' not found.
. Routing traffic...
Deployment failed
ERROR: (gcloud.run.services.replace) Image 'us-east1-docker.pkg.dev/proj-a/repo-x/image-y:1.0' not found.
我可以看到该图像,我已将控制台中写入的 URL 粘贴到我的 yaml
中,以确保前几天工作正常。
为什么 Cloud 运行 看不到我能看到的图像?
当我输入这个问题时,我想起了我在两个项目之间引入的唯一区别:我将生产配置为 运行 作为用户管理的服务帐户。我这样做是为了允许它访问生产机密(暂存不使用)。
所以我在我的暂存项目中添加了一个新的服务帐户,并赋予它 Secret Manager Secret Accessor 角色,然后通过 YAML 配置为 运行 作为该帐户,然后重新部署并成功。
这对我来说实际上没有任何意义。似乎 a) 与 Artifact Registry 无关 b) 解释它为什么在前几天工作。
我有两个 Cloud 运行 Knative YAML 文件用于暂存和生产。我有两个用于暂存和生产的 GCP 项目以及两套 Artifact Registry。
我使用简单的 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 中看到它。
但是第二个命令失败了:
Applying new configuration to Cloud Run service [cloud-run-z] in project [01234567890] region [us-east1]
X Deploying... Image 'us-east1-docker.pkg.dev/proj-a/repo-x/image-y:1.0' not found.
X Creating Revision... Image 'us-east1-docker.pkg.dev/proj-a/repo-x/image-y:1.0' not found.
. Routing traffic...
Deployment failed
ERROR: (gcloud.run.services.replace) Image 'us-east1-docker.pkg.dev/proj-a/repo-x/image-y:1.0' not found.
我可以看到该图像,我已将控制台中写入的 URL 粘贴到我的 yaml
中,以确保前几天工作正常。
为什么 Cloud 运行 看不到我能看到的图像?
当我输入这个问题时,我想起了我在两个项目之间引入的唯一区别:我将生产配置为 运行 作为用户管理的服务帐户。我这样做是为了允许它访问生产机密(暂存不使用)。
所以我在我的暂存项目中添加了一个新的服务帐户,并赋予它 Secret Manager Secret Accessor 角色,然后通过 YAML 配置为 运行 作为该帐户,然后重新部署并成功。
这对我来说实际上没有任何意义。似乎 a) 与 Artifact Registry 无关 b) 解释它为什么在前几天工作。