本文档介绍了如何配置和使用自定义 Canary 部署,以使用 Cloud Deploy 将应用部署到所有目标类型。
自定义 Canary 部署的运作方式
使用自定义 Canary 部署策略进行部署时,Cloud Deploy 不会修改清单,以便于实现所选的流量平衡配置。相反,您需要负责提供应用于目标运行时环境的清单,以用于每个 Canary 阶段。
确保您拥有所需的权限
除了使用 Cloud Deploy 所需的其他 Identity and Access Management 权限之外,您还需要以下权限才能执行可能需要用于灰度发布的其他操作:
clouddeploy.rollouts.advance
clouddeploy.rollouts.ignoreJob
clouddeploy.rollouts.cancel
clouddeploy.rollouts.retryJob
clouddeploy.jobRuns.get
clouddeploy.jobRuns.list
clouddeploy.jobRuns.terminate
如需详细了解哪些可用角色包含这些权限,请参阅 IAM 角色和权限。
准备好您的 skaffold.yaml
skaffold.yaml
文件定义了清单的呈现和部署方式。
对于自定义 Canary 部署,您负责定义与每个 Canary 阶段关联的配置文件,以便实现所选的流量平衡配置。这些配置文件会映射到交付流水线策略配置中的阶段。
以下是自定义 Canary 使用的 skaffold.yaml
配置示例:
apiVersion: skaffold/v4beta7
kind: Config
profiles:
- name: canary-25
manifests:
rawYaml:
- canary-25-resources.yaml
- name: canary-50
manifests:
rawYaml:
- canary-50-resources.yaml
- name: stable
manifests:
rawYaml:
- stable-resources.yaml
配置自定义 Canary
借助自定义 Canary 配置,您可以在交付流水线定义中指定以下内容:
发布阶段名称
在全自动 Canary 版本中,Cloud Deploy 会为您命名阶段(例如
canary-25
、canary-75
、stable
)。不过,借助自定义 Canary,您可以为每个阶段指定任意名称,只要该名称在相应 Canary 阶段的所有阶段中是唯一的,并且符合资源 ID 限制即可。但最终 (100%) 阶段名称必须为stable
。各阶段的目标百分比
分别指定每个阶段的百分比。
要用于阶段的 Skaffold 配置文件
您可以为每个阶段使用单独的 Skaffold 配置文件,也可以使用同一配置文件,或者使用任意组合。每个配置文件都可以使用不同的 Cloud Run 服务定义。您还可以为给定阶段使用多个配置文件。Cloud Deploy 将它们结合在一起。
相应阶段是否存在验证作业
请注意,如果您要启用验证,还需要配置
skaffold.yaml
以进行验证。阶段是否有部署前作业或部署后作业
如果您要启用部署前作业或部署后作业,则需要为这些作业配置
skaffold.yaml
。
自定义 Canary 配置元素
以下 YAML 展示了完全自定义 Canary 部署的各个阶段的配置:
strategy:
canary:
# Custom configuration for each canary phase
customCanaryDeployment:
phaseConfigs:
- phaseId: "PHASE1_NAME"
percentage: PERCENTAGE1
profiles: [ "PROFILE_NAME" ]
verify: true | false
predeploy:
actions: "PREDEPLOY_ACTION"
postdeploy:
actions: "POSTDEPLOY_ACTION"
- …
- phaseId: "stable"
percentage: 100
profiles: [ "LAST_PROFILE_NAME" ]
verify: true|false
predeploy:
actions: "PREDEPLOY_ACTION"
postdeploy:
actions: "POSTDEPLOY_ACTION"
在此 YAML 中
PHASE1_NAME
是阶段的名称。每个阶段名称都必须是唯一的。
[ "PROFILE_NAME" ]
是用于阶段的配置文件的名称。您可以为每个阶段使用同一配置文件,也可以为每个阶段使用不同的配置文件,还可以使用任意组合。此外,您还可以指定多个个人资料。Cloud Deploy 会使用您指定的所有配置文件,以及整个阶段使用的配置文件或清单。
stable
最终阶段必须命名为
stable
。PERCENTAGE1
是第一阶段的部署百分比。每个阶段都必须具有唯一的百分比值,并且该值必须是整数百分比(例如,不能是
10.5
),并且阶段必须按升序排列。verify: true|false
告知 Cloud Deploy 是否为阶段添加验证作业。请注意,为了让每个阶段都使用验证,Skaffold 会使用为相应阶段的渲染和部署指定的同一配置文件进行验证。
PREDEPLOY_ACTION
与您在
skaffold.yaml
中用于定义要在部署之前运行的自定义操作的 ACTION_NAME 相同。POSTDEPLOY_ACTION
与您在
skaffold.yaml
中用于定义部署后要运行的自定义操作的 ACTION_NAME 相同。
最后一个阶段的百分比必须为 100
。阶段的执行顺序与您在此 customCanaryDeployment
stanza 中配置的顺序一致,但如果百分比值不是升序,则用于注册交付流水线的命令会因错误而失败。
请注意,自定义 Canary 的配置不包含 runtimeConfig
stanza。如果您添加了 runtimeConfig
,则会被视为自定义自动化 Canary。
后续步骤
不妨试试灰度部署快速入门。
了解如何管理 Canary 版推出的生命周期。
详细了解并行部署。
详细了解 Cloud Deploy 部署策略。