阿里云服务网格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命名空间,带版本应用视角选择工作负载视角,查看工作负载之间的调用关系,流量走向。
相关推荐
野蛮人6号1 小时前
虚拟机网络编译器还原默认设置后VMnet8和VMnet1消失了
网络·vmware·虚拟机网络编译器·vmnet8消失
scuter_yu2 小时前
主流零信任安全产品深度介绍
运维·网络·安全
江苏思维驱动智能研究院有限公司2 小时前
Sophos 网络安全:全球领先的自适应安全解决方案提供商
网络·安全·web安全
面朝大海,春不暖,花不开2 小时前
Java网络编程:TCP/UDP套接字通信详解
java·网络·tcp/ip
ChicagoTypewriter2 小时前
计算机网络中的常用表项梳理
网络·计算机网络·智能路由器
Bruce_Liuxiaowei5 小时前
常见高危端口风险分析与防护指南
网络·网络安全·端口·信息搜集
UI设计和前端开发从业者6 小时前
UI前端大数据处理策略优化:基于云计算的数据存储与计算
前端·ui·云计算
tmacfrank6 小时前
Android 网络全栈攻略(四)—— TCPIP 协议族与 HTTPS 协议
android·网络·https
liulilittle6 小时前
深度剖析:OPENPPP2 libtcpip 实现原理与架构设计
开发语言·网络·c++·tcp/ip·智能路由器·tcp·通信
cui_win6 小时前
【内存】Linux 内核优化实战 - net.ipv4.tcp_tw_reuse
linux·网络·tcp/ip