本文档介绍了如何配置和使用 Canary 部署策略。
什么是 Canary 部署?
Canary 部署是一种渐进式应用发布方式,它会在已部署的版本和新版本之间拆分流量,先向部分用户发布,然后再全面发布。
支持的目标类型
Cloud Deploy 中的 Canary 部署支持所有目标类型,包括以下类型:
Google Kubernetes Engine 和 GKE Enterprise
Cloud Run(仅限服务,不包括作业)
Canary 也适用于多目标。
为什么要使用 Canary 部署策略?
Canary 部署让您有机会部分发布应用。这样,您就可以在向所有用户交付新版应用之前,确保其可靠性。
如果您要部署到 GKE 或 GKE Enterprise,例如,您会将新版应用部署到数量有限的 Pod。旧版本会继续运行,但会有更多流量发送到新 Pod。
如果您要部署到 Cloud Run,Cloud Run 本身会根据您配置的百分比在旧修订版本和新修订版本之间拆分流量。
Canary 的类型
Cloud Deploy 可让您配置以下类型的 Canary 部署:
自动
借助自动 Canary 部署(适用于服务联网、Gateway API 或 Cloud Run),您可以为 Cloud Deploy 配置一系列百分比,以表示渐进式部署。Cloud Deploy 会代表您执行其他操作,以在旧版本和新版本之间分配流量百分比。
自定义自动化
对于自定义自动化 Canary 版(适用于服务联网、Gateway API 或 Cloud Run),您可以提供以下信息:
- 阶段名称
- 百分比目标
- 要用于阶段的 Skaffold 配置文件
- 是否包含验证作业
- 是否包含预部署作业、后部署作业或两者都包含
不过,您无需提供流量平衡信息;Cloud Deploy 会创建必要的资源(用于服务联网、网关 API 或 Cloud Run)。
自定义
对于自定义 Canary 版本(适用于服务联网、Gateway API 或 Cloud Run),您可以单独配置每个 Canary 阶段,包括以下内容:
- 阶段名称
- 百分比目标
- 要用于阶段的 Skaffold 配置文件
- 是否包含验证作业
- 是否包含预部署作业、后部署作业或两者都包含
此外,对于完全自定义的 Canary 版,您需要提供所有流量平衡配置。
Canary 部署的阶段
为 Canary 部署创建发布时,系统会为每个 Canary 增量创建一个发布阶段,并为 100% 创建一个最终的 stable
阶段。
例如,如果您将 Canary 版配置为以 25%、50% 和 75% 的增量进行发布,则发布将包含以下阶段:
canary-25
canary-50
canary-75
stable
如需详细了解发布阶段、作业和作业运行,请参阅管理发布。
使用并行部署和 Canary 部署策略
您可以使用并行部署来运行 Canary 部署。这意味着,您要逐步部署到的目标可以包含两个或更多子目标。例如,您可以同时逐步部署到不同区域中的集群。
并行 Canary 与单目标 Canary 有何不同
与单目标 Canary 部署一样,如果您要部署到 GKE 目标,则需要在清单中包含 Kubernetes Deployment 配置和 Kubernetes Service 配置。
与单目标 Canary 部署一样,您的交付流水线配置必须在适用阶段的阶段定义中包含
strategy.canary
stanza。此外,您还需要配置多目标,并配置该多目标所引用的子目标。
-
控制器和子级这两种类型的发布都有单独的阶段,用于所有已配置的金丝雀百分比,并且有一个
stable
阶段用于金丝雀 100%。 您无法推进子发布。
您只能推进控制器发布。当您将控制器发布推进到下一阶段时,Cloud Deploy 也会推进子发布。
您无法在控制器发布过程中重试失败的作业。
您只能重试子发布中的作业。
您无法忽略控制器发布中失败的作业。
您只能忽略子发布中失败的作业。
您可以取消控制器发布,但无法取消子发布。
您只能终止子发布下的作业运行,而不能终止控制器发布下的作业运行。
如果并行发布在 Canary 中失败,该怎么办
当子发布失败时,控制器发布可以转换到不同的状态,具体取决于子发布的情况:
如果一项或多项子发布失败,但至少有一项子发布仍处于
IN_PROGRESS
状态,则控制器发布仍处于IN_PROGRESS
状态。如果一项或多项子发布失败,但至少有一项子发布成功,则如果当前阶段之后还有其他阶段,控制器发布将处于
HALTED
状态。如果这是
stable
阶段,则控制器发布为FAILED
。如果控制器发布因子发布失败而处于
HALTED
状态,并且您忽略了子发布中的失败作业,则控制器发布会恢复为IN_PROGRESS
状态。
后续步骤
不妨试试灰度部署快速入门。
了解如何管理 Canary 版推出的生命周期。
继续查看与您的特定目标环境相关的指南: