Cloud Run 可讓您在無伺服器環境中執行無狀態映像檔。您可以使用 Cloud Build,將 Artifact Registry 中的映像檔部署至 Cloud Run。您可以部署現有映像檔、建構及部署映像檔,或自動部署。
事前準備
-
Enable the Cloud Build, Cloud Run, Artifact Registry, and Resource Manager APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.
準備好應用程式原始碼。原始碼必須儲存在 GitHub 或 Bitbucket 等存放區。
如要在本頁面執行
gcloud
指令,請安裝 Google Cloud CLI。如果您使用 VPC Service Controls,請在 VPC Service Controls 範圍內設定私人集區。您也必須為 VPC Service Controls 設定 Cloud Run。
必要的「身分與存取權管理」權限
-
在 Google Cloud 控制台中,前往「Cloud Build 權限」settings頁面:
針對指定的 Cloud Build 服務帳戶或預設 Cloud Build 服務帳戶,將下列角色的狀態設為「已啟用」:
- Cloud Run 管理員 (
roles/run.admin
):允許 Cloud Build 將新服務部署至 Cloud Run。- 在「指派服務帳戶使用者角色」面板中,選擇要模擬身分的服務帳戶,然後按一下「授予權限」。
- Storage 管理員 (
roles/storage.admin
):可從 Cloud Storage 讀取及寫入資料。 - Artifact Registry 寫入者 (
roles/artifactregistry.writer
):允許從 Artifact Registry 提取映像檔,以及寫入 Artifact Registry。 - 記錄寫入者 (
roles/logging.logWriter
):允許將記錄項目寫入 Cloud Logging。 - Cloud Build 編輯者 (
roles/cloudbuild.builds.editor
):允許服務帳戶執行建構作業。
- Cloud Run 管理員 (
建構及部署映像檔
Cloud Build 可讓您建構映像檔、將建構的映像檔儲存在 Artifact Registry 中,然後將映像檔部署至 Cloud Run。
如要建構及部署映像檔,請按照下列步驟操作:
在專案根目錄中,建立名為
cloudbuild.yaml
的設定檔。在建構設定檔中,新增
docker
建構步驟來建構映像檔並將其推送至 Artifact Registry,然後新增gcloud
建構步驟來叫用gcloud run deploy
指令,將映像檔部署至 Cloud Run:steps: # Build the image - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE', '.'] # Push the image to Artifact Registry - name: 'gcr.io/cloud-builders/docker' args: ['push', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE'] # Deploy image to Cloud Run - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: gcloud args: ['run', 'deploy', 'SERVICE_NAME', '--image', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE', '--region', 'SERVICE_REGION'] images: - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE'
其中:
REPOSITORY
是 Artifact Registry 存放區的名稱,您會從該處部署映像檔。LOCATION
是 Artifact Registry 存放區的位置,例如us-east1
。PROJECT_ID
是儲存圖片的專案 ID。 Google CloudSERVICE_NAME
是 Cloud Run 服務的名稱。SERVICE_REGION
是要部署的 Cloud Run 服務區域。IMAGE
是 Artifact Registry 中的映像檔名稱。
前往專案根目錄,然後執行下列指令,其中
LOCATION
是支援的建構區域之一,用於執行建構作業:gcloud builds submit --region=LOCATION
成功完成時,畫面會顯示成功訊息,還有已部署服務的網址。
持續部署
您可以建立 Cloud Build 觸發條件,自動將軟體部署至 Cloud Run。您可以設定觸發條件,在更新原始碼時建構及部署映像檔。
如要自動部署,請按照下列步驟操作:
在存放區根目錄中,新增名為
cloudbuild.yaml
的設定檔,其中包含建構映像檔、將映像檔推送至 Artifact Registry,然後叫用gcloud run deploy
指令的步驟:steps: # Build the image - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA', '.'] # Push the image to Artifact Registry - name: 'gcr.io/cloud-builders/docker' args: ['push', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA'] # Deploy image to Cloud Run - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: gcloud args: - 'run' - 'deploy' - 'SERVICE_NAME' - '--image' - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA' - '--region' - 'SERVICE_REGION' images: - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA'
其中:
REPOSITORY
是 Artifact Registry 存放區的名稱,您會從該處部署映像檔。LOCATION
是 Artifact Registry 存放區的位置,例如us-east1
。PROJECT_ID
是儲存圖片的專案 ID。 Google CloudSERVICE_NAME
是 Cloud Run 服務的名稱。SERVICE_REGION
是要部署的 Cloud Run 服務區域。IMAGE
是 Artifact Registry 中的映像檔名稱。
從 Git 存放區觸發時,Cloud Build 會填入
$COMMIT_SHA
替換變數。使用上一個步驟中建立的設定檔,建立建構觸發程序:
開啟「觸發條件」頁面:
點選「建立觸發條件」。
在「Name」(名稱) 欄位中,輸入觸發條件的名稱。
在「區域」下方,選取觸發條件的區域。
在「事件」下方,選取要啟動觸發條件的存放區事件。
在「來源」下方,選取存放區和分支版本或標記名稱,以啟動觸發程序。如要進一步瞭解如何指定要自動建構的分支版本,請參閱建立建構作業觸發條件。
在「設定」下方,選取「Cloud Build 設定檔 (YAML 或 JSON)」。
在「Cloud Build 設定檔位置」欄位中,在
/
後面輸入cloudbuild.yaml
。按一下「建立」即可儲存建構觸發條件。
現在,當您將新程式碼推送到存放區時,Cloud Build 會叫用建構作業,並將服務部署至 Cloud Run。
如要進一步瞭解如何建立 Cloud Build 觸發條件,請參閱「建立及管理建構觸發條件」。
程式碼範例
以下是一些範例存放區,每個存放區都包含範例應用程式和建構設定檔,可將應用程式部署至 Cloud Run:
- deploy-prebuilt: 程式碼範例,說明如何將預先建構的映像檔部署至 Cloud Run。
- run-example-builddeploy:程式碼範例,說明如何建構映像檔並部署至 Cloud Run。
後續步驟
- 瞭解如何使用 Cloud Deploy 部署至 Cloud Run。
- 瞭解如何在 GKE 上部署。
- 瞭解如何部署至 Cloud Run functions。
- 瞭解如何部署至 App Engine。
- 瞭解如何在 Firebase 上部署。
- 瞭解如何在 Compute Engine 上執行藍綠部署。
- 瞭解如何排解建構錯誤。