【发布时间】:2020-07-13 20:42:35
【问题描述】:
在将 docker 容器镜像部署到 Cloud Run 时,我可以选择一个区域,这很好。 Cloud Run 将构建委托给 Cloud Build,后者显然会创建两个存储桶来实现这一点。出乎意料的行为是未在 Cloud Run 部署的区域中创建存储桶,而是默认为多区域美国。
如何将区域指定为“us-east1”,以便“始终免费”层吸收存储成本?(显然,美国多区域存储桶将数据存储在外部区域免费层限制,这导致了一个意外的账单 - 我试图避免这个账单。)
如果重要的话,我也在这个项目中使用 Firebase。我在 us-east1 区域创建了 Firebase 默认存储桶,希望它也可能成为其他桶的默认存储桶,但事实并非如此。最终的存储桶列表如下所示,您可以在其中看到使用不受欢迎的多区域设置自动创建的两个存储桶。
这是我用来构建和部署的 shell 脚本:
#!/bin/sh
project_id=$1
service_id=$2
if [ -z "$project_id" ]; then
echo "First argument must be the Google Cloud project ID" >&2
exit 1
fi
if [ -z "$service_id" ]; then
echo "Second argument must be the Cloud Run app name" >&2
exit 1
fi
echo "Deploying $service_id to $project_id"
tag="gcr.io/$project_id/$service_id"
gcloud builds submit \
--project "$project_id" \
--tag "$tag" \
&& \
gcloud run deploy "$service_id" \
--project "$project_id" \
--image "$tag" \
--platform managed \
--update-env-vars "GOOGLE_CLOUD_PROJECT=$project_id" \
--region us-central1 \
--allow-unauthenticated
【问题讨论】:
-
我认为这是 stackoverflow.com/questions/51595900/… 的副本。您应该仍然可以发送电子邮件至 cloud-build-contact@google.com 以访问抢先体验计划。
-
根本不是,实际上问题是关于工件存储在哪个区域或区域。
-
@DustinIngram 这只是关于存储工件的区域。我不在乎处理构建的计算资源在哪里,甚至它们如何工作。我只是在运行 gcloud 命令来构建和部署。我已将问题编辑为具体说明。
-
@FernandoRV 是的,这只是关于工件。我看到了一些关于使用 yaml 文件的说明,这些文件让您可以指定容器注册表,但这似乎有点过头了,而且似乎没有任何简单的 gcloud CLI 选项来讨论如何管理这些存储桶。
-
明白了,抱歉我看错了!
标签: google-cloud-platform google-cloud-storage google-cloud-build google-cloud-run