使用 Cloud Deploy 将应用部署到 Cloud Run
本页面介绍如何使用 Cloud Deploy 将名为 hello 的示例应用映像交付给两个 Cloud Run 服务、两个 Cloud Run 作业或两个 Cloud Run 工作器池的序列。(Cloud Run 工作器池处于
预览版阶段)。
在本快速入门中,您将执行以下操作:
准备工作
- 登录您的 Google Cloud 账号。如果您是新手 Google Cloud, 请创建一个账号来评估我们的产品在 实际场景中的表现。新客户还可获享 $300 赠金,用于 运行、测试和部署工作负载。
-
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.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
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 theserviceusage.services.enablepermission. Learn how to grant roles.-
安装 Google Cloud CLI。
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init -
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.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
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 theserviceusage.services.enablepermission. Learn how to grant roles.-
安装 Google Cloud CLI。
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
所需角色
如需获得创建 Cloud Deploy 交付流水线和版本所需的权限,请让管理员向您授予项目的 Cloud Deploy Job Runner (roles/clouddeploy.jobrunner) IAM 角色。
为确保 Cloud Deploy 服务帐号拥有运行 Cloud Deploy 操作和部署到 Cloud Run 所需的 权限, 请让管理员向您的项目的 Cloud Deploy 服务帐号授予以下 IAM 角色:
如果未能向正确的正文授予这些角色,可能会导致权限错误。-
Cloud Run Developer (
roles/run.developer) -
IAM Service Account User (
roles/iam.serviceAccountUser)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
准备 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: {}工作器池(预览版)
apiVersion: skaffold/v4beta7 kind: Config metadata: name: deploy-run-quickstart profiles: - name: dev manifests: rawYaml: - run-worker-pool-dev.yaml - name: prod manifests: rawYaml: - run-worker-pool-prod.yaml deploy: cloudrun: {}此文件是一个最小 Skaffold 配置,用于标识 Cloud Run 服务、作业或工作器池。如需详细了解此文件,请参阅
skaffold.yaml参考文档。
准备 Cloud Run 服务、作业或工作器池
在本快速入门中,您将在同一项目中创建两个不同的 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 作业。顾名思义
deploy-run-job-prod,这是您的prod作业,对应 于交付流水线进展中的第二个目标。
这些文件是 Cloud Run 作业定义,用于部署应用。要部署的容器映像在此处设置为
占位符 my-app-image,在您创建版本时,该占位符将替换为特定映像
。
工作器池(预览版)
创建名为
run-worker-pool-dev.yaml且包含以下内容的文件:apiVersion: run.googleapis.com/v1 kind: WorkerPool metadata: name: deploy-run-worker-pool-dev annotations: run.googleapis.com/launch-stage: BETA spec: template: spec: containers: - image: my-app-image此文件定义了 Cloud Run 工作器池。顾名思义,
deploy-run-worker-pool-dev是您的dev工作器池,并 对应于交付流水线进展中的第一个目标。创建名为
run-worker-pool-prod.yaml且包含以下内容的文件:apiVersion: run.googleapis.com/v1 kind: WorkerPool metadata: name: deploy-run-worker-pool-prod annotations: run.googleapis.com/launch-stage: BETA spec: template: spec: containers: - image: my-app-image此文件定义了另一个 Cloud Run 工作器池。顾名思义,这是您的
prod工作器 池,对应于交付流水线 进展中的第二个目标。deploy-run-worker-pool-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 交付流水线 页面,以查看可用交付 流水线的列表。
此时将显示您刚刚创建的交付流水线,并且目标 列会列出了两个目标。

创建版本
版本是表示要部署的更改的中央 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
工作器池(预览版)
gcloud deploy releases create test-release-001 \
--project=PROJECT_ID \
--region=us-central1 \
--delivery-pipeline=my-run-demo-app-1 \
--skaffold-version=2.17.0 \
--images=my-app-image=us-docker.pkg.dev/cloudrun/container/hello@sha256:95ade4b17adcd07623b0a0c68359e344fe54e65d0cb01b989e24c39f2fcd296a
请注意
--images=标志,您
可以使用该标志将
服务、作业或工作器池定义中的占位符 (my-app-image) 替换为
特定的、
符合 SHA 规范的映像。Google 建议您以这种方式对服务和作业定义进行模板化,并在创建版本时使用符合 SHA 规范的映像名称。
--skaffold-version= 标志
用于指定要用于部署的 Skaffold 版本。如需支持 Cloud Run
工作器池,您必须使用 Skaffold 版本 2.17 或更高版本。
与所有版本一样(除非它们包含 --disable-initial-rollout),
Cloud Deploy 也会自动创建
发布资源。应用会自动部署到进展中的第一个目标。
提升版本
在交付流水线页面中,点击
my-run-demo-app-1流水线。交付流水线详情页面显示交付流水线进展的图形表示。在本示例中,它显示版本已部署到
run-qsdev目标。
在交付流水线直观显示中的第一个目标上,点击提升 。
此时将显示提升版本对话框。它会显示您要提升到的目标的详细信息。
点击提升。
该版本现已加入队列以部署到
run-qsprod。部署完成后,交付流水线可视化图表会将其显示为已部署:
在 Google Cloud 控制台中查看结果
在 Google Cloud 控制台中,导航到 Cloud Deploy 交付流水线 页面,以查看您的 my-run-demo-app-1 交付流水线。
点击交付流水线的名称“my-run-demo-app-1”。
流水线直观显示将显示应用在流水线中进展。

您的版本列在版本 标签页中交付流水线详细信息 下。
点击版本名称
test-release-001。您的发布会显示在发布下。您可以点击发布以查看其详细信息,包括部署日志。

访问 Cloud Run 服务
默认情况下,您必须经过身份验证才能访问新创建的 Cloud Run 服务或工作器池。如需了解如何 提供凭据,以及了解在无需身份验证的情况下访问服务所需的 Identity and Access Management 配置,请参阅 Cloud Run 身份验证概览。这不适用于 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工作器池(预览版)
gcloud beta run worker-pools delete deploy-run-worker-pool-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 beta run worker-pools delete deploy-run-worker-pool-prod --region=us-central1 --project=PROJECT_ID删除交付流水线、目标、版本和发布:
gcloud deploy delete --file=clouddeploy.yaml --force --region=us-central1 --project=PROJECT_ID删除 Cloud Deploy 创建的 Cloud Storage 存储分区。
一个以
_clouddeploy结尾,另一个是[region].deploy-artifacts.[project].appspot.com。
恭喜,您已经完成快速入门!