使用 Cloud Deploy 將應用程式部署至 Cloud Run
本頁面說明如何使用 Cloud Deploy,將名為 hello 的範例應用程式映像檔,依序交付給兩項 Cloud Run 服務或兩項 Cloud Run 工作。
在本快速入門導覽課程中,您將完成下列事項:
事前準備
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
如要使用現有專案進行本指南中的操作,請確認您具有完成本指南所需的權限。如果您建立新專案,則已具備必要權限。
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Deploy, Cloud Build, Cloud Run, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM
role (roles/serviceusage.serviceUsageAdmin), which
contains the serviceusage.services.enable permission. Learn how to grant
roles.
Install the Google Cloud CLI.
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
執行下列指令,初始化 gcloud CLI:
gcloud initIn the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
如要使用現有專案進行本指南中的操作,請確認您具有完成本指南所需的權限。如果您建立新專案,則已具備必要權限。
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Deploy, Cloud Build, Cloud Run, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM
role (roles/serviceusage.serviceUsageAdmin), which
contains the serviceusage.services.enable permission. Learn how to grant
roles.
Install the Google Cloud CLI.
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
執行下列指令,初始化 gcloud CLI:
gcloud init必要的角色
如要取得建立 Cloud Deploy 交付管道和發布版本所需的權限,請要求管理員授予專案的 Cloud Deploy 工作執行者 (roles/clouddeploy.jobrunner) IAM 角色。
為確保 Cloud Deploy 服務帳戶具備必要權限,能執行 Cloud Deploy 作業及部署至 Cloud Run,請要求管理員在專案中將下列 IAM 角色授予 Cloud Deploy 服務帳戶:
-
Cloud Run 開發人員 (
roles/run.developer) -
IAM 服務帳戶使用者 (
roles/iam.serviceAccountUser)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
管理員或許也能透過自訂角色或其他預先定義的角色,將必要權限授予 Cloud Deploy 服務帳戶。
準備 Skaffold 設定
Cloud Deploy 會使用 Skaffold 提供詳細資料,說明要部署的內容,以及如何為個別目標正確部署。
在本快速入門導覽課程中,您會建立 skaffold.yaml 檔案,用於識別要部署範例應用程式的 Cloud Run 服務或工作定義。
開啟終端機視窗。
建立名為
deploy-run-quickstart的新目錄,然後前往該目錄。mkdir deploy-run-quickstart cd deploy-run-quickstart建立名為
skaffold.yaml的檔案,並在當中加入下列內容:服務
apiVersion: skaffold/v4beta7 kind: Config metadata: name: deploy-run-quickstart profiles: - name: dev manifests: rawYaml: - run-service-dev.yaml - name: prod manifests: rawYaml: - run-service-prod.yaml deploy: cloudrun: {}工作
apiVersion: skaffold/v4beta7 kind: Config metadata: name: deploy-run-quickstart profiles: - name: dev manifests: rawYaml: - run-job-dev.yaml - name: prod manifests: rawYaml: - run-job-prod.yaml deploy: cloudrun: {}這個檔案是基本的 Skaffold 設定,用於識別 Cloud Run 服務或作業。如要進一步瞭解這個檔案,請參閱
skaffold.yaml參考資料。
準備 Cloud Run 服務或工作
在本快速入門導覽課程中,您將在同一個專案中建立兩個不同的 Cloud Run 服務或兩個 Cloud Run 作業。Cloud Deploy 也支援跨多個專案部署。此外,我們使用 Skaffold 設定檔,讓您可以在同一個專案中擁有兩項服務或工作。使用不同專案時,您可能不需要使用 Skaffold 設定檔。
服務
建立名為
run-service-dev.yaml的檔案,並在當中加入下列內容:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: deploy-run-service-dev spec: template: spec: containers: - image: my-app-image這個檔案定義了 Cloud Run 服務。如名稱
deploy-run-service-dev所示,這是您的dev服務,對應於推送管道進度中的第一個目標。建立名為
run-service-prod.yaml的檔案,並在當中加入下列內容:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: deploy-run-service-prod spec: template: spec: containers: - image: my-app-image這個檔案定義了另一個 Cloud Run 服務,且如名稱
deploy-run-service-prod所示,這是您的prod服務,對應於推送管道進度中的第二個目標。
這些檔案是 Cloud Run 服務定義,用於部署應用程式。要部署的容器映像檔會在此處設為預留位置 my-app-image,並在您建立版本時替換為特定映像檔。
工作
建立名為
run-job-dev.yaml的檔案,並在當中加入下列內容:apiVersion: run.googleapis.com/v1 kind: Job metadata: name: deploy-run-job-dev spec: template: spec: template: spec: containers: - image: my-app-image這個檔案定義了 Cloud Run 工作。如名稱
deploy-run-job-dev所示,這是您的dev工作,對應於推送管道階段中的第一個目標。建立名為
run-job-prod.yaml的檔案,並在當中加入下列內容:apiVersion: run.googleapis.com/v1 kind: Job metadata: name: deploy-run-job-prod spec: template: spec: template: spec: containers: - image: my-app-image這個檔案定義了另一個 Cloud Run 工作。顧名思義,這是您的
prod工作,對應於推送管道階段中的第二個目標。deploy-run-job-prod
這些檔案是 Cloud Run 工作定義,用於部署應用程式。要部署的容器映像檔在此設為預留位置 my-app-image,當您建立版本時,系統會將其替換為特定映像檔。
建立推送管道和目標
您可以在一個或多個檔案中定義管道和目標。在本快速入門導覽課程中,您將建立單一檔案。
在
deploy-run-quickstart目錄中建立新檔案:clouddeploy.yaml,並加入下列內容:apiVersion: deploy.cloud.google.com/v1 kind: DeliveryPipeline metadata: name: my-run-demo-app-1 description: main application pipeline serialPipeline: stages: - targetId: run-qsdev profiles: [dev] - targetId: run-qsprod profiles: [prod] --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: run-qsdev description: Cloud Run development service run: location: projects/PROJECT_ID/locations/us-central1 --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: run-qsprod description: Cloud Run production service run: location: projects/PROJECT_ID/locations/us-central1向 Cloud Deploy 服務註冊管道和目標:
gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_ID您現在已擁有管道和目標,可以將應用程式部署到第一個目標。
確認管道和目標:
在 Google Cloud 控制台中,前往 Cloud Deploy 的「Delivery pipelines」(推送管道) 頁面,即可查看可用推送管道的清單。
系統會顯示您剛建立的推送管道,且兩個目標會列於「目標」欄中。

建立發布版本
版本是代表部署變更的中央 Cloud Deploy 資源。推送管道會定義該版本的生命週期。如要進一步瞭解該生命週期,請參閱 Cloud Deploy 服務架構。
從 deploy-run-quickstart 目錄執行下列指令,建立代表要部署容器映像檔的 release 資源:
服務
gcloud deploy releases create test-release-001 \
--project=PROJECT_ID \
--region=us-central1 \
--delivery-pipeline=my-run-demo-app-1 \
--images=my-app-image=us-docker.pkg.dev/cloudrun/container/hello@sha256:95ade4b17adcd07623b0a0c68359e344fe54e65d0cb01b989e24c39f2fcd296a
工作
gcloud deploy releases create test-release-001 \
--project=PROJECT_ID \
--region=us-central1 \
--delivery-pipeline=my-run-demo-app-1 \
--images=my-app-image=us-docker.pkg.dev/cloudrun/container/job@sha256:8eb3f5e72586de6375abe95aa67511c57c61d35fb37d5670e4d68624a68ef916
請注意 --images= 標記,您可以使用這個標記,將服務或工作定義中的預留位置 (my-app-image) 換成符合 SHA 資格的特定映像檔。Google 建議您以這種方式將服務和工作定義範本化,並在建立發布版本時使用 SHA 合格的映像檔名稱。
與所有版本一樣 (除非包含 --disable-initial-rollout),Cloud Deploy 也會自動建立推出資源。應用程式會自動部署至程序中的第一個目標。
推送版本
在「推送 pipeline」頁面中,按一下
my-run-demo-app-1pipeline。「推送管道詳細資料」頁面會以圖表呈現推送管道的進度。在本例中,這表示版本已部署至
run-qsdev目標。
在推送管道的視覺化圖表中,按一下第一個目標上的「升級」。
系統會顯示「Promote release」對話方塊。顯示要宣傳的目標詳細資料。
點選「升級」。
系統已將版本加入佇列,準備部署至
run-qsprod。部署完成後,交付管道的視覺化內容會顯示已部署:
在 Google Cloud 控制台中查看結果
在 Google Cloud 控制台中,前往 Cloud Deploy 的「Delivery pipelines」(推送 pipeline) 頁面,查看 my-run-demo-app-1 推送管道。
按一下推送管道的名稱「my-run-demo-app-1」。
管道圖表會顯示應用程式在管道中的進度。

發行內容會列在「推送 pipeline 詳細資料」下方的「發行內容」分頁中。
按一下發行內容名稱
test-release-001。推出版本會顯示在「推出版本」下方。您可以點選推出作業,查看詳細資料,包括部署記錄。

存取 Cloud Run 服務
根據預設,您必須先完成驗證,才能存取新建立的 Cloud Run 服務。請參閱 Cloud Run 的驗證總覽,瞭解如何提供憑證,以及存取服務時需要哪些 Identity and Access Management 設定,才能略過驗證。這不適用於 Cloud Run 工作。
清除所用資源
為了避免系統向您的 Google Cloud 帳戶收取本頁面所用資源的費用,請按照下列步驟操作。
刪除
deploy-qs-devCloud Run 服務或工作:服務
gcloud run services delete deploy-run-service-dev --region=us-central1 --project=PROJECT_ID工作
gcloud run jobs delete deploy-run-job-dev --region=us-central1 --project=PROJECT_ID刪除
deploy-qs-prod服務:服務
gcloud run services delete deploy-run-service-prod --region=us-central1 --project=PROJECT_ID工作
gcloud run jobs delete deploy-run-job-prod --region=us-central1 --project=PROJECT_ID刪除推送管道、目標、版本和推出項目:
gcloud deploy delete --file=clouddeploy.yaml --force --region=us-central1 --project=PROJECT_ID刪除 Cloud Deploy 建立的 Cloud Storage bucket。
一個結尾是
_clouddeploy,另一個是[region].deploy-artifacts.[project].appspot.com。
大功告成,您已經完成本快速入門導覽課程!