更新时间:2023-07-03 GMT+08:00

蓝绿升级

Kubernetes发布提供了蓝绿升级策略,支持购买了ASM的用户对集群中的Deployment进行蓝绿升级。

  • 在Kubernetes中,Service可以通过LabelSelector与多个版本的Deployment实例进行关联。
  • 通过VirtualService可以进一步控制流量与特定版本Deployment实例之间的路由策略。
  • 蓝绿发布开始,Kubernetes发布会基于当前的Deployment实例(绿集群)创建一个新版本的Deployment实例(蓝集群)。蓝集群会默认继承绿集群的配置,用户可以在引流之前,在CCE控制台更新配置。
  • 等待蓝集群创建完成后通过更新ASM的DestinationRule资源对象,生成路由表信息。
  • 到了引流时间时,自动将用户流量从绿集群切换到蓝集群。
  • 用户完成验证后,单击完成发布,将原有的绿集群移除,结束升级任务。

前提条件

  • 在CCE完成上线,创建好Service和Deployment。
  • 在ASM创建好Service对应的VirtualService和DestinationRule。

操作步骤

  1. 创建流水线并配置好镜像构建后,在流水线上添加“Kubernetes 发布”任务,填写相关参数,参数说明如表1所示。

    表1 参数说明

    参数项

    说明

    名称

    升级的名称,默认为“Kubernetes发布”。

    区域

    选择要部署的区域。

    CCE集群

    选择CCE云容器引擎中申请的K8s集群。

    命名空间

    选择CCE云容器引擎中K8s集群的命名空间。

    是否使用IAM提权

    当前子用户无操作权限执行接口时,可通过IAM提权获取到父用户的临时AK/SK去执行CCE接口。

    部署策略

    部署策略包括滚动升级和蓝绿升级(本节选择“蓝绿”)。

    • 滚动:对无状态工作负载进行滚动发布。
    • 蓝绿:基于ASM的蓝绿发布。

    服务

    本次升级的服务。

    VirtualService

    选择目标VirtualService,在“ASM服务 > 网格配置 > istio资源管理”中,筛选目标命名空间及istio资源。

    DestinationRule

    选择目标DestinationRule,在“ASM服务 > 网格配置 > istio资源管理”中,筛选目标命名空间及istio资源。

    镜像地址

    本次升级的镜像地址。支持输入提前准备好的镜像地址作为目标镜像,如:swr.cn-north-1.myhuaweicloud.com/demo/springboot-helloworld:v1.1;也可通过“${}”引用流水线参数,如:swr.cn-north-1.myhuaweicloud.com/demo/springboot-helloworld:${version}。

    自定义灰度版本号

    选择是否开启自定义灰度版本号,规定version为关键字在label中标记版本号,用于区分正式版本和灰度版本,并与DestinationRule中subsets对象的name保持一致,作为灰度引流的标识。

    升级灰度负载超时时间(分钟)

    升级灰度负载的超时时间(分钟),若超过此时间,灰度负载仍未创建成功,则本次升级失败。

    切流等待时间(分钟)

    切流的等待时间(分钟),等待此时间之后,将用户流量全部切换到灰度负载。

  2. 配置完成,运行流水线,单击任务卡片,在弹出的侧滑框中选择“任务结果”,可在“发布单”页面中查看详细升级过程。

    页面展示本次升级的工单号、触发人、开始时间、结束时间、发布状态等基础信息,以及升级的基本信息、发布详情和发布日志等信息。

    • 如果需要结束本次升级,请单击“完成发布”,下线旧负载,结束本次升级。
    • 如果需要回滚,请单击“回滚”,可将流量切换到旧负载并下线新负载,页面将跳转到“回滚单”,回滚单展示内容与发布单类似。
    • 单击“发布状态”,可以手动刷新发布状态。

    基本信息

    展示本次升级的旧负载和新负载名称、负载类型、负载的命名空间、升级的版本号、升级的镜像、升级负载的超时时间和切流等待时间。

    发布详情

    发布详情展示本次升级的旧负载和新负载的信息,包括负载的副本数、负载对应基本信息以及关键事件信息。

    Online图标表示当前用户流量所在的负载,用户可以单击卡片查看负载对应Pod信息。

    • 基本信息
      • 实例名称: Pod的名称。
      • 状态 :Pod的运行状态。
      • Pod IP :Pod的IP。
      • Host IP :Pod所在节点的IP。
      • 创建时间 :实例创建的时间。
    • 关键事件

      查看Pod的关键事件信息,包括K8s组件名、事件类型、K8s事件、首次发生时间、最近发生时间。可用于辅助Pod问题定位。

    发布日志

    切换到“发布日志”页签,可查看发布的详细日志信息。