使用 Cloud Deploy,您可以部署到配置为代表多个目标的目标,并且您的应用会并行(并发)部署到这些目标。您在流水线中标识为阶段的目标称为多目标,而多目标包含的目标称为子目标。
您可以将并行部署与 Cloud Deploy 支持的任何目标类型搭配使用。
为何要并行部署
例如,您可以使用并行部署将应用部署到多个生产目标。在这种情况下,您无需依次部署到每个目标,因为没有进度(例如,从开发环境到预发布环境再到生产环境)。
这种并行部署可以作为正常交付流水线的一部分:
dev -> staging -> prod [prod1, prod2, prod3, prod4, ...]。
用于并行部署的 Cloud Deploy 资源
并行部署使用以下 Cloud Deploy 专用资源:
多目标
多目标是指使用属性
multiTarget在目标配置 YAML 的顶层进行配置的目标,它不引用运行时集群或服务,而是使用multiTarget.targetIds引用一个或多个其他目标。子目标
子目标是指多目标以
multiTarget.targetIds形式引用的任何目标。控制器发布
控制器发布作业是与多目标对应的发布作业。
如需详细了解控制器发布可以实现哪些功能,请参阅限制。
-
如需详细了解子发布可以执行和不可以执行哪些操作,请参阅限制。
设置并行部署
设置并行部署包括定义一个多目标和所需数量的子目标(最多达到限制)。目标定义与所有目标相同,但以下情况除外:
- 多目标包含
multiTarget属性。 - 子目标不包含
multiTarget属性,但会使用multiTarget.targetIds属性从多目标进行引用。 - 您可以为多个目标平台配置审批,但不能为子目标平台配置审批,因为子目标平台不能包含
requireApproval:true。
多目标和子目标可以包含自定义执行环境配置。如果子目标未指定执行环境,则会继承多目标定义中定义的执行环境或默认执行环境。如需了解详情,请参阅执行环境和并行部署。
配置多重目标
多目标是指在交付流水线中被标识为阶段的单个目标,但指向一个或多个子目标。
多目标配置包含 multiTarget 属性。多目标不能具有 gke 或 run 或 anthosCluster 属性。无论您部署到哪个运行时,多目标的配置都是相同的。
在交付流水线 YAML 或单独的 YAML 文件中,创建基本目标定义,包括 multiTarget:
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: TARGET_NAME
description: TARGET_DESCRIPTION
multiTarget:
targetIds: [ CHILD_TARGET1, CHILD_TARGET2, CHILD_TARGETn ]
在此 YAML 中…
TARGET_NAME 是此多目标的名称,用于交付流水线定义的
stages.targetId属性中。CHILD_TARGET1, CHILD_TARGET2,...CHILD_TARGETn 是此多目标部署到的子目标的名称。每个名称都与子目标定义中的
name属性对应。
如果存在 multiTarget.targetIds 属性,则此目标为多目标。
配置子目标
对于在多目标配置中标识为子目标的每个目标,请将另一个目标配置为子目标:
在交付流水线 YAML 或单独的 YAML 文件中,创建基本目标定义:
GKE
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: CHILD_TARGET1
description: TARGET_DESCRIPTION
gke:
cluster: projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_NAME
在此 YAML 中…
CHILD_TARGET1 是相应子目标的名称。该名称对应于多目标定义的
multiTarget.targetIds属性中的目标列表中的一个成员。gke.cluster属性的值是相应目标所指集群的资源名称,其中包括项目 ID、区域和集群名称。
此目标的配置与标准 GKE 目标相同。使其成为子目标的唯一因素是,多目标中的 multiTarget.targetIds 属性引用了该目标。
Cloud Run
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: CHILD_TARGET1
description: TARGET_DESCRIPTION
run:
location: projects/PROJECT_ID/locations/REGION
在此 YAML 中…
CHILD_TARGET1 是相应子目标的名称。该名称对应于多目标定义的
multiTarget.targetIds属性中的目标列表中的一个成员。run.location属性的值是此目标所指的 Cloud Run 服务的资源名称,包括项目 ID 和区域。
此目标的配置与标准 Cloud Run 目标相同。使其成为子目标的唯一因素是,它被多目标中的 multiTarget.targetIds 属性引用。
GKE 关联集群
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: CHILD_TARGET1
description: TARGET_DESCRIPTION
anthosCluster:
membership: projects/PROJECT_ID/locations/global/memberships/MEMBERSHIP_NAME
在此 YAML 中…
自定义目标
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: CHILD_TARGET1
description: TARGET_DESCRIPTION
customTarget: