阿里云服务网格ASM实践
文章目录
- 1. 前提条件
- 2. 创建服务网格ASM实例
- 2.1 前提条件
- 2.2 创建实例
- 3. 为ASM实例中的集群部署入口网关
- 3.1 前提条件
- 3.2 创建入口网关
- 4. 在ASM实例关联的集群中部署应用
- 4.1 前提条件
- 4.2 应用说明
- 4.3 部署应用
- 5. 使用Istio资源实现版本流量路由
- 5.1 前提条件
- 5.2 操作步骤
- 6. 查看应用的网格拓扑
- 6.1 前提条件
- 6.2 操作步骤
1. 前提条件
- 已经创建k8s集群(阿里云对应的ACK)
2. 创建服务网格ASM实例
2.1 前提条件
-
已经授权,RAM子账号需保证有以下权限:
AliyunServiceMeshDefaultRole
AliyunCSClusterRole
AliyunCSManagedKubernetesRole -
ASM实例和ACK最好在一个VPC内,如果不在一个VPC,请打通网络
2.2 创建实例
-
ASM控制台–>服务网格–>网格管理–>单击“创建新网格”
-
配置相关信息,这里直接把ACK集群添加到ASM实例中
配置完成后,点击右下角“创建服务网格” -
ASM实例的创建时间一般约为2到3分钟,创建完成后如下
也可以在ASM实例内部看到已经添加的集群,如果没有在创建ASM实例时添加集群,可以在这个地方添加新的集群进来。
3. 为ASM实例中的集群部署入口网关
当您的应用程序需要为用户提供统一的公网或内网入口时,可以在Kubernetes集群中部署ASM入口网关(Ingress Gateway)。入口网关作为统一的访问入口,可以简化流量的管理和路由,并利用七层负载均衡能力根据HTTP请求的路径、主机头或其他属性将流量智能分发至相应的后端服务。
3.1 前提条件
- 已经将ACK集群添加到ASM实例
3.2 创建入口网关
- ASM控制台->左侧“ASM网关”->入口网关->创建。也可以在入口网关页面,单击使用YAML创建定义入口网关。这里选择控制台创建。
- 填写配置信息
- 创建完成后
- 通过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 操作步骤
-
创建网关规则
ASM控制台–>ASM网关–>网关规则–>填写配置
创建完成后:
-
创建虚拟服务
虚拟服务(VirtualService)定义流量路由规则和请求转发策略。创建虚拟服务后,您可以通过/productpage、/static、/login、/logout、/api/v1/products路径访问Bookinfo应用。
ASM控制台,在左侧导航栏,选择服务网格 > 网格管理。
在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择流量管理中心 > 虚拟服务,然后单击创建。
在创建页面,进行以下配置,然后单击创建。
- 访问bookinfo应用
ASM控制台–>服务网格–>网格管理–>进入实例–>左侧导航栏“ASM网关”–>入口网关–>获取服务地址
在浏览器地址栏,输入http://{入口网关服务的IP地址}/productpage,持续刷新页面10次,访问Bookinfo应用。
每次刷新都会访问reviews服务的v1、v2和v3版本。您可以看到reviews服务三个版本出现的比例接近1:1:1。
- 创建版本路由规则
-
控制台选择 流量管理中心 > 目标规则,然后单击创建
-
创建虚拟服务,将10%流量路由到reviews服务的v1版本,40%流量路由到reviews服务的v2版本,50%流量路由到reviews服务的v3版本
– 在左侧导航栏,选择流量管理中心 > 虚拟服务,然后单击创建
- 验证版本流量路由是否成功
在浏览器地址栏,输入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 操作步骤
- 启用网络拓扑
左侧导航栏,选择可观测管理中心 > 网格拓扑,在启用ASM网格拓扑区域,按照ASM版本进行以下操作。
- ASM版本为1.18.2.112以下:单击开始启用。
- ASM版本为1.18.2.112及以上:任选以下部署模式。关于两种模式的差异以及如何配置托管模式,请参见开启托管模式的网格拓扑。
– 单击数据面Kubernetes集群内部署模式,输入ASM网格拓扑使用的Prometheus服务地址,单击开始启用。
– 单击托管模式,单击开始启用,在弹出的对话框,配置相关信息,单击确定。
- 使用CLB访问网格拓扑
- 在访问方式区域,按ASM实例版本选择以下操作。
– ASM版本为1.17.2.19以下:打开自动创建公网负载均衡CLB访问ASM网格拓扑右侧的开关,在弹出的对话框,单击确定。
– ASM版本为1.17.2.19及以上:打开创建负载均衡CLB访问ASM网格拓扑右侧的开关,在弹出的对话框,按需进行相关配置,然后单击确定。
开启访问网格拓扑后,服务网格将进入短暂的更新状态。
- 单击 复制Token并在新页面打开ASM网格拓扑。
- 在网格拓扑的登录页面,粘贴Token,单击登录,进入网格拓扑控制台。
- 查看应用网格拓扑
- 在浏览器地址栏中输入http://{入口网关的IP地址}/productpage,访问Bookinfo应用
- 在网格拓扑控制台,选择default命名空间,带版本应用视角选择工作负载视角,查看工作负载之间的调用关系,流量走向。