gcloud测试版运行deploy-source.投掷412



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

当我使用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'

我看到工件注册表存储库是在正确的区域中创建的,但不是在存储桶中创建的。

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

查看错误消息表明,无论欧洲的组织政策如何,bucket都必须在美国创建。根据此公共问题跟踪评论,

"云构建提交在美国。当资源受到限制时,这当然不会奏效。作为一种变通方法,你可以在另一个位置。您应该在第一次构建云之前这样做提交。">

这是一个已知的问题,我找到了两个解决方案,可以帮助您实现您想要的目标。

第一个解决方法是使用带有附加标志的"gcloudbuilds-submit":

  • 在首选位置
  • 使用--gcs源暂存目录和--gcs日志目录2===>该标志是必需的,如同未设置一样它将在美国制造一个水桶

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

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

gcloud构建提交--gcs源暂存目录=";gs://example bucket/cloudbuild custom"--config cloudbuild.yaml

请尝试这些解决方案,并告诉我它是否对您有效。

最新更新