同时部署到多个目标

使用 Cloud Deploy,你可以部署到配置为 代表多个目标,并且您的应用会在 并行执行。您在销售漏斗中确定的阶段目标是 称为多目标,而这些目标 多定位条件包含的内容称为“子定位条件”。

您可以将并行部署与 Cloud Deploy 提供支持,包括 Google Kubernetes Engine Cloud Run 和 GKE Enterprise

为什么要并行部署

例如,您可以使用并行部署来将应用部署到 多个生产目标。在这种情况下,您不需要将应用部署到 目标,因为没有进展(例如,从 dev 到 dev), 从预演到生产)。

这种并行部署可以作为正常交付流水线的一部分 进度:
dev -> staging -> prod [prod1, prod2, prod3, prod4, ...].

用于并行部署的 Cloud Deploy 资源

并行部署使用以下 Cloud Deploy 专用 资源:

  • 多目标

    多目标是指使用属性 multiTarget 配置的目标。 在目标配置 YAML 的顶层添加以下代码,而不是引用 运行时集群或服务,它会引用一个或多个其他目标,使用 multiTarget.targetIds.

  • 子目标

    子目标是指多目标引用的任何目标 multiTarget.targetIds.子级还必须引用支持的目标类型 (Google Kubernetes Engine、GKE Enterprise 或 Cloud Run)。

  • 控制器发布

    控制器发布是指与多目标对应的发布。

    如需详细了解控制器发布可执行的操作,请参阅限制

  • 子发布

    请参阅限制,详细了解关于子级发布哪些内容可以执行及无法执行的相关操作。

设置并行部署

设置并行部署包括定义一个多目标和 所需子目标的数量(不超过上限)。目标 除以下几点外,所有目标的定义都相同:

  • 多目标包含 multiTarget 属性。
  • 子目标不包含 multiTarget 属性,但会被引用 使用 multiTarget.targetIds 属性从多目标中提取数据。
  • 您可以将多目标配置为审批,但不能配置子目标。 该字段不能包含 requireApproval:true

多目标和子目标可以包含自定义 执行环境 配置。如果子目标未指定执行环境,它将继承 多目标定义中定义的那个路径或默认值。请参阅 执行环境和并行部署 了解详情。

配置多目标

多目标是指在投放过程中被视为一个阶段的单个目标 但指向一个或多个子目标。

多目标配置包含 multiTarget 属性。答 多目标不能具有 gkerunanthosCluster 属性。 无论您使用哪个运行时,多目标的配置都是相同的 部署到什么位置。

在交付流水线 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 属性的存在会使此目标 多目标。

配置子目标

对于在您的 Google Ads 账号中识别为儿童的每个目标 多目标配置,请将另一个目标配置为子目标:

在您的交付流水线 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 Enterprise

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 中...

此目标的配置与标准 GKE Enterprise 相同 目标。唯一能够使其成为子目标的因素是它引用了 由多目标中的 multiTarget.targetIds 属性决定。

将部署参数传递给目标

您可以通过在 清单和值。这些值可以是 单独应用于 单独的清单。

例如,您可能希望每个子级具有不同数量的副本 目标。为此,您需要在提交内容中添加相应参数和值 流水线的进度,以及 每个“参数-值”对都要匹配。

详细了解部署参数

创建版本

在配置了多目标和子目标的情况下, 创建交付流水线和目标资源, 然后照常创建版本

交付流水线的生命周期与 Cloud Deploy 流水线和目标 Cloud Deploy 会创建一个控制器 多目标发布,以及用于部署应用的子发布 每个子定位条件。

响应 Cloud Deploy 操作的 Pub/Sub 消息 控制器发布和子发布之间的区别。

限制

  • 一个多目标最多只能有 50 个子目标。

  • 单个多目标的所有子目标必须具有相同的目标运行时 (例如,所有 GKE 或所有 GKE Enterprise)。

  • 在交付流水线中,一个子目标只能有一个父目标 多目标。

  • 多目标不能是无子项,也不能引用自身或其他目标 作为子目标。

  • 您不能在一个交付流水线中多次使用一个子目标, 但您可以在其他流水线中重复使用它们

  • 默认池具有 而专用池则没有并发限制

    部署到多目标时,所有子发布会在同一处部署 最长不超过 Cloud Build 并发限制。如果您的子目标数量超过该限制, 一些目标的部署作业只有在其他目标完成后才能运行, 这表示 Cloud Deploy 不会部署到 在本示例中为同一时间

    此外,如果目标包含验证作业, 在验证作业开始前, 应用已部署到所有子目标。

    如果您需要能够同时部署到比限制更多的目标 Cloud Build 文档中指定的 API, 您有两个选择:

执行环境和并行部署

每个目标都可以配置为使用非默认执行环境。

  • 如果多目标采用非默认执行环境,则所有子目标 则从 多目标

  • 如果多目标使用默认执行环境,则任何子目标 使用非默认执行环境的 非默认属性。

这些规则可让您更轻松地将执行环境传播到子目标 因此您不必定义或更改执行 同时仍允许您自定义 执行环境。

请参阅使用 Google Cloud Deploy 执行环境 详细了解 Cloud Deploy 中的执行环境。

回滚并行部署

如果您需要从多个并行目标回滚部署, 回滚多目标,如 回滚目标

并行部署的审批

与任何目标一样,您可以将并行部署配置为 审批。 但是,使用并行部署时,您只能在 多目标。批准或拒绝会同时影响所有子目标。

在 Google Cloud 控制台中查看并行部署

您可以查看多目标、子目标、控制器的详细信息 Google Cloud 控制台中的子发布和子发布。

在查看给定交付流水线的目标列表时,在“交付”部分 “Pipeline Details”(流水线详细信息),系统会列出多目标,但不会列出子目标。 不过,在查看版本详情时,您可以看到控制器的发布和 子发布。您还可以在 “交付流水线”详情页面上的发布标签页。

版本检查器中,您可以查看和比较 呈现清单。

将并行部署与部署策略搭配使用

使用 Google Cloud Armor Canary 部署策略。请参阅 将并行部署与 Canary 部署策略搭配使用

后续步骤