簡體   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