繁体   English   中英

gcloud beta 运行部署 --source。 抛出 412

[英]gcloud beta run deploy --source . throws 412

由于公司限制,我应该在欧洲托管 GCP 上的所有内容。 我工作的组织制定了限制政策来执行此操作。

当我使用gcloud beta run deploy --source. --region europe-west1 gcloud beta run deploy --source. --region europe-west1 us命令似乎试图将临时文件存储在美国的存储桶中,这是不允许的。 然后该命令会抛出 412 错误。

➜ gcloud beta run deploy cloudrun-service-name --source . --platform managed --region=europe-west1 --allow-unauthenticated
This command is equivalent to running `gcloud builds submit --tag [IMAGE] .` and `gcloud run deploy cloudrun-service-name --image [IMAGE]`

Building using Dockerfile and deploying container to Cloud Run service [cloudrun-service-name] in project [PROJECT_ID] region [europe-west1]
X Building and deploying new service... Uploading sources.                                                                                                                                                                                                      
  - Uploading sources...                                                                                                                                                                                                                                        
  . Building Container...                                                                                                                                                                                                                                       
  . Creating Revision...                                                                                                                                                                                                                                        
  . Routing traffic...                                                                                                                                                                                                                                          
  . Setting IAM Policy...                                                                                                                                                                                                                                       
Deployment failed                                                                                                                                                                                                                                               
ERROR: (gcloud.beta.run.deploy) HTTPError 412: 'us' violates constraint 'constraints/gcp.resourceLocations'

我看到在正确的区域中创建了 Artifact Registry Repository,但没有在存储桶中创建。

为了绕过这个,我必须首先在正确的区域创建一个名为PROJECT_ID_cloudbuild的存储桶。 还有其他方法可以解决这个问题吗?

查看错误消息表明无论在欧洲设置的组织策略如何,都必须在美国强制创建存储桶。 根据这个公共问题跟踪评论

“云构建提交在美国创建了一个 [PROJECT_ID]_cloudbuild 存储桶。 当资源限制适用时,这当然不起作用。 作为解决方法,您可以做的是在另一个位置自己创建该存储桶。 您应该在首次提交云构建之前执行此操作。”

这是一个已知问题,我发现了两个解决方法可以帮助您实现您想要的。

第一个解决方法是使用带有附加标志的“gcloud builds submit”:

  • 在首选位置创建一个名为 [PROJECT_ID]_cloudbuild 的新存储桶。
  • 使用--gcs-source-staging-dir--gcs-log-dir 2指定非存储桶 ===> 此标志是必需的,因为如果未设置,它将在美国创建一个存储桶。

第二种解决方法是使用 cloudbuild.yaml 和“--gcs-source-staging-dir”标志:

  • 在您可能需要的区域、双区域或多区域中创建存储桶
  • 创建一个cloudbuild.yaml用于存储构建工件
  • 您可以在以下外部文档中找到 YAML 文件的示例,请注意,我无法保证其准确性,因为它不是来自 GCP。
  • 运行命令:

gcloud 构建提交 --gcs-source-staging-dir="gs://example-bucket/cloudbuild-custom" --config cloudbuild.yaml

请尝试这些解决方法,让我知道它是否适合您。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM