solo开源Service Mesh Hub

solo宣布了Service Mesh Hub的开源版本,这代表了其在简化复杂企业环境中使用服务网格的经验方面迈出的一大步。 正如在其公告中提到的那样,该项目遵循了之前在SuperGloo上的工作,之前的Service Mesh Hub版本以及与Service Mesh社区的充分反应了社区间的广泛合作.


多集群,多网格管理平面

Service Mesh Hub的设计旨在丰富管理平面的操作,从单个Kubernetes集群上的单个服务网格到管理跨越多个集群的多个服务网格。 它由管理平面集群上运行的组件组成。

您可以在Service Mesh Hub中注册一个集群,该集群将处理与其他集群的通信-发现正在运行的服务网格,管理配置,抓取监控指标等等。 用户无需在集群之间切换Kubernetes即可更新服务网格或应用程序的配置,这使运行和扩展操作变得更加简单。


动态发现

注册集群后,Service Mesh Hub将支持动态发现。探测器的第一个要务是找到集群上安装的所有服务网格。当发现了服务网格的控制
平面后,探测器会将网格资源写入管理平面集群,该集群链接到在集群注册期间写入的Kubernetes集群资源。目前,Service Mesh Hub
可以发现和管理Istio和Linkerd网格,并计划提供更多支持。然后,探测器将查找与网格相关联的工作负载,例如已使用该网格的
Sidecar代理创建了Pod的部署。它将一个MeshWorkload资源写入代表该工作负载的管理平面集群。最后,探测器还寻找暴露网格服务
工作负载的服务,与上述一样,其将MeshService资源写入管理平面集群。
此时,管理平面具备了跨多集群,多网格环境的网格,服务和工作负载的完整视图。


虚拟网格

为了启用多群集配置,用户将多个网格组合在一起成为一个VirtualMesh的对象。虚拟网格包含一些便于跨集群通信的配置。
为了使虚拟网格生效,Service Mesh Hub首先尝试根据用户定义的互信模型建立户型,Service Mesh Hub附带一个代理,
可帮助安全地代理跨集群证书签名请求,以最大程度地减少管理证书的操作负担。一旦建立互信关系,Service Mesh Hub将
开始联合服务,以便跨集群访问。而在后端,Service Mesh Hub将处理网络(可能通过出口和入口网关,并可能受到用户定
义的流量和访问策略的影响),并确保将服务的请求准确路由到正确的目的地。用户可以通过编辑虚拟网格微调哪些服务将代理
到哪里。

从该版本开始,Service Mesh Hub支持使用跨多个群集的多个Istio 1.5+控制平面创建虚拟网格。后续,该团队计划增加
对更多网格类型的支持。


流量和访问策略

Service Mesh Hub使用户可以将简单的配置对象写入管理平面,为在所管理的任何群集之间制定服务之间的流量和访问策略。
它被用于转换基础的网格配置,同时从用户那里抽象出特定于网格类型的对象。TrafficPolicy定义了一组目的源(网格工作
负载)和目标(网格服务)之间关系,并用于描述诸如“当A向B发送POST请求,添加标头并将设置超时为10秒”之类的规则。或
“在集群C上对该服务的每个请求,增加超时并添加重试”。从该版本开始,流量策略支持超时设定、重试、cors、流量转移、
报头处理、故障注入、子集路由、加权目标等功能。请注意,某些网格物体不支持所有这些功能。 Service Mesh Hub将尽其
所能将其转换为基础网格配置,或将错误报告给用户。AccessPolicy用于精确控制允许哪些服务进行通信。在虚拟网格上,用
户可以指定全局策略来限制访问,并要求用户指定访问策略以实现与服务的通信。

借助流量和访问策略,Service Mesh Hub为用户提供了一种功能强大的语言,即使在复杂的多集群,多网状应用程序中也可以
指示服务应如何通信。


命令行工具

Service Mesh Hub正在解决与多集群网络和配置有关的棘手问题,它附带了一个称为meshctl的命令行工具。 该工具提供了
交互式命令,使管理虚拟网格,注册集群、创建流量及访问策略变得更加容易。 它还会带有一个“describe”命令,以帮助您了
解您的工作负载和服务如何受到策略的影响。