LDS API的概述
介绍LDS API的服务定义和参数说明
LDS服务定义
LDS的服务定义如下:
https://github.com/envoyproxy/envoy/blob/main/api/envoy/service/listener/v3/lds.proto
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 = "*";
}
}
请求参数
对于 DeltaDiscoveryRequest 和 DiscoveryRequest,请求参数中的 type_url 字段的取值是 “type.googleapis.com/envoy.config.listener.v3.Listener” (或者隐含)。
应答参数
对于 DiscoveryResponse 和 DeltaDiscoveryResponse,返回的资源类型被抽象为 google.protobuf.Any
,对于LDS返回的实际是 Listener 这个消息体,定义在 api/envoy/config/listener/v3/listener.proto
文件中:
package envoy.config.listener.v3;
message Listener {
string name = 1;
core.v3.Address address = 2 [(validate.rules).message = {required: true}];
repeated FilterChain filter_chains = 3;
repeated ListenerFilter listener_filters = 9;
......
}
详细的字段定义请见后续的详细解说。