文档首页/ 云容器引擎 CCE/ 最佳实践/ 发布/ 使用ASM实现灰度发布和蓝绿发布
更新时间:2024-12-23 GMT+08:00
分享

使用ASM实现灰度发布和蓝绿发布

应用服务网格(Application Service Mesh,简称ASM)是基于开源Istio推出的服务网格平台,它深度、无缝对接了企业级Kubernetes集群服务云容器引擎(CCE),在易用性、可靠性、可视化等方面进行了一系列增强,可为客户提供开箱即用的上手体验。

为模拟实际业务场景,以服务网格的经典案例Bookinfo应用为例,介绍灰度发布和蓝绿发布的完整流程。

Bookinfo应用分析

Bookinfo是一个模仿在线书店的应用,页面上会显示一本书籍的描述,书籍的细节(如页数),以及关于书籍的一些评论。

Bookinfo应用由四个单独的服务构成,几个服务是由不同的语言编写的。这些服务对应用服务网格ASM并无依赖,但是构成了一个有代表性的服务网格的例子,即由多个服务、多个语言构成,且reviews服务具有多个版本。这四个服务的说明如下:

  • productpage:会调用details和reviews两个服务,用来生成页面。
  • details:包含了书籍的信息。
  • reviews:包含了书籍相关的评论,同时会调用ratings服务。
  • ratings:包含了由书籍评价组成的评级信息。

其中,reviews服务有3个版本:

  • v1(1.5.1)版本会调用ratings服务,并使用1到5个黑色星形图标来显示评分信息。
  • v2(1.5.0)版本不会调用ratings服务。
  • v3(1.5.2)版本会调用ratings服务,并使用1到5个红色星形图标来显示评分信息。

为了直观的展示灰度版本之间流量切换情况,本教程以reviews服务的v1版本(黑星形)、v3版本(红星形)为例进行说明。

图1 Bookinfo应用的端到端架构

在ASM中运行Bookinfo应用,无需对应用自身做出任何改变,只需简单的在ASM环境中对服务进行配置和运行,即把Envoy Sidecar注入到每个服务之中。最终的部署结果如图2所示。

图2 Envoy Sidecar注入之后的Bookinfo应用

所有的服务都和Envoy Sidecar集成在一起,被集成服务的所有出入流量都被Sidecar所劫持,这样就可以利用ASM为应用提供服务路由、遥测数据收集以及策略实施等功能。

准备工作

  • 创建一个CCE集群。要求节点规格至少为4核8GB,此规格为部署Bookinfo应用所需的最小资源。
  • 创建一个公网类型的弹性负载均衡实例。该实例作为服务网格对外访问入口,被服务网格管理的应用流量,均从此实例进入并分发到后端服务。

    弹性负载均衡实例必须与CCE集群属于同一VPC和子网。

步骤1:使能服务网格

使能服务网格是指为集群开启应用服务网格功能,开启后即可实现灰度发布、流量管理、熔断、监控、拓扑、调用链等丰富的服务治理能力。

  1. 登录应用服务网格ASM控制台。
  2. “总览”页面,单击“购买网格”
  3. 设置如下参数,其余参数均采用默认值。

    • 网格类型

      此处以专有网格为例进行说明。

    • 集群

      选择准备工作中创建的集群。

    • 可用区&节点规格

      为确保Istio控制面运行稳定,推荐您使用8核16GB或以上规格控制面节点。

  4. 设置完成后,单击“下一步”。确认订单无误后,单击“提交”

    启用时间预计需要5分钟,您可以单击请求提交页面的“返回Istio管理”“前往CCE集群管理”查看网格运行状态。

步骤2:一键创建Bookinfo应用

为集群开启应用服务网格功能后,可以通过“一键体验”创建一个Bookinfo应用Demo,具体操作如下:

  1. 登录应用服务网格ASM控制台。
  2. 选择左侧导航中的“服务列表”,单击“一键体验”

    图3 一键体验应用

  3. “选择集群”中设置Bookinfo应用所在的集群,在“负载均衡”中选择与所选集群处于同一VPC和子网的负载均衡实例,单击“立即体验”

    图4 选择集群和负载均衡

  4. 等待Bookinfo应用创建完成。创建完成后状态栏将显示为“运行中”,Bookinfo应用包含productpage、details、reviews、ratings四个服务,如图5

    图5 服务列表

步骤3:实现灰度发布

本步骤将为Bookinfo应用的“reviews”服务添加新的灰度版本,并配置相应的灰度策略,将原有生产环境的默认版本的流量引流一部分到新版本中。

下面将以为“reviews”服务添加一个v3新版本,且v3新版本接收Bookinfo应用的20%流量为例进行配置。

部署灰度版本

  1. 在左侧导航中选择“灰度发布”,在金丝雀发布下,单击“创建”
  2. 配置灰度版本发布基本信息,单击“创建”

    • 灰度发布服务:单击“选择服务”,选择reviews,单击“确定”
    • 部署集群:选择网格所在集群。
    • 发布任务名称:用户自定义,可直接采用默认值。此处设置为reviews-v3。
    • 版本号:配置为v3。
    • 版本描述:可不填写。

  3. 部署灰度版本。

    • 实例数量:使用默认。
    • 实例配置:镜像版本选择1.5.2,其他参数保持默认。

  4. 单击“部署灰度版本”,待版本启动进度为100%,表明灰度版本部署成功。

    图6 查看灰度版本状态

配置灰度策略

为灰度版本设置灰度策略,灰度版本会根据配置的流量配比引流老版本中的部分或全部流量。

  1. 灰度版本部署成功后,单击“配置灰度策略”
  2. 设置灰度策略。

    策略类型分为“基于流量比例”“基于请求内容”,通过页签选择确定。

    • 基于流量比例:根据流量比例配置规则,将从原版本中切分指定比例的流量到灰度版本。例如80%的流量走原版本,20%的流量走灰度版本。
    • 基于请求内容:根据请求内容配置规则,只有请求内容中满足特定条件的流量会切分到灰度版本上。例如只有在Windows操作系统上的用户可以访问灰度版本。

    “基于流量比例”为例,且v3版本流量配比为20%。更多策略内容请参见为服务添加灰度版本

    图7 灰度策略

  3. 单击“策略下发”

    灰度策略的生效需要几秒的时间,您需要在“监测灰度运行状态”页面开通免费体验APM,或者购买APM套餐包,否则无法观测到原版本和灰度版本的流量监控数据。

    图8 开通免费体验APM

监测灰度运行状态

  1. “服务列表”页面,单击productpage服务中的“访问地址”。不断刷新页面,页面在v1和v3版本之间来回切换。

    图9 v1版本页面
    图10 v3版本页面

  2. 您也可以在一台已连接公网的机器上执行如下命令,持续访问productpage服务。

    while true;do wget -q -O- http://ip:port/productpage; done

    返回控制台的“监测灰度运行状态”页面查看v1和v3版本的实时流量监控情况。

    图11 流量监控详情

  3. 在“流量监控”页面,您可以查看Bookinfo应用各微服务之间的实时拓扑。ASM提供的流量监控功能,可监控微服务之间的拓扑、会话请求调用链、各环节耗时和RPS、RT等性能状态。

    图12 流量监控拓扑

    从拓扑图可以看出,reviews-v1和reviews-v3服务的调用次数分别为706和167,比例大致接近4:1,符合设定的流量比例策略。成功实现了灰度发布。

灰度版本切换

确认v3版本能够承接v1的所有流量后,即可将v1流量全部切换到v3。

  1. “灰度发布”页面,单击灰度任务“reviews-v3”。
  2. 单击v3版本后的“接管所有流量”

    图13 接管所有流量

  3. 单击“确定”

    刷新页面,查看流量切换情况,数据每隔5秒会刷新一次。
    图14 v3接收全部流量

    在Bookinfo应用页面,不断刷新页面,页面仅显示v3版本信息,即星形图标全部为红色。

    图15 v3版本页面

将原版本下线

v3承接v1版本所有流量后,即可删除v1版本,释放v1版本的资源。

  1. “灰度发布”页面,单击灰度任务“reviews-v3”。
  2. “监测灰度运行状态”页面中,当v3版本中的流量占比为100%时,表明v3已承接v1所有流量。单击v1版本后的“版本下线”
  3. 确认无误后,输入“DELETE”,单击“确定”

    下线服务版本,会将包含的工作负载和Istio相关配置资源全部删除。

步骤4:实现蓝绿发布

本步骤将为Bookinfo应用的“reviews”服务添加新的版本,将原有生产环境的默认版本的流量切换到新版本中。

部署新版本

  1. 在左侧导航中选择“灰度发布”,在蓝绿发布下,单击“创建”
  2. 配置基本信息,单击“创建”

    • 蓝绿发布服务:单击“选择服务”,选择reviews,单击“确定”
    • 部署集群:选择网格所在集群。
    • 发布任务名称:用户自定义,可直接采用默认值。此处设置为reviews-v3。
    • 版本号:配置为v3。
    • 版本描述:可不填写。

  3. 部署新版本。

    • 实例数量:使用默认。
    • 实例配置:镜像版本选择1.5.2,其他参数保持默认。

  4. 单击“部署新版本”,待版本启动进度为100%,表明新版本部署成功。

    图16 查看新版本状态

蓝绿策略配置与监控

  1. 新版本部署成功后,单击“蓝绿策略配置与监控”
  2. 开通免费体验APM,或者购买APM套餐包,否则无法观测到原版本和新版本的流量监控数据。

    图17 开通免费体验APM

  3. 单击“版本流量切换”,将流量全部切换到v3版本。
  4. 访问productpage服务地址,不断刷新页面,仅显示v3版本信息,即星形图标全部为红色。说明流量已全部切换到v3版本,成功实现了蓝绿发布。

    图18 v3版本页面

将原版本下线

确认v3版本能够承接v1的所有流量后,即可删除v1版本,释放v1版本的资源。

  1. “灰度发布”页面,单击灰度任务“reviews-v3”。
  2. “蓝绿策略配置与监控”页面中,单击v1版本后的“版本下线”
  3. 确认无误后,单击“确定”

    下线服务版本,会将包含的工作负载和Istio相关配置资源全部删除。

相关文档