本文档介绍了如何部署您的应用,包括 Cloud Run 服务和 Cloud Run 作业。
通过 Cloud Deploy,您可以将基于容器的工作负载部署到 Cloud Run 服务或 job。所有 Cloud Deploy 功能 部署到 Cloud Run 目标时 Cloud Run 服务,但不支持 Canary 部署: Cloud Run 作业。
本文档介绍了您在创建 API 时需要完成的 部署到 Cloud Run:
- 创建目标配置
- 创建 Skaffold 配置
- 创建 Cloud Run 服务定义或 作业定义
限制
您只能为每个目标部署一项 Cloud Run 服务或作业。
您无法运行 Canary 部署 Cloud Run 作业
但是,Cloud Run 服务可以使用 Canary 部署。
准备工作
确保您使用的是 gcloud CLI
401.0.0
或更高版本。
创建目标配置
目标可以在交付流水线 YAML 中配置,也可以在 一个单独的文件。此外,您还可以在同一个文件中配置多个目标。
在目标定义中,创建一个 run
节来标识位置
系统将创建 Cloud Run 服务
用于指定 Cloud Run 服务或作业的语法: target 定义如下:
run:
location: projects/[project_name]/locations/[region_name]
此资源标识符使用以下元素:
[
project_name
] 是您要将 系统将创建 Cloud Run 服务或作业。您需要为每个目标执行此操作。建议为每个项目分别使用不同的项目 Cloud Run 服务或作业。如果您需要多项服务 在同一个项目中,您需要使用 Skaffold 配置文件 位于
skaffold.yaml
配置文件中。[
region_name
] 是将在其中创建服务或作业的区域。 您的服务或作业可以位于 Cloud Run 支持的区域。
以下是目标配置示例,定义了 要创建的 Cloud Run 服务或作业:
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: dev
description: development service
run:
location: projects/my-app/locations/us-central1
您可以在 Cloud Deploy 交付流水线中定义此目标 定义或单独进行定义无论采用哪种方式 注册目标 然后再创建版本以部署 Cloud Run 服务 或作业。
创建 Skaffold 配置
下面是一个示例 skaffold.yaml
文件,
Cloud Run 部署:
apiVersion: skaffold/v4beta7
kind: Config
metadata:
name: cloud-run-application
manifests:
rawYaml:
- service.yaml
deploy:
cloudrun: {}
在此 skaffold.yaml
文件中...
manifests.rawYaml
提供 Cloud Run 的名称, 服务定义。在此示例中,
service.yaml
是定义 Skaffold 将部署的 Cloud Run 服务。此文件名 可以是任何内容,但按照惯例,服务应为service.yaml
;job.yaml
表示作业。deploy
节指定您希望如何部署清单, 具体而言,项目和位置“deploy
”为必填字段。我们建议您将
{}
留空。Cloud Deploy 填充 根据项目和来自目标平台的位置,在渲染过程中 定义。不过,对于本地开发,您可以在此处提供值。不过, Cloud Deploy 始终使用目标中的项目和位置 定义,无论此处是否提供了值。
创建 Cloud Run 服务定义
如需创建 Cloud Run 服务定义,您可以创建 也可以从现有服务中复制一个文件本专精课程 部分。
选项 1:创建新的 Cloud Run service.yaml
service.yaml 定义您的 Cloud Run 服务。当您 创建版本后,Skaffold 会使用此定义来部署您的服务。
下面是一个简单示例:
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: [SERVICE_NAME]
spec:
template:
spec:
containers:
- image: [IMAGE_PATH]
其中:
[SERVICE_NAME]
是此 Cloud Run 服务的名称。[IMAGE_PATH]
指向您用于部署的一个或多个容器映像 。
方法 2:使用 Google Cloud 控制台从现有服务中复制 service.yaml
您可以使用 Google Cloud 控制台创建服务,也可以使用现有服务。
然后从该文件夹中复制 service.yaml
。
如需使用 Google Cloud CLI 获取 service.yaml
,请执行以下操作:
gcloud run services describe [service_name] --format=export
如需从 Google Cloud 控制台获取 service.yaml
,请执行以下操作:
在 Google Cloud 控制台中,前往 Cloud Run 服务 页面。
选择要使用其定义的现有服务。
或者,您也可以新建一个,然后选择该转化操作。时间 选择服务后,系统会显示“Service Details”(服务详情)页面:
选择 YAML 标签页。
点击 Edit,然后将 YAML 的内容复制到名为
service.yaml
,这样当您调用时,Skaffold 可以使用它。 创建版本。
创建 Cloud Run 作业定义
如需部署 Cloud Run 作业定义,您可以创建 也可以从现有作业中复制一个本专精课程 部分。
请注意,作业不一定在部署完成后 Cloud Deploy。它不同于运行中 管理它们。作业的调用方式取决于作业 本身。
选项 1:创建新的 Cloud Run job.yaml
job.yaml 定义了 Cloud Run 作业。当您创建版本时,Skaffold 会将此 定义以部署作业。
下面是一个简单示例:
apiVersion: run.googleapis.com/v1
kind: Job
metadata:
name: [JOB_NAME]
spec:
template:
spec:
containers:
- image: [IMAGE_PATH]
其中:
[JOB_NAME]
是此 Cloud Run 作业的名称。[IMAGE_PATH]
指向您要为此作业部署的容器映像。
方法 2:使用 Google Cloud 控制台从现有作业中复制 job.yaml
您可以使用 Google Cloud 控制台创建作业,也可以使用现有作业,
然后从该文件夹中复制 job.yaml
。
如需使用 Google Cloud CLI 获取 job.yaml
,请执行以下操作:
gcloud run jobs describe [job_name] --format=export
如需从 Google Cloud 控制台获取 job.yaml
,请执行以下操作:
在 Google Cloud 控制台中,前往 Cloud Run 作业 页面。
选择要使用其定义的现有作业。
或者,您也可以新建一个,然后选择该转化操作。时间 选择作业后,系统会显示“作业详情”页面:
选择 YAML 标签页。
点击 Edit,然后将 YAML 的内容复制到名为
job.yaml
,这样当您调用时,Skaffold 可以使用它。 创建版本。
综合应用
现在,您已经有了 Cloud Run 服务或作业定义,
skaffold.yaml
配置,以及您的 Cloud Deploy 目标
定义,
注册了您的目标
作为 Cloud Deploy 资源,您现在可以
调用交付流水线
创建一个版本,并按照所定义的目标进展
流水线中。
快速入门 使用 Cloud Deploy 将应用部署到 Cloud Run 实际操作次数。
服务跨修订版本的行为
重新部署服务时,新修订版本
已部署“service.yaml
”。系统不会保留先前修订版本的任何内容
除非新部署的 YAML 中与之相同例如,如果
先前修订版本中有些配置设置或标签
但在新 YAML 中,这些设置或标签不会出现在新版本中。
触发 Cloud Run 作业
部署作业后,您可以按照相关说明触发作业 “Cloud Run 文档”中的说明。
在多个项目中部署 Cloud Run 服务和作业
如果您需要部署不同项目中的服务或作业, 执行服务账号的需求 访问定义了这些服务或作业的项目的权限。
请参阅 Cloud Deploy 执行服务账号 以及 Identity and Access Management 角色和权限 。
后续步骤
详细了解如何配置 Cloud Deploy 目标
了解 Cloud Deploy 执行环境。
详细了解 Cloud Run