阿里云服务网格概述—技术概要
服务网格 Service Mesh
- 基础设施层
- 微服务通信
- 保证请求可靠传递
- 隐藏通信细节
- 减少框架耦合
- 语言无关
- 数据平面
- 边车模式
- 通信代理服务
- 独立、平行、同步、透明
- 控制平面
- 集中式控制面板
- 统一运维功能

服务网格平台 Istio
- 连接
- 通信路由
- 流量管理
- 安全
- 加密通信
- 身份验证
- 控制
- 自动策略
- 分布式资源调配
- 观察
- 量度指标
- 日志
- 跟踪

阿里云服务网格ASM
- 统一管理微服务应用流量、兼容Istio的托管式平台
- 通过流量控制、网格观测以及服务间通信安全等功能,服务网格可以全方位地简化服务治理
- 为运行在异构计算基础设施上的服务提供统一的管理能力
- 适用于Kubernetes集群、Serverless Kubernetes集群、ECS虚拟机以及自建集群
- 与阿里云产品深度融合,历经数个版本迭代优化,多区域覆盖覆盖
阿里云服务网格ASM-产品架构
控制平面
- 完全托管的Istio实例
- 与开源社区兼容
- 声明式定义路由规则
- 统一服务流量管理
- 阿里云组件集成
数据平面
- Kubernetes集群的应用服务
- ECI Pod上的应用服务
- 声明式定义路由规则
- 统一服务流量管理
扩展与集成
- 可观测性服务
- 网络互连CEN
- 整合社区开源软件:OPA;授权服务
- WebAssembly:协议;指标;日志;过滤器
- GitOps:CI/CD
阿里云服务网格概述-功能特点
- 一致的管理方式
- 以一致的方式来管理运行于不同集群的应用服务
- 支持混合云、多云场景和异构环境
- 提供一致的可观测性和流量控制
- 统一的流量管理
- 支持容器或者虚拟机混合环境下统一的流量管理
- 控制平面核心组件托管化
- 托管控制平面的核心组件
- 最大限度地降低用户资源开销和运维成本

阿里云服务网格概述-产品优势
- 使用便捷
- 部署挑战:复杂的架构和组件关系;大量个性化配置;多集群、混合云、异构应用
- 基于托管组件:提高社区兼容性;高可用、免运维、内建安全;数据平面可观测性;统一管理异构混合云
- 一键式使用:创建服务网格;升级服务网格
- 灵活定义资源:Istio 虚拟服务;目标规则;入口网关

阿里云服务网格概述-应用场景
- 多语言应用微服务治理
- 金丝省发布
- 无损上下线
- 服务鉴权
- 标签路由
- 多集群应用统一流量管理
- 多地域
- 混合云
- 灵活灾备
- 应用容器化平滑上云
- 存量应用迁移
- 无状态服务架构升级
商米科技
- 维护更新迭代
- 负载均衡
- 链路追踪
- 流量统一管理
东风日产
- 原环境性能瓶颈
- 按需配置
- 増量部署
- 负载均衡
- 流量精细管理
- 大数据安全

阿里云服务网格使用-创建实例
前提条件
- 已开通以下服务:服务网掐ASM;容器服务;弹性伸缩(ESS)服务;访问控制(RAM)服务;链路追踪服务(如需启用链路追踪功能)
- 已获得以下角色授权:AliyunServiceMeshDefaultRole;AliyunCSClusterRole;AllyunCSManagedKubernetesRole
背景信息
创建ASM可能会进行如下操作:
- 创建安全组
- 创建VPC路由规则
- 创建弹性公网IP(EIP)
- 创建RAM角色及相应策略
- 创建专有网的负载均衡(SLB)
- 暴露6443端口
- 暴露15011端口
- 收集被托管管控组件的日志信息
操作步骤
基本步骤 1.登录ASM控制台 2.在左侧导航栏,选择服务网格→网格管理 3.在网格管理页面单击创建新网格 4.在创建新网格页面,完成网格配置,设置网格基础选项和高级选项 5.了解和接受服务协议 6.单击确定,开始实例的创建,一个ASM实例的的创建时间一般约为2到3分钟
阿里云服务网格使用-添加集群
前提条件
- 已创建至少一个ASM实例
- 已创建至少一个集群
- Kubernetes专有版集群
- Kubernetes托管版集群
- Serverless ASK集群
- ECS虚拟机
- 待添加的集群与ASM实例位于同一VPC,或集群已开启公网API Server以方便快速接入
操作步骤 1.在网格管理页面单击目标ASM实例名称或目标ASM实例右侧操作列下的管理 2.在数据平面区域,单击集群页签 3.在集群页签,单击添加 4.在弹出页选中需要添加的集群,并确定 5.在重要提示对话框中单击确定
阿里云服务网格使用-添加入口网关
前提条件
- 已创建至少一个ASM实例
- 已添加至少一个集群到该实例中
背景信息
- 七层网关功能
- 对外提供一个统一的七层服务入口
- HTTP请求分发/负载均衡
操作步骤
- 在网格管理页面,进入ASM实例管理页面
- 在数据平面区域,单击入口网关服务页签
- 在入口网关服务页签,单击部署默认入口网关
- 在部署入口网关页面,为集群添加入口网关服务
- 从部署集群列表中选择要部署入口网关服务的集群
- 指定负载均衡的类型,公网访问或内网访问。
- 选择负载均衡
- 配置端口映射:单击添加端口,在新增端口行中,输入服务端口和容器端口
- 单击确定
阿里云服务网格使用-部署应用
前提条件
- 已创建至少一个ASM实例
- 已添加至少一个集群到该实例中
- 通过kubectl连接到ASM实例中新添加的集群
- 已添加入口网关到该集群
背景信息 案例:Bookinfo书评应用
- 4个微服务构成
- 不同的技术栈
- Reviews微服务有三个版本
操作步骤
- 为命名空间配置Istio注入标签
- 登录容器服务控制台
- 在集群列表页面中,单击目标集群名称或详情
- 在集群管理页左侧导航栏中,单击命名空间
- 在命名空间页面,单击default命名空间右侧的编辑
- 在编辑命名空间对话框中,为该命名空间添加标签
- 部署Bookinfo应用 https://github.com/istio/istio/blob/master/samples/bookinfo/platform/kube/bookinfo.yaml
阿里云服务网格使用-定义资源
前提条件
- 已创建至少一个ASM实例
- 已添加至少一个集群到该实例中
- 已添加入口网关到该集群
- 已部署应用到该集群
背景信息
- 定义Istio资源的目的
- 策略路由
- 流量治理
- 鉴权
- 安全保护
常用 Istio 资源类型
- 服务网关 Gateway:暴露服务;绑定端口、协议、域名
- 虚拟服务 VirtualService:URI匹配;服务版本;流量权重
- 目标规则 DestinationRule:负载均衡策略;流控规则
- 服务入口 ServiceEntry:外部服务发现;流量拦截
操作步骤
步骤一:定义Gateway资源
- 进入ASM实例的管理页面
- 选择服务网格 ->网格管理
- 在网格管理页面,单击实例的名称或管理
- 在控制平面区域单击Galeway页签,单击新建
- 在新建页面中,按以下步骤定义服务网关,单击确定
- 选择相应的命名空间 ·在文本框中,定义服务网关 ·步骤结果:在服务网关页签可以看到新建的bookinfo-gateway网关
步骤二:定义虚拟服务
- 进入ASM实例的管理页面
- 在控制平面区域,单击VirtualService页签,单击新建
- 在新建页面,按以下步骤定义虚拟服务,单击确定
- 选择相应的命名空间
- 在文本框中,定义Istio虚拟服务
- 步骤结果:在虚拟服务页签可以看到新建的bookinfo服务
步骤三:访问入口网关
- 从ASM控制台查看入口网关的IP地址
- 从容器服务控制台查看入口网关的IP地址
- 进入集群管理的服务页面
- 在命名空间下拉列表中选择istio-system
- 查看istio-ingressgateway对应的外部端点信息
- 在通过浏览器访问验证路由策略:
http://入口网关IP地址/productpage - 步骤结果:未定义Reviews的流量路由策略是轮询;可以依次看到3个版本
步骤四:定义目标规则
- 在控制平面区域,单击DestinationRule页签,单击新建
- 在新建页面中,按以下步骤定义目标规则,单击确定
- 选择相应的命名空间
- 在文本框中,定义目标规则
- 负载均衡策路:轮询/最少连接数/随机
- 步骤结果:在目标规则页签可以看到新建的reviews目标规则
步骤五:增加新的虚拟服务
- 为Reviews微服务定义虚拟服务
- 在控制平面区域,单击VirtualService页签,单击新建
- 在新建页面中,按以下步骤定义虚拟服务,单击确定
- 选择相应的命名空间
- 在文本框中,定义虚拟服务
- 步骤结果:在虚拟服务页签可以看到新建的reviews虚拟服务
执行结果
查看Bookinfo应用的负载均衡效果,可以看到负载均衡效果。
服务网格 ASM 流程总结
创建一个服务网格ASM实例
- 添加一个集群到服务网格ASM 实例中
- 为服务网格ASM实例中的集群部署入口网关
- 将应用部署到上述服务网格 ASM 实例中的集群中
- 为服务网格ASM实例定义虚拟服务和 Istio 网关
服务网格 ASM 的移除流程
- 在ASM实例管理页面移出所有关联的集群
- 集群中部署的入口网关服务将被自动卸载
- 在列表页面删除ASM实例
不能在ASM实例中部署应用
- 控制台提供的配置用于连接ASM实例
- Istio资源在控制平面操作,无法在控制平面部署应用
不能在ASM管理的集群中部署Istio的虚拟服务等CRD资源
- Istio资源在控制平面操作,连接的kubeconfig同样是控制平面提供的配置
不直接使用集群的连接配置操作Istio资源
- Istio CRD对应的资源保存在控制平面,控制平面完成规则转换并应用
服务网格控制平面的命名空间与数据平面集群的命名空间的区别
- 通过控制台或Kubeconfig定义的命名空间隶属于ASM实例
- 与该ASM实例管理的数据平面集群相互独立
- 在实例和数据平面集群中的管理及维护操作互不影响