网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts盘古助手
华为云Astro大屏应用
计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
云手机服务器 CPH
专属主机 DeH
弹性伸缩 AS
镜像服务 IMS
函数工作流 FunctionGraph
云耀云服务器(旧版)
VR云渲游平台 CVR
Huawei Cloud EulerOS
云化数据中心 CloudDC
网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
CDN与智能边缘
内容分发网络 CDN
智能边缘云 IEC
智能边缘平台 IEF
CloudPond云服务
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
可信智能计算服务 TICS
推荐系统 RES
云搜索服务 CSS
数据可视化 DLV
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
湖仓构建 LakeFormation
智能数据洞察 DataArts Insight
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
开天aPaaS
应用平台 AppStage
开天企业工作台 MSSE
开天集成工作台 MSSI
API中心 API Hub
云消息服务 KooMessage
交换数据空间 EDS
云地图服务 KooMap
云手机服务 KooPhone
组织成员账号 OrgID
云空间服务 KooDrive
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
区块链
区块链服务 BCS
数字资产链 DAC
华为云区块链引擎服务 HBS
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
价格
成本优化最佳实践
专属云商业逻辑
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
其他
管理控制台
消息中心
产品价格详情
系统权限
客户关联华为云合作伙伴须知
公共问题
宽限期保留期
奖励推广计划
活动
云服务信任体系能力说明
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts盘古助手
华为云Astro大屏应用
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
存储容灾服务 SDRS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
云存储网关 CSG
专属分布式存储服务 DSS
数据工坊 DWR
地图数据 MapDS
键值存储服务 KVS
容器
云容器引擎 CCE
云容器实例 CCI
容器镜像服务 SWR
云原生服务中心 OSC
应用服务网格 ASM
华为云UCS
数据库
云数据库 RDS
数据复制服务 DRS
文档数据库服务 DDS
分布式数据库中间件 DDM
云数据库 GaussDB
云数据库 GeminiDB
数据管理服务 DAS
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
AI开发平台ModelArts
华为HiLens
图引擎服务 GES
图像识别 Image
文字识别 OCR
自然语言处理 NLP
内容审核 Moderation
图像搜索 ImageSearch
医疗智能体 EIHealth
企业级AI应用开发专业套件 ModelArts Pro
人脸识别服务 FRS
对话机器人服务 CBS
语音交互服务 SIS
人证核身服务 IVS
视频智能分析服务 VIAS
城市智能体
自动驾驶云服务 Octopus
盘古大模型 PanguLargeModels
IoT物联网
设备接入 IoTDA
全球SIM联接 GSL
IoT数据分析 IoTA
路网数字化服务 DRIS
IoT边缘 IoTEdge
设备发放 IoTDP
企业应用
域名注册服务 Domains
云解析服务 DNS
企业门户 EWP
ICP备案
商标注册
华为云WeLink
华为云会议 Meeting
隐私保护通话 PrivateNumber
语音通话 VoiceCall
消息&短信 MSGSMS
云管理网络
SD-WAN 云服务
边缘数据中心管理 EDCM
云桌面 Workspace
应用与数据集成平台 ROMA Connect
ROMA资产中心 ROMA Exchange
API全生命周期管理 ROMA API
政企自服务管理 ESM
视频
实时音视频 SparkRTC
视频直播 Live
视频点播 VOD
媒体处理 MPC
视频接入服务 VIS
数字内容生产线 MetaStudio
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
专属云
专属计算集群 DCC
开发者工具
SDK开发指南
API签名指南
DevStar
华为云命令行工具服务 KooCLI
Huawei Cloud Toolkit
CodeArts API
云化转型
云架构中心
云采用框架
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
客户运营能力
国际站常见问题
支持计划
专业服务
合作伙伴支持计划
我的凭证
华为云公共事业服务云平台
工业软件
工业数字模型驱动引擎
硬件开发工具链平台云服务
工业数据转换引擎云服务
文档首页/ 应用服务网格 ASM/ 快速入门/ Bookinfo应用的灰度发布实践

Bookinfo应用的灰度发布实践

更新时间:2024-06-24 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. 登录数据加密服务DEW控制台。
    2. 选择左侧导航中的“密钥对管理”,单击“创建密钥对”。
    3. 输入密钥对名称,单击“确定”。

      密钥对名称由两部分组成:KeyPair-4位随机数字,使用一个容易记住的名称,如KeyPair-xxxx_asm。

      图4 创建密钥对
    4. 您的浏览器会提示您下载或自动下载私钥文件。文件名是您为密钥对指定的名称,文件扩展名为“.pem”。请将私钥文件保存在安全位置。然后在系统弹出的提示框中单击“确定”。
      说明:

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

  3. 创建负载均衡。

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

    1. 登录弹性负载均衡ELB控制台。
    2. 单击右上角的“购买弹性负载均衡”。
    3. 参考创建共享型负载均衡器完成共享型弹性负载均衡的购买。
      • 网络类型:选择“公网”
      • 所属VPC、子网:选择1中创建的虚拟私有云和子网。
      图5 购买弹性负载均衡

  4. 创建集群。

    1. 登录云容器引擎CCE控制台。
    2. 选择左侧导航中的“资源管理 > 集群管理”,单击“CCE集群”右侧的“购买”按钮。

      创建集群的详细步骤请参见购买CCE集群

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

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

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

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

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

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

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

  5. 自行准备Bookinfo应用所需的镜像(如表1所示),将它们上传至SWR镜像仓库,并且设置为“公开”。

    注意:

    每个服务的镜像名称和镜像tag必须与表1保持一致,否则体验任务可能部署失败。

    表1 镜像列表

    服务

    镜像名称

    镜像tag

    productpage

    examples-bookinfo-productpage-v1

    1.17.0

    details

    examples-bookinfo-details-v1

    1.17.01.17.0

    ratings

    examples-bookinfo-ratings-v1

    1.17.01.17.0

    reviews

    examples-bookinfo-reviews-v1

    1.17.1

    examples-bookinfo-reviews-v1

    1.17.2

    以社区的Bookinfo镜像为例,详细指导如下所述:

    1. 准备一台机器,要求可访问Internet,并且已安装1.11.2及以上版本的Docker。
    2. 依次执行以下命令,下载Bookinfo应用所需的镜像。

      docker pull docker.io/istio/examples-bookinfo-productpage-v1:1.17.0

      docker pull docker.io/istio/examples-bookinfo-details-v1:1.17.0

      docker pull docker.io/istio/examples-bookinfo-ratings-v1:1.17.0

      docker pull docker.io/istio/examples-bookinfo-reviews-v2:1.17.0

      docker pull docker.io/istio/examples-bookinfo-reviews-v3:1.17.0

    3. 连接容器镜像服务,具体操作请参见使用容器引擎客户端上传镜像
    4. 5.b中下载的镜像打标签,注意镜像名称和镜像tag与表1保持一致。

      docker tag docker.io/istio/examples-bookinfo-productpage-v1:1.17.0 swr.cn-north-4.myhuaweicloud.com/group/examples-bookinfo-productpage-v1:1.17.0

      docker tag docker.io/istio/examples-bookinfo-details-v1:1.17.0 swr.cn-north-4.myhuaweicloud.com/group/examples-bookinfo-details-v1:1.17.0

      docker tag docker.io/istio/examples-bookinfo-ratings-v1:1.17.0 swr.cn-north-4.myhuaweicloud.com/group/examples-bookinfo-ratings-v1:1.17.0

      docker tag docker.io/istio/examples-bookinfo-reviews-v2:1.17.0 swr.cn-north-4.myhuaweicloud.com/group/examples-bookinfo-reviews-v1:1.17.1

      docker tag docker.io/istio/examples-bookinfo-reviews-v3:1.17.0 swr.cn-north-4.myhuaweicloud.com/group/examples-bookinfo-reviews-v1:1.17.2

      其中,swr.cn-north-4.myhuaweicloud.com为镜像仓库地址,group为组织名称,请替换为实际取值。

    5. 上传镜像至SWR镜像仓库。

      docker push swr.cn-north-4.myhuaweicloud.com/group/examples-bookinfo-productpage-v1:1.17.0

      docker push swr.cn-north-4.myhuaweicloud.com/group/examples-bookinfo-details-v1:1.17.0

      docker push swr.cn-north-4.myhuaweicloud.com/group/examples-bookinfo-ratings-v1:1.17.0

      docker push swr.cn-north-4.myhuaweicloud.com/group/examples-bookinfo-reviews-v1:1.17.1

      docker push swr.cn-north-4.myhuaweicloud.com/group/examples-bookinfo-reviews-v1:1..17.2

    6. 将镜像类型修改为“公开”,具体操作请参见编辑镜像属性

购买网格

企业版和基础版网格均支持一键体验任务。基础版可治理单个集群,且免费提供200实例规格,建议您的业务在正式加入网格前先使用基础版。

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

    • 网格类型

      选择基础版。

    • 网格名称

      设置网格的名称。

    • Istio版本

      网格支持的Istio版本。

    • 集群

      选择4中创建的集群。

    • Istio控制面节点

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

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

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

一键创建Bookinfo应用

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

  1. 登录应用服务网格ASM控制台。
  2. 单击网格名称,进入详情页面。
  3. 选择左侧导航中的“体验任务”,单击Bookinfo任务中的“安装”。
  4. 在右侧页面设置Bookinfo应用所在的集群,在“负载均衡”中选择与所选集群处于同一VPC和子网的共享型负载均衡实例,设置一个对外端口,并填写Bookinfo应用镜像所在的镜像仓库地址,如“swr.cn-north-4.myhuaweicloud.com/group”(group表示组织名称),单击“安装”。

    图6 安装Bookinfo

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

    图7 服务列表

为服务添加灰度版本

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

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

部署灰度版本

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

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

  3. 配置灰度版本信息。

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

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

    图8 查看启动进度

配置流量策略

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

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

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

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

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

    图9 流量策略

  3. 单击“策略下发”

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

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

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

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

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

    返回控制台的“监测与处理”页面查看v1和v3版本的实时流量监控情况。

    图12 流量监控详情

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

    图13 流量监控拓扑

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

灰度版本切换

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

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

    图14 全流量接管

  2. 单击“确定”

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

    图15 v3版本页面

结束灰度任务

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

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

    图16 结束灰度任务

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

清除资源

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

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

    图17 卸载体验任务
    说明:

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

提示

您即将访问非华为云网站,请注意账号财产安全

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容