应用服务网格 ASM应用服务网格 ASM

文档首页> 应用服务网格 ASM> 快速入门> 基于应用服务网格的灰度发布
更新时间:2021/07/27 GMT+08:00
分享

基于应用服务网格的灰度发布

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

入门指引

灰度发布是迭代软件产品在生产环境安全上线的一种重要手段。本教程以Bookinfo应用为例,向您讲解服务网格基于Istio提供的服务治理能力

Bookinfo应用灰度发布流程包含以下步骤:

图1 入门流程

Bookinfo应用分析

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

Bookinfo应用分为四个单独的服务:

  • 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版本(红星形)为例进行说明。

图2 Bookinfo应用的端到端架构

在ASM中运行Bookinfo应用,无需对应用自身做出任何改变。只需简单的在Bookinfo环境中对服务进行配置和运行,即把Envoy sidecar注入到每个服务之中。这个过程所需的具体命令和配置方法由运行时环境决定,而部署结果较为一致,如图3

图3 ASM注入之后的Bookinfo应用

准备工作

在启用应用服务网格前,您需要完成如下的准备工作。

  1. 创建虚拟私有云。

    虚拟私有云(Virtual Private Cloud,简称VPC),提供一个隔离的、用户自主配置和管理的虚拟网络环境,提升资源的安全性,简化用户的网络部署。

    1. 登录华为云控制台
    2. 在“服务列表”中,选择“网络 > 虚拟私有云 ”。
    3. 在“总览”界面,单击“创建虚拟私有云”。
    4. 如果无特殊需求,界面参数均可保持默认,单击“立即创建”

  2. 创建密钥对。

    新建一个密钥对,用于远程登录节点时的身份认证。

    1. 登录华为云控制台
    2. 在“服务列表”中,选择“计算 > 弹性云服务器”。
    3. 选择左侧导航中的“密钥对”,单击“创建密钥对”。
    4. 输入密钥对名称后,单击“确定”。
    5. 在弹出的对话框中,单击“确定”。
      • 请根据提示信息,查看并保存私钥。
      • 为保证安全,私钥只能下载一次,请妥善保管,否则将无法登录节点。

  3. 创建负载均衡。

    弹性负载均衡实例将作为服务网格对外访问入口,被服务网格管理的应用流量,将均从此实例进入并分发到后端服务。

    1. 登录华为云控制台
    2. 在“服务列表”中,选择“网络 > 弹性负载均衡 ”,单击“购买弹性负载均衡”。
    3. 参照创建共享型负载均衡器中操作,创建共享型弹性负载均衡。

      创建共享型弹性负载均衡时,网络类型请选择“公网”。

  4. 创建集群。

    1. 登录CCE控制台,在“总览”页面,单击“购买Kubernetes集群”。创建集群详细步骤请参见购买混合集群
    2. 设置如下参数,其余参数均采用默认值。
      • 集群名称:用户自行输入,此处设置为“testistio”
      • 虚拟私有云:选择1中已创建的虚拟私有云。
    3. 单击“下一步: 创建节点”,配置添加节点的参数。除节点规格和登录外,其余参数保持默认。
      • 规格:CPU为2核,内存为4GB。

        此规格为部署该Bookinfo应用Demo所需的最小资源。

      • 登录:选择2中已创建的密钥对,用于登录节点的密钥。
    4. 单击“下一步:安装插件”,在“安装插件”步骤中选择要安装的插件。

      “系统资源插件”为必装插件,“高级功能插件”可根据实际需求进行选择性安装。

    5. 单击“下一步:配置确认”,阅读“产品约束”并点选“我已知晓上述限制”,确认所设置的服务选型参数、规格等信息。
    6. 确认订单无误后,单击“提交”,集群开始创建。

      如果选择购买“包年包月”的集群,请单击“去支付”,根据界面提示进行付款操作。

      集群创建预计需要6-10分钟,您可以单击“返回集群管理”进行其他操作或单击“查看集群事件列表”后查看集群详情。

使能服务网格

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

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

    • 网格类型

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

    • 集群

      选择4中创建的集群。

    • 可用区&节点规格

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

    • 登录方式

      登录:选择2中已创建的密钥对,用于登录节点的密钥。

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

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

一键创建Bookinfo应用

集群创建完成后,可以通过“一键体验”创建一个Bookinfo应用Demo,具体操作如下:

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

    图4 一键创建体验应用

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

    图5 选择集群和负载均衡

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

    图6 体验应用创建完成

为服务添加灰度版本

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

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

配置灰度版本

  1. 单击“reviews”服务后的“更多>灰度发布”,或在左侧导航栏中,选择“ 灰度发布”。在金丝雀发布下,单击“创建”。
  2. 配置灰度版本发布基本信息。

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

  3. 根据界面提供的流程图,熟悉灰度发布版本流程,单击“创建”。
  4. 部署灰度版本。

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

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

配置灰度策略

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

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

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

    • 基于请求内容发布:对当前版本配置相应的请求内容规则,服务流量在满足此规则的情况下,会走此版本。例如http请求,请求头cookie必须满足“访问条件”走版本A。
    • 基于流量比例发布:对当前版本配置相应的流量权重,服务流量将会按照权重比率以对应的概率分发当前版本。例如10%的流量走版本A,90%的流量走版本B。

    以“基于流量比例发布”为例,且v3版本流量配比为30%。更多策略内容请参见设置灰度策略

  3. 单击“策略下发”。

    灰度策略的生效需要几秒的时间,您可以在监测灰度运行状态页面,观察灰度版本的运行状态。

    图7 流量监控详情

  4. 在“服务列表 ”页面,单击productpage服务中的“访问地址”,查看流量监控情况。

    不断刷新页面,页面在v1和v3版本之间来回切换。
    图8 v1版本流量
    图9 v3版本流量

灰度版本切换

检查v3版本的资源数与v1版本是否相匹配,确认其能承接v1的所有流量后,即可将v1流量全部切换到v3。

  1. 在“ 灰度发布 ”页面,单击为服务添加灰度版本中创建的灰度版本reviews-v3。
  2. 单击v3版本后的“接管所有流量”。

    图10 接管所有流量

  3. 单击“确定”。

    页面右上角会提示切换主版本成功。刷新页面,查看流量切换情况,数据每隔5秒会刷新一次。
    图11 v3接收全部流量

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

    图12 v3版本流量

将原版本下线

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

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

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

清除资源

到此本Demo已全部操作完成,因节点应用运行过程中会产生费用,如果无特殊要求,请及时删除应用和节点,避免费用产生。

  1. 删除服务。

    1. 登录应用服务网格控制台,单击左侧导航栏的“服务列表”
    2. 根据系统提示删除服务。

  2. 删除安装docker弹性云服务器资源。

    1. 登录ECS控制台
    2. 选择新建的ECS服务器,选择该服务器后的“更多 > 删除”,勾选“释放云服务器绑定的弹性IP地址”“删除云服务器挂载的数据盘”,单击“是”,根据界面提示删除ECS

分享:

    相关文档

    相关产品