Envoy动态更新配置方案设计
1. 背景 目前集成了技术中台SideCar镜像部署的产品,并且产品在API集市管理,产品提供者通过在API集市中动态修改Envoy配置,无法实现动态更新,目前是重启容器的方式从API集市拉取最新Envoy配置。 2. 目标 在线修改指定产品的Envoy配置文件,在不重启SideCar容器的情况下动态更新到指定容器的Envoy配置并且Envoy功能正常。 3. XDS介绍 3.1. 客户端配置 在Envoy中主要是两个方面的配置,一个是Listeners资源,一个是Clusters资源。这两个资源怎么连接ADS服务,那就需要通过xDS协议进行 客户端与管理服务器的通信。 3.2. XDS协议 下面是阅读 xds_protocol 做的摘要,如有冲突已原文为准。 每个xDS流都开始于 DiscoveryRequest ,请求指定订阅的资源列表,资源对应类型URL,节点标识ID和版本信息。 Envoy动态更新配置时序图如下图: API Market Management Server Envoy Client update envoy config (V=, R={foo}, N=, T=EDS) (V=X, R={foo:...}, N=A, T=EDS) (V=X, R={foo}, N=A, T=EDS) API Market Management Server Envoy