计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
弹性伸缩 AS
镜像服务 IMS
专属主机 DeH
函数工作流 FunctionGraph
云手机服务器 CPH
Huawei Cloud EulerOS
网络
虚拟私有云 VPC
弹性公网IP EIP
虚拟专用网络 VPN
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
VPC终端节点 VPCEP
云连接 CC
企业路由器 ER
企业交换机 ESW
全球加速 GA
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
边缘安全 EdgeSec
威胁检测服务 MTD
CDN与智能边缘
内容分发网络 CDN
CloudPond云服务
智能边缘云 IEC
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
云搜索服务 CSS
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
数据可视化 DLV
数据湖工厂 DLF
湖仓构建 LakeFormation
企业应用
云桌面 Workspace
应用与数据集成平台 ROMA Connect
云解析服务 DNS
专属云
专属计算集群 DCC
IoT物联网
IoT物联网
设备接入 IoTDA
智能边缘平台 IEF
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
国际站常见问题
ICP备案
我的凭证
支持计划
客户运营能力
合作伙伴支持计划
专业服务
区块链
区块链服务 BCS
Web3节点引擎服务 NES
解决方案
SAP
高性能计算 HPC
视频
视频直播 Live
视频点播 VOD
媒体处理 MPC
实时音视频 SparkRTC
数字内容生产线 MetaStudio
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
存储容灾服务 SDRS
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
专属分布式存储服务 DSS
容器
云容器引擎 CCE
容器镜像服务 SWR
应用服务网格 ASM
华为云UCS
云容器实例 CCI
管理与监管
云监控服务 CES
统一身份认证服务 IAM
资源编排服务 RFS
云审计服务 CTS
标签管理服务 TMS
云日志服务 LTS
配置审计 Config
资源访问管理 RAM
消息通知服务 SMN
应用运维管理 AOM
应用性能管理 APM
组织 Organizations
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
应用身份管理服务 OneAccess
数据库
云数据库 RDS
文档数据库服务 DDS
数据管理服务 DAS
数据复制服务 DRS
云数据库 GeminiDB
云数据库 GaussDB
分布式数据库中间件 DDM
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
人脸识别服务 FRS
图引擎服务 GES
图像识别 Image
内容审核 Moderation
文字识别 OCR
AI开发平台ModelArts
图像搜索 ImageSearch
对话机器人服务 CBS
华为HiLens
视频智能分析服务 VIAS
语音交互服务 SIS
应用中间件
分布式缓存服务 DCS
API网关 APIG
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
多活高可用服务 MAS
事件网格 EG
企业协同
华为云会议 Meeting
云通信
消息&短信 MSGSMS
云生态
合作伙伴中心
云商店
开发者工具
SDK开发指南
API签名指南
Terraform
华为云命令行工具服务 KooCLI
其他
产品价格详情
系统权限
管理控制台
客户关联华为云合作伙伴须知
消息中心
公共问题
开发与运维
应用管理与运维平台 ServiceStage
软件开发生产线 CodeArts
需求管理 CodeArts Req
部署 CodeArts Deploy
性能测试 CodeArts PerfTest
编译构建 CodeArts Build
流水线 CodeArts Pipeline
制品仓库 CodeArts Artifact
测试计划 CodeArts TestPlan
代码检查 CodeArts Check
代码托管 CodeArts Repo
云应用引擎 CAE
开天aPaaS
云消息服务 KooMessage
云手机服务 KooPhone
云空间服务 KooDrive

Bookinfo应用的灰度发布实践

更新时间:2024-03-18 GMT+08:00

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

入门指引

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

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

图1 入门流程

Bookinfo应用分析

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

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

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

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

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

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

图2 Bookinfo应用的端到端架构

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

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

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

准备工作

在开始之前,您需要完成如下的准备工作。

  1. 创建虚拟私有云和子网。

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

    1. 登录虚拟私有云VPC控制台。
    2. 单击右上角“创建虚拟私有云”。
    3. 根据界面提示完成参数填写,单击“立即创建”。

  2. (可选)创建密钥对。

    创建集群节点时,如果使用密钥对登录方式,需要提前创建好密钥对。

    1. 登录弹性云服务器ECS控制台。
    2. 选择左侧导航中的“密钥对”,单击右上角“创建密钥对”。
    3. 输入密钥对名称后,单击“确定”。
    4. 您的浏览器会提示您下载或自动下载私钥文件。文件名是您为密钥对指定的名称,文件扩展名为“.pem”。请将私钥文件保存在安全位置。然后在系统弹出的提示框中单击“确定”。
      说明:

      为保证安全,私钥只能下载一次,请妥善保管,否则将无法登录节点。

  3. 创建负载均衡。

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

    1. 登录弹性负载均衡ELB控制台。
    2. 单击右上角的“创建弹性负载均衡”。
    3. 所属VPC、子网请选择1中创建的虚拟私有云和子网,其他参数根据界面提示填写,单击“立即申请”。

  4. 创建集群。

    1. 登录云容器引擎CCE控制台。
    2. 选择左侧导航中的“资源管理 > 集群管理”,单击右上角“创建CCE集群”。
    3. “服务选型”页面设置如下参数,其余参数均采用默认值。
      • 集群名称:用户自行输入,此处设置为“cce-asm”
      • 虚拟私有云、所在子网:选择1中创建的虚拟私有云和子网。
    4. 单击“下一步:创建节点”,配置添加节点的参数。除节点规格和登录方式外,其余参数保持默认。
      • 节点规格:vCPUs为4核,内存为8GB。
        说明:

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

      • 登录方式:选择2中创建的密钥对,用于远程登录节点时的身份认证。
    5. 单击“下一步:安装插件”,在“安装插件”步骤中选择要安装的插件。

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

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

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

创建网格

  1. 登录应用服务网格ASM控制台。
  2. 单击右上角“创建网格”。
  3. 设置如下参数,其余参数均采用默认值。

    • 网格类型

      默认为基础版。

    • 网格名称

      设置网格的名称。

    • Istio版本

      网格支持的Istio版本。

    • 集群

      选择4中创建的集群。

    • Istio控制面节点

      如果需要高可用,建议选择两个或以上不同可用区的节点。

  4. 设置完成后,在右侧的配置清单中确认网格配置,单击“提交”。

    创建时间预计需要1~3分钟,请耐心等待。当网格状态从“安装中”变为“运行中”,表示网格创建成功。

一键创建Bookinfo应用

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

  1. 登录应用服务网格ASM控制台。
  2. 单击网格名称,进入详情页面。
  3. 选择左侧导航中的“体验任务”,单击Bookinfo任务中的“安装”。
  4. 在右侧页面设置Bookinfo应用所在的集群,在“负载均衡”中选择与所选集群处于同一VPC和子网的负载均衡实例,并设置一个对外端口,单击“安装”。

    图4 安装Bookinfo

  5. 等待Bookinfo应用创建完成。创建完成后进入“服务管理”页面,配置诊断栏将显示为“正常”,Bookinfo应用包含productpage、details、reviews、ratings四个服务。

    图5 服务列表

为服务添加灰度版本

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

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

部署灰度版本

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

    • 灰度任务名称:用户自定义,此处设置为reviews-v3。
    • 命名空间:选择服务所在命名空间。
    • 灰度发布服务:在下拉框中选择reviews。
    • 工作负载:选择服务所属的工作负载。

  3. 配置灰度版本信息。

    • 部署集群:选择服务所属的集群。
    • 版本号:配置为v3。
    • 实例数量:使用默认。
    • 实例配置:镜像版本选择1.17.2,其他参数保持默认。

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

配置流量策略

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

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

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

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

    “基于流量比例”为例,且v3版本流量配比为20%。

    图6 流量策略

  3. 单击“策略下发”
  4. “服务列表”页面,单击productpage服务中的“访问地址”。不断刷新页面,页面在v1和v3版本之间来回切换,并且比例大致接近4:1。

    图7 v1版本页面
    图8 v3版本页面

灰度版本切换

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

  1. 在“监测与处理”页面,单击v3版本后的“全流量接管”

    图9 全流量接管

  2. 单击“确定”

    页面右上角会提示全流量接管成功。在Bookinfo应用页面,不断刷新页面,页面仅显示v3版本信息,即星形图标全部为红色。

    图10 v3版本页面

结束灰度任务

v3承接v1版本所有流量后,即可结束灰度任务,释放v1版本的资源。

  1. 在“监测与处理”页面,单击“结束灰度任务”。
  2. 单击“确定”,结束灰度任务将下线原版本,并删除灰度任务。

    图11 结束灰度任务

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

清除资源

到此本Demo已全部操作完成,为了避免资源的浪费,请及时删除应用和节点。

  1. 选择左侧导航中的“体验任务”,单击Bookinfo任务中的“卸载”。
  2. 单击“确定”。卸载Bookinfo体验任务,会自动删除productpage、details、reviews、ratings服务及相关资源。

    图12 卸载体验任务
    说明:

    卸载体验任务后,已完成灰度发布的服务,其灰度版本对应的负载需要手动在CCE控制台删除。

我们使用cookie来确保您的高速浏览体验。继续浏览本站,即表示您同意我们使用cookie。 详情

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容