Istio 流量管理
控制面
Pilot 控制面 内部存在服务注册表
服务数据
服务注册
k8s
原生支持
Consul Eureka 等其他服务注册表
MCP over xDS
通过CRD定义的服务数据:
ServiceEntry WorkLoadEntry
自定义流量规则:
VirtualService
Gateway
Destination Rule
流量管理模型
数据面
数据面标准协议:Envoy配置模型和xDs协议
Istio 中 Envoy sidecar 配置
通过 Listener、Router-Config和Cluster 提供 入向和出向的配置
VirtualInboundLister
VirtualOutboundLister
InboundCluster
OutBoundCluster
端到端请求处理流程
Istio 目前支持的协议
Istio 协议扩展
- 自定义7层协议扩展
- 框架无关的通用路由
Pilot 端需要修改 同时需修改 xDS协议 EnvoyFilter
Envoy filter
可以作为一个解决方案的突破口 通过 envoy filter 将需要被代理的协议在此层进行转换
比如 http2 -> 自定义协议 客户端还是按照http请求方式直接和自定义协议的服务端通信
控制面扩展
在上述基础之上进一步扩展 新增一个新的单独控制面 由它负责扩展协议和路由的解析
- 从 pilot 获取 istio原生支持的对象和路由规则
- 解析扩展的协议对象和路由规则(自定义CRD)
- 转化为 EnvoyFilter yaml 从而让 pilot 识别