1 - LDS版本演进
介绍LDS在各个版本中的演进
LDS定义
LDS v1
TODO:LDS v1的定义在哪里?
LDS v2
https://github.com/envoyproxy/envoy/blob/master/api/envoy/api/v2/lds.proto
// Envoy实例在启动时发起一个RPC,以发现监听器列表。
// 更新是通过LDS服务器的流式传输的,包括所有监听器的完整更新。
// 监听器不再存在时,现有的连接将被允许剔除。
service ListenerDiscoveryService {
option (envoy.annotations.resource).type = "envoy.api.v2.Listener";
rpc DeltaListeners(stream DeltaDiscoveryRequest) returns (stream DeltaDiscoveryResponse) {
}
rpc StreamListeners(stream DiscoveryRequest) returns (stream DiscoveryResponse) {
}
rpc FetchListeners(DiscoveryRequest) returns (DiscoveryResponse) {
option (google.api.http).post = "/v2/discovery:listeners";
option (google.api.http).body = "*";
}
}
LDS v3
https://github.com/envoyproxy/envoy/blob/main/api/envoy/service/listener/v3/lds.proto
// Envoy实例在启动时发起一个RPC,以发现监听器列表。
// 更新是通过LDS服务器的流式传输的,包括所有监听器的完整更新。
// 监听器不再存在时,现有的连接将被允许剔除。
service ListenerDiscoveryService {
option (envoy.annotations.resource).type = "envoy.config.listener.v3.Listener";
rpc DeltaListeners(stream discovery.v3.DeltaDiscoveryRequest)
returns (stream discovery.v3.DeltaDiscoveryResponse) {
}
rpc StreamListeners(stream discovery.v3.DiscoveryRequest)
returns (stream discovery.v3.DiscoveryResponse) {
}
rpc FetchListeners(discovery.v3.DiscoveryRequest) returns (discovery.v3.DiscoveryResponse) {
option (google.api.http).post = "/v3/discovery:listeners";
option (google.api.http).body = "*";
}
}
和 LDS v2 API相比:
- option type 从
envoy.api.v2.Listener
修改为envoy.config.listener.v3.Listener
- 各种message定义都增加了
discovery.v3
的前缀
相关消息体的定义
DeltaDiscoveryRequest