本文档介绍如何将应用部署到 Cloud Run 服务。
借助 Google Cloud Deploy,您可以将基于容器的工作负载部署到任何 Cloud Run 服务。部署到 Cloud Run 目标时,支持所有 Google Cloud Deploy 功能。
本文档介绍了在部署到 Cloud Run 时需要完成的三项主要配置:
准备工作
确保您使用的是 gcloud CLI 版本
401.0.0
或更高版本。
创建目标配置
目标可以在交付流水线 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 服务部署的 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 控制台从现有服务中复制 service.yaml
您可以使用 Google Cloud Console 或使用现有服务创建服务,并从该位置复制 service.yaml
。
如需使用 Google Cloud CLI 获取 service.yaml
,请执行以下操作:
gcloud run services describe [service_name] --format=export
如需从 Google Cloud 控制台获取 service.yaml
,请执行以下操作:
在 Google Cloud 控制台中,转到 Cloud Run 服务页面。
选择要使用其定义的现有服务。
或者,您也可以创建一个新帐号,然后选择该帐号。选择服务后,系统会显示“服务详情”页面:
选择 YAML 标签页。
点击修改,将 YAML 的内容复制到文件系统中的名为
service.yaml
的新文件中,以便在您创建版本时使用 Skaffold。
综合应用
现在您已经有了 Cloud Run 服务定义、skaffold.yaml
配置和 Google Cloud Deploy 目标定义,并且已将目标注册为 Google Cloud Deploy 资源,接下来可以调用交付流水线以创建发布,并按照流水线定义的目标进度使进度完成。
使用 Google Cloud Deploy 将应用部署到 Cloud Run 快速入门中介绍了所有操作。
各修订版本的服务行为
重新部署服务时,新修订版本基于新部署的 service.yaml
。系统不会保留上一个修订版本,除非新部署的 YAML 中的相同。例如,如果上一修订版本中存在配置设置或标签,而新 YAML 中没有配置设置或标签,则服务的新修订版本中不会包含这些设置或标签。
在多个项目中部署 Cloud Run 服务
如果您需要部署位于不同项目中的服务,则您的执行服务帐号需要具有访问其中定义了这些服务的项目的权限。
如需了解详情,请参阅 Google Cloud Deploy 执行服务帐号以及 Identity and Access Management 角色和权限。