部署 Cloud Run 服务

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

本文档介绍了如何将应用部署到 Cloud Run 服务。

借助 Google Cloud Deploy,您可以将基于容器的工作负载部署到任何 Cloud Run 服务。部署到 Cloud Run 目标时,支持所有 Google Cloud Deploy 功能。

本文档介绍了在部署到 Cloud Run 时需要完成的三项主要配置:

准备工作

创建目标配置

您可以在交付流水线 YAML 中配置目标,也可以在单独的文件中进行配置。此外,您还可以在同一文件中配置多个目标。

在目标定义中,创建 run 节以确定将在其中创建 Cloud Run 服务的位置。

在目标定义中指定 Cloud Run 服务的语法如下:

run:
 location: projects/[project_name]/locations/[region_name]

此资源标识符使用以下元素:

  • [project_name] 是将在其中创建 Cloud Run 服务的 Google Cloud 项目的名称。

    您需要为每个目标执行此操作。我们建议每项 Cloud Run 服务使用不同的项目。如果您需要同一项目中的多项服务,则需要在 skaffold.yaml 配置文件中使用 Skaffold 配置文件

  • [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

您可以在 Google Cloud Deploy 交付流水线定义中定义此目标,也可以单独定义此目标。无论使用哪种方式,您必须先注册目标,然后才能创建版本以部署 Cloud Run 服务。

创建 Skaffold 配置

以下是 Cloud Run 服务部署example skaffold.yaml 文件:

apiVersion: skaffold/v3alpha1
kind: Config
metadata:
  name: cloud-run-application
manifests:
  rawYaml:
  - service.yaml
deploy:
  cloudrun: {}

在此 skaffold.yaml 文件中...

  • manifests.rawYaml 提供 Cloud Run 服务定义的名称。

    在此示例中,service.yaml 是定义 Skaffold 将部署的 Cloud Run 服务的文件。

  • deploy 节指定您希望如何部署清单,具体而言是项目和位置。“deploy”是必填字段。

    我们建议您将 {} 留空。Google Cloud Deploy 在渲染期间会根据目标定义中的项目和位置填充此字段。

    不过,对于本地开发,您可以在此提供值。但是,无论此处是否提供值,Google 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 Console 从现有服务中复制 service.yaml

您可以使用 Google Cloud 控制台或使用现有服务创建服务,并从该位置复制 service.yaml

如需使用 Google Cloud CLI 获取 service.yaml,请执行以下操作:

gcloud run services describe [service_name] --format=export

如需从 Google Cloud Console 获取 service.yaml,请执行以下操作:

  1. 在 Google Cloud Console 中,转到 Cloud Run 服务页面。

  2. 选择您要使用定义的现有服务。

您也可以创建一个新帐号,然后选择该帐号。选择服务后,系统会显示“服务详情”页面:

Google Cloud 控制台的“服务详情”页面,显示 YAML 标签页

  1. 选择 YAML 标签页。

  2. 点击修改,将 YAML 的内容复制到文件系统中的新文件 service.yaml 中,以供 Skaffold 在您创建版本时使用。

综合应用

现在您已经有了 Cloud Run 服务定义、skaffold.yaml 配置和 Google Cloud Deploy 目标定义,并且已将目标注册为 Google Cloud Deploy 资源,接下来您可以调用交付流水线以创建版本,并逐步完成流水线中定义的目标进度。

服务在各个修订版本中的行为

重新部署服务时,新修订版本将基于新部署的 service.yaml。系统不会保留上一个修订版本的任何内容,除非新部署的 YAML 中的相同。例如,如果上一个修订版本中有不在新 YAML 中的配置设置或标签,则服务的新修订版本中不存在这些设置或标签。

在多个项目中部署 Cloud Run 服务

如果您需要部署位于不同项目中的服务,您的执行服务帐号需要具有访问定义了这些服务的项目的权限。

如需了解详情,请参阅 Google Cloud Deploy 执行服务帐号Identity and Access Management 角色和权限

后续步骤