应用场景
服务网格 ASM 主要适用于需要对应用服务进行流量管理、安全管理、故障恢复、观测监控以及微服务架构迁移的应用场景。 下面介绍 ASM 的常见应用场景。
流量管理
通过 ASM,可以轻松实现基于配置的流量管理:
- 将流量管理与基础设施管理分隔开来,并提供了许多立于应用代码之外的流量管理功能,在部署规模逐步扩大的过程中帮助简化流量管理。
- 管理服务网格的服务发现、流量路由和负载均衡,简化服务级属性的配置,例如超时和重试等。
服务安全
通过 ASM,可以轻松实现服务之间的双向 TLS 认证:
- 支持以渐进方式实现 mTLS 双向认证,可以确保服务间通信以及最终用户与服务之间通信的安全。
- 双向 TLS 认证在实现过程中不需要更改服务代码,可以为每个服务提供基于角色的强大身份认证机制,以实现跨集群、跨云端的交互操作。
通过 ASM,可以轻松实现服务之间的授权:
- 借助 Istio 授权机制,ASM 确保只能从经过严格身份认证和授权的客户端访问包含敏感数据的服务。
- 支持对网格中的服务进行基于命名空间级别、服务级别和方法级别的访问权限控制,包括使用基于角色的语义、服务到服务和最终用户到服务的授权,并在角色和角色绑定方面提供灵活的自定义属性支持。
通过 ASM,可以轻松实现密钥管理:
- 基于 Istio 的密钥管理系统,支持自动生成、分发、轮换与撤消密钥和证书。
故障恢复
通过 ASM,可以轻松实现开箱即用的故障恢复功能:
- 分布式系统存在高度复杂性,在基础设施、应用逻辑、运维流程等环节都可能存在稳定性风险导致业务系统的失效。
- 提供了基于 Istio 的混沌工程能力,包括如何使用连接池配置和异常检测实现熔断能力,支持针对服务的重试和故障注入等能力。
服务可观测性
通过 ASM,可以轻松实现服务之间的可观测性,借助强大可靠且易于使用的监控功能,快速有效地检测和修复问题。
通过集成的阿里云链路追踪服务,为分布式应用的开发者提供完整的调用链路还原、调用请求量统计、链路拓扑、应用依赖分析等工具,帮助开发者快速分析和诊断分布式应用架构下的性能瓶颈,提高开发诊断效率。
微服务架构
通过 ASM,可以实现敏捷开发和部署落地,加速企业业务迭代。企业生产环境中,通过合理微服务拆分,将每个微服务应用存储在阿里云镜像仓库帮您管理。您只需迭代每个微服务应用,由阿里云提供调度、编排、部署和灰度发布能力。
- 负载均衡和服务发现支持 4 层和 7 层的请求转发和后端绑定。
- 丰富的调度和异常恢复策略支持服务级别的亲和性调度,支持跨可用区的高可用和灾难恢复。
- 微服务监控和弹性伸缩支持微服务和容器级别的监控,支持微服务的自动伸缩。
阿里云服务网格(Alibaba Cloud Service Mesh,简称ASM)提供一个全托管式的服务网格平台,兼容社区Istio开源服务网格,用于简化服务的治理,包括服务调用之间的流量路由与拆分管理、服务间通信的认证安全以及网格可观测性能力,从而极大地减轻开发与运维的工作负担。
产品架构
ASM的产品架构如下图所示。
在ASM中,Istio控制平面的组件全部托管,降低您使用的复杂度,您只需要专注于业务应用的开发部署。同时,保持与Istio社区的兼容,支持声明式的方式定义灵活的路由规则,支持网格内服务之间的统一流量管理。
一个托管了控制平面的ASM实例可以支持来自多个Kubernetes集群的应用服务或者运行于ECI Pod上的应用服务。此外,也可以把一些非Kubernetes服务(例如运行于虚拟机或物理裸机中的服务)集成到同一个服务网格中。
功能特性
ASM定位于混合云、多云、多集群、非容器应用迁移等核心场景中,构建托管式统一的服务网格能力,能够为阿里云用户提供以下功能:
- 一致的管理方式
以一致的方式来管理运行于ACK托管Kubernetes集群、专有Kubernetes集群、Serverless Kubernetes集群、混合云或多云场景下的接入集群上的应用服务,从而提供一致的可观测性和流量控制。
- 统一的流量管理
支持容器或者虚拟机混合环境下统一的流量管理。
- 控制平面核心组件托管化
托管控制平面的核心组件,最大限度地降低用户资源开销和运维成本。
产品优势
使用便捷
- 通过控制台一键创建服务网格
- 通过控制台一键升级服务网格
- 通过控制台灵活定义 Istio 虚拟服务、目标规则和入口网关资源等
功能强大
功能 | 说明 |
---|---|
完全托管 |
|
流量路由 |
|
安全功能 |
|
监控诊断 |
|
高稳定性 |
|
高可用性 |
|
技术支持 |
|
产品功能
服务网格ASM具有安全策略、负载均衡等功能,本文介绍服务网格ASM支持的功能。
分类 | 特性 | 是否支持 |
---|---|---|
安装或升级或回滚 | 控制台安装 | 支持 |
控制台自动升级 | 支持 | |
控制台启用可选功能 | 支持 | |
Aliyun CLI安装 | 支持 | |
从Istio addon方式迁移 | 不支持 | |
Istioctl相关命令 | 部分支持,建议直接使用kubectl | |
回滚 | 不支持 | |
流量拦截或重定向机制 | iptables | 支持 |
Istio容器网络接口(CNI) | 不支持 | |
协议支持 | IPv4 | 支持 |
HTTP/1.1 | 支持 | |
HTTP/2 | 支持 | |
TCP | 支持 | |
gRPC | 支持 | |
IPv6 | 不支持 | |
其他协议如WebSocket,MongoDB,Redis,Kafka,Cassandra,RabbitMQ | 不支持第7层功能配置 | |
Sidecar代理部署 | Sidecar代理 | 支持 |
入口网关 | 支持 | |
从Sidecar出站 | 支持 | |
使用出口网关 | 需您自行构建 | |
CRD支持 | VirtualService | 支持 |
DestinationRule | 支持 | |
Gateway | 支持 | |
Sidecar | 支持 | |
ServiceEntry | 支持 | |
EnvoyFilter | 支持 | |
Istio入口网关的负载均衡 | 公网负载均衡器 | 支持 |
内网负载平衡器 | 支持 | |
负载均衡策略 | 轮巡 | 支持 |
最少链接 | 支持 | |
随机 | 支持 | |
透传 | 支持 | |
局部加权 | 支持 | |
安全策略 | 使用Envoy SDS管理工作负载证书 | 支持 |
使用Envoy SDS在入口网关上进行外部证书管理 | 不支持 | |
阿里云产品内置证书颁发机构 | 支持 | |
与自定义CA集成 | 不支持 | |
授权政策v1beta1 | 支持 | |
在网格级别启用PERMISSIVE mTLS模式 | 默认支持 | |
mTLS严格模式 | 需您自行设置 | |
自动mTLS | 支持 | |
JWT认证 | 支持 | |
可观测性 | 云监控(HTTP代理指标) | 支持 |
云监控(TCP代理指标) | 不支持 | |
网格遥测(代理内边缘数据) | 支持 | |
Prometheus度量标准导出到Grafana | 支持 | |
定制适配器 | 不支持 | |
任意遥测和日志记录后端 | 不支持 | |
日志服务集成 | 支持 | |
使用stdout | 支持 | |
链路追踪集成 | 支持(可选) | |
Jaeger跟踪(允许使用您管理的Jaeger) | 支持(可选) | |
Zipkin跟踪(允许使用您管理的Jaeger) | 支持(可选) | |
多集群支持 | 同一VPC | 支持 |
多个VPC+云企业网CEN | 支持 | |
ACK集群 | 支持 | |
ASK集群 | 支持 | |
注册集群(IDC自建或其他公有云上集群) | 支持 | |
虚拟机应用 | 支持 | |
用户界面 | ASM控制台 | 支持 |
诊断中心 | 支持 | |
访问日志报表 | 支持 | |
Grafana仪表板 | 支持 | |
Kiali | 不支持,由您自行管理 | |
Istio Mixer其他功能 | 不支持,可以通过使用其他功能代替,如限流服务、OPA策略集成等。 |
基本概念
- 托管服务网格(Managed Service Mesh)
- 由服务网格 ASM 创建并托管 Istio 的控制平面。具备简单、低成本、高可用、无需运维管理 Istio 控制平面的特点。
- 控制平面(Control Plane)
- 从架构设计上来看,Istio 服务网格逻辑上分为控制平面和数据平面两部分。控制平面负责管理和配置代理,从而实现路由流量。
- 数据平面(Data Plane)
- 数据平面由一组以 Sidecar 方式部署的智能代理(Envoy)组成,负责调节和控制微服务以及 Mixer 之间所有的网络通信。
- 命名空间(Namespace)
- 命名空间为 Kubernetes 集群提供虚拟的隔离作用。Kubernetes 集群初始有 3 个命名空间,分别是默认命名空间 default、系统命名空间 kube-system 和 kube-public,管理员可以创建新的命名空间以满足需求。
- 虚拟服务(Virtual Service)
- 作为 Istio 自定义资源之一,虚拟服务(VirtualService)定义了一系列针对指定服务的流量路由规则。每个路由规则都针对特定协议定义流量匹配规则。如果流量符合这些特征,就会根据规则发送到服务注册表中的目标服务(或者目标服务的子集或版本)。
- 目标规则(Destination Rule)
- 作为 Istio 自定义资源之一,目标规则(DestinationRule)定义了在路由发生后应用于服务的流量策略。这些规则指定负载均衡的配置、来自 Sidecar 代理的连接池大小以及异常检测设置,从而实现从负载均衡池中检测和驱逐不健康的主机。
- Istio 网关(Gateway)
- 作为 Istio 自定义资源之一,Istio 网关(Gateway)定义了在网格出入口操作的负载均衡器,用于接收传入或传出的 HTTP/TCP 连接。它描述了需要公开的一组端口、要使用的协议类型、负载均衡器的 SNI 配置等信息。
- 服务条目(Service Entry)
- 作为 Istio 自定义资源之一,服务条目(ServiceEntry)是用于将一个服务添加到 Istio 抽象模型或服务注册表中,这些注册的服务是由 Istio 内部维护的。添加服务条目后,Envoy 代理可以将流量发送到该服务,如同这个添加的服务条目是网格中的其他服务一样。
- 入口网关服务(IngressGateway Service)
- 与 Istio 网关(Gateway)概念容易混淆的入口网关服务并不是指 Istio 自定义资源,而是指 Kubernetes 服务。它是真实的入口网关服务的抽象,后面由对应的容器来提供支持。通过ASM 创建一个入口网关服务时,会部署一个 Kubernetes 服务和 Deployment 资源到用户集群中。