阿里云云原生容器工程师ACP认证(二十)—阿里云服务网格

 

阿里云服务网格概述—技术概要

服务网格 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请求分发/负载均衡

操作步骤

  1. 在网格管理页面,进入ASM实例管理页面
  2. 在数据平面区域,单击入口网关服务页签
  3. 在入口网关服务页签,单击部署默认入口网关
  4. 在部署入口网关页面,为集群添加入口网关服务
    • 从部署集群列表中选择要部署入口网关服务的集群
    • 指定负载均衡的类型,公网访问或内网访问。
    • 选择负载均衡
  5. 配置端口映射:单击添加端口,在新增端口行中,输入服务端口和容器端口
  6. 单击确定

阿里云服务网格使用-部署应用

前提条件

  • 已创建至少一个ASM实例
  • 已添加至少一个集群到该实例中
  • 通过kubectl连接到ASM实例中新添加的集群
  • 已添加入口网关到该集群

背景信息 案例:Bookinfo书评应用

  • 4个微服务构成
  • 不同的技术栈
  • Reviews微服务有三个版本

操作步骤

  1. 为命名空间配置Istio注入标签
    • 登录容器服务控制台
    • 在集群列表页面中,单击目标集群名称或详情
    • 在集群管理页左侧导航栏中,单击命名空间
    • 在命名空间页面,单击default命名空间右侧的编辑
    • 在编辑命名空间对话框中,为该命名空间添加标签
  2. 部署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实例管理的数据平面集群相互独立
  • 在实例和数据平面集群中的管理及维护操作互不影响