阿里云服务网格ASM实践

文章目录

    • [1. 前提条件](#1. 前提条件)
    • [2. 创建服务网格ASM实例](#2. 创建服务网格ASM实例)
      • [2.1 前提条件](#2.1 前提条件)
      • [2.2 创建实例](#2.2 创建实例)
    • [3. 为ASM实例中的集群部署入口网关](#3. 为ASM实例中的集群部署入口网关)
      • [3.1 前提条件](#3.1 前提条件)
      • [3.2 创建入口网关](#3.2 创建入口网关)
    • [4. 在ASM实例关联的集群中部署应用](#4. 在ASM实例关联的集群中部署应用)
      • [4.1 前提条件](#4.1 前提条件)
      • [4.2 应用说明](#4.2 应用说明)
      • [4.3 部署应用](#4.3 部署应用)
    • [5. 使用Istio资源实现版本流量路由](#5. 使用Istio资源实现版本流量路由)
      • [5.1 前提条件](#5.1 前提条件)
      • [5.2 操作步骤](#5.2 操作步骤)
    • [6. 查看应用的网格拓扑](#6. 查看应用的网格拓扑)
      • [6.1 前提条件](#6.1 前提条件)
      • [6.2 操作步骤](#6.2 操作步骤)

1. 前提条件

  1. 已经创建k8s集群(阿里云对应的ACK)

2. 创建服务网格ASM实例

2.1 前提条件

  1. 已经授权,RAM子账号需保证有以下权限:

    AliyunServiceMeshDefaultRole

    AliyunCSClusterRole

    AliyunCSManagedKubernetesRole

  2. ASM实例和ACK最好在一个VPC内,如果不在一个VPC,请打通网络

2.2 创建实例

  1. ASM控制台-->服务网格-->网格管理-->单击"创建新网格"

  2. 配置相关信息,这里直接把ACK集群添加到ASM实例中

    配置完成后,点击右下角"创建服务网格"

  3. ASM实例的创建时间一般约为2到3分钟,创建完成后如下

    也可以在ASM实例内部看到已经添加的集群,如果没有在创建ASM实例时添加集群,可以在这个地方添加新的集群进来。

3. 为ASM实例中的集群部署入口网关

当您的应用程序需要为用户提供统一的公网或内网入口时,可以在Kubernetes集群中部署ASM入口网关(Ingress Gateway)。入口网关作为统一的访问入口,可以简化流量的管理和路由,并利用七层负载均衡能力根据HTTP请求的路径、主机头或其他属性将流量智能分发至相应的后端服务。

3.1 前提条件

  1. 已经将ACK集群添加到ASM实例

3.2 创建入口网关

  1. ASM控制台->左侧"ASM网关"->入口网关->创建。也可以在入口网关页面,单击使用YAML创建定义入口网关。这里选择控制台创建。
  2. 填写配置信息

  3. 创建完成后
  4. 通过ACK查看入口网关

4. 在ASM实例关联的集群中部署应用

4.1 前提条件

  • 已创建至少一个ASM实例,并添加至少一个ACK集群到该实例中。
  • 已通过Kubernetes命令行客户端kubectl连接到ASM实例中新添加的ACK集群。
  • 已为ACK集群创建入口网关,使应用示例对外暴露访问。

4.2 应用说明

使用应用示例是一个名为Bookinfo的书评应用。微服务架构如下图所示:

该应用由以下4个微服务构成:

Productpage:该微服务会调用Details和Reviews两个微服务,用来生成页面。

Details:该微服务包含了书籍的信息。

Reviews:该微服务包含了书籍相关的评论,同时会调用Ratings微服务。

Ratings:该微服务包含了由书籍评价组成的评级信息。

Reviews微服务有3个版本:

v1版本不会调用Ratings服务。

v2版本会调用Ratings服务,并使用1到5个黑色星形图标来显示评分信息。

v3版本会调用Ratings服务,并使用1到5个红色星形图标来显示评分信息。

4.3 部署应用

  • 在ACK控制台-->工作负载->无状态-->使用yaml创建资源

5. 使用Istio资源实现版本流量路由

版本流量路由是指将流量按照比例路由到服务的不同版本,适用于灰度发布和A/B测试等场景

5.1 前提条件

  • 已经添加集群到ASM实例
  • 已部署入口网关
  • 已经部署Bookinfo应用到ASM实例

5.2 操作步骤

  1. 创建网关规则

    ASM控制台-->ASM网关-->网关规则-->填写配置

    创建完成后:

  2. 创建虚拟服务

    虚拟服务(VirtualService)定义流量路由规则和请求转发策略。创建虚拟服务后,您可以通过/productpage、/static、/login、/logout、/api/v1/products路径访问Bookinfo应用。

ASM控制台,在左侧导航栏,选择服务网格 > 网格管理。

在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择流量管理中心 > 虚拟服务,然后单击创建。

在创建页面,进行以下配置,然后单击创建。



  1. 访问bookinfo应用
    ASM控制台-->服务网格-->网格管理-->进入实例-->左侧导航栏"ASM网关"-->入口网关-->获取服务地址

在浏览器地址栏,输入http://{入口网关服务的IP地址}/productpage,持续刷新页面10次,访问Bookinfo应用。

每次刷新都会访问reviews服务的v1、v2和v3版本。您可以看到reviews服务三个版本出现的比例接近1:1:1。

  1. 创建版本路由规则
  • 控制台选择 流量管理中心 > 目标规则,然后单击创建

  • 创建虚拟服务,将10%流量路由到reviews服务的v1版本,40%流量路由到reviews服务的v2版本,50%流量路由到reviews服务的v3版本

    -- 在左侧导航栏,选择流量管理中心 > 虚拟服务,然后单击创建

  1. 验证版本流量路由是否成功
    在浏览器地址栏,输入http://{入口网关服务的IP地址}/productpage,持续刷新页面10次。
    若reviews服务的v1、v2、v3三个版本出现的比例接近1:4:5,表明版本流量路由成功。

6. 查看应用的网格拓扑

当您需要可视化监控应用间的交互时,可以开启网格拓扑功能。通过网格拓扑图,您可以实时监测应用的健康状态,分析服务间的延迟和通信问题,了解流量在应用间的分布和流转,以便您快速发现和解决问题,确保应用的可靠性和高性能水平。

6.1 前提条件

  • 已添加ACK集群到ASM实例,且ASM实例版本为1.15.3.120及以上
  • 已为Bookinfo应用设置路由规则,且可以通过入口网关访问Bookinfo应用
  • 已在ACK集群中集成可观测监控Prometheus版或者自建Prometheus,用于采集监控指标。本文以可观测监控Prometheus版为例

6.2 操作步骤

  1. 启用网络拓扑
    左侧导航栏,选择可观测管理中心 > 网格拓扑,在启用ASM网格拓扑区域,按照ASM版本进行以下操作。
  • ASM版本为1.18.2.112以下:单击开始启用。
  • ASM版本为1.18.2.112及以上:任选以下部署模式。关于两种模式的差异以及如何配置托管模式,请参见开启托管模式的网格拓扑。
    -- 单击数据面Kubernetes集群内部署模式,输入ASM网格拓扑使用的Prometheus服务地址,单击开始启用。
    -- 单击托管模式,单击开始启用,在弹出的对话框,配置相关信息,单击确定。
  1. 使用CLB访问网格拓扑
  • 在访问方式区域,按ASM实例版本选择以下操作。
    -- ASM版本为1.17.2.19以下:打开自动创建公网负载均衡CLB访问ASM网格拓扑右侧的开关,在弹出的对话框,单击确定。
    -- ASM版本为1.17.2.19及以上:打开创建负载均衡CLB访问ASM网格拓扑右侧的开关,在弹出的对话框,按需进行相关配置,然后单击确定。

开启访问网格拓扑后,服务网格将进入短暂的更新状态。

  • 单击 复制Token并在新页面打开ASM网格拓扑。
  • 在网格拓扑的登录页面,粘贴Token,单击登录,进入网格拓扑控制台。
  1. 查看应用网格拓扑
  • 在浏览器地址栏中输入http://{入口网关的IP地址}/productpage,访问Bookinfo应用
  • 在网格拓扑控制台,选择default命名空间,带版本应用视角选择工作负载视角,查看工作负载之间的调用关系,流量走向。
相关推荐
呉師傅1 小时前
佳能iR-ADV C5560复印机如何扫描文件到电脑
运维·网络·windows·计算机外设·电脑
半梦半醒*1 小时前
Linux网络管理
linux·运维·网络·centos·运维开发
神秘人X7072 小时前
Linux网络配置全攻略:IP、路由与双机通信
linux·网络·tcp/ip
hhh123987_2 小时前
以太网基础⑥ ZYNQ PS端 基于LWIP的TCP例程测试
网络·网络协议·tcp/ip
Lfsd2 小时前
根据ip获取地址库
网络·网络协议·tcp/ip
程序员编程指南4 小时前
Qt 网络编程进阶:RESTful API 调用
c语言·网络·c++·qt·restful
香蕉割草机5 小时前
高性能网络DPDK、RDMA、XDP初探
网络
程序员编程指南6 小时前
Qt 网络编程进阶:网络安全与加密
c语言·网络·c++·qt·web安全
未来之窗软件服务6 小时前
基于 Nginx 与未来之窗防火墙构建下一代自建动态网络防护体系—仙盟创梦IDE
网络·ide·nginx·服务器安全·仙盟创梦ide·东方仙盟
Johny_Zhao7 小时前
Centos8搭建hadoop高可用集群
linux·hadoop·python·网络安全·信息安全·云计算·shell·yum源·系统运维·itsm