4

Istio XDS配置生成实现

 2 years ago
source link: https://blog.51cto.com/key3feng/5469947
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Istio XDS配置生成实现

原创

key_3_feng 2022-07-13 22:29:24 博主文章分类:2022年6月 ©著作权

文章标签 Istio XDS 文章分类 其它 系统/运维 yyds干货盘点 阅读数149

Envoy按照使用场景可以分为3种。

1)model.Sidecar:Sidecar模式,和应用服务一块部署在容器中,对进出应用服务的流量进行拦截。2)model.Router:Router模式,作为独立的代理服务,对应用的L4/L7层流量进行代理。3)model.Ingress:Ingress模式,作为集群入口的Ingress代理,对集群的入口流量进行拦截和代理。

其中,Router模式与Ingress模式均属于和应用服务不在一起部署的纯代理场景,在XDS配置方面没有任何区别,因此从XDS响应消息生成的角度看,可以归为一类,称为Gateway模式。

对于Sidecar模式来说,Envoy负责服务出入方向流量的透明拦截,并且出入方向的流量在监听管理、路由管理等方面有很大的区别,因此Sidecar的XDS配置均按照出入方向分别进行组织和管理。入流量一般称为Inbound,出流量一般称为Outbound。

由于Router模式和Ingress模式均属于单独的代理模式,在XDS配置管理方面没有大的差异,可以统一为Gateway模式,因此在XDS管理配置上可以划分为Sidecar Inbound模式、Sidecar Outbound模式和Gateway模式。

这几个模式下的XDS配置生成的方式也都比较类似,首先获取当前模式下Sidecar对应的服务列表,然后基于服务列表,拼装相应的XDS信息。

  1. Inbound Sidecar

Inbound方向代表的是发往本节点的流量,同时Inbound只会将请求转发到和当前Sidecar部署在同一个部署单元上的服务节点上,因此Inbound方向的集群信息和路由信息都比较确定,只需要获取到当前Sidecar节点对应的服务信息即可。

对于HTTP来说,这里会拼装HTTP对应的路由信息,具体包含clusterName集群信息和VirtualHost信息。由于Inbound方向使用单一的集群、单一的VirtualHost,并且集群固定只有一个节点信息(本机节点),因此Inbound方向的路由查找和流量转发比较确定。Inbound方向的VirtualHost称为“Inbound|http|instance.Endpoint.ServicePort.Port”。

对于TCP来说,Inbound方向的路由信息当前未按照具体的协议类型进行区分,直接通过TCP Proxy的方式进行路由,这样只能进行全局的统计和管控,无法对Inbound方向的流量进行协议相关的链路治理和管控。

  1. Outbound Sidecar

Outbound方向代表的是从当前节点发往本节点外的流量,因此首先需要获取当前节点服务对应的上游服务列表,对于有作用域相关设置的Sidecar来说,需要根据作用域设置获取服务列表,对于没有作用域相关设置的Sidecar来说,返回的是注册中心的所有服务列表,因此当集群和服务规模比较大时,为了减少大量无效的XDS交互,需要设置相应的作用域信息。

获取到服务列表之后,需要根据服务当前支持的协议信息进行XDS响应消息的拼装,对于HTTP协议来说,一般通过80端口号对外提供服务,因此多个HTTP Outbound服务可以共用一个监听器“0.0.0.0:80”,使用统一的HTTPConnManager对不同HTTP Outbound服务进行管理,使用80端口号作为Rds配置的RouteConfigName,Rds对应的具体路由配置由RDS协议负责解析。

由于具体的应用协议不同,TCP协议并且不像HTTP协议那样拥有知名端口号,因此无法直接使用端口号作为监听器标识。对于这类协议,一般会采用虚拟IP地址作为服务的监听标识。

  1. Gateway

对于Gateway模式来说,Gateway对应的服务信息和路由信息通过Istio核心资源Gateway指定。Gateway节点配置生成时,首先根据当前Gateway节点的工作负载标签,获取匹配的Gateway核心资源列表,然后将这些核心资源列表进行合并处理,产出一个逻辑的Gateway,逻辑Gateway包括Gateway节点XDS配置生成需要的元数据信息,根据这些信息就可以拼装生成相应的XDS响应消息。

  • 1
  • 收藏
  • 评论
  • 分享
  • 举报

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK