-
Notifications
You must be signed in to change notification settings - Fork 4.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
admin/xDS: prepare for full /config_dump and version support
This change does several things: 1) Clarifies how we handle xDS version_info in responses and sets us up for both top-level/transactional versions as well as per-resource versions in the future. 2) Moves the config_dump admin endpoint to the v2alpha namespace so that we can iterate on it in the future. 3) Fills out the config dump proto for the remaining resource types. These are not implemented but are here to force a discussion about how we want to handle versions moving forward. 4) Fixes RDS static config dump to actually work and add better tests. 5) Wire up version for the RDS config dump on a per-resource basis. Once we agree on the general version semantics I will be following up with dump capability of the remaining resource types. Part of #2421 Part of #2172 Fixes #3141 Signed-off-by: Matt Klein <[email protected]>
- Loading branch information
1 parent
d8d089a
commit df81052
Showing
45 changed files
with
385 additions
and
329 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,118 @@ | ||
syntax = "proto3"; | ||
|
||
package envoy.admin.v2alpha; | ||
|
||
import "envoy/api/v2/cds.proto"; | ||
import "envoy/api/v2/lds.proto"; | ||
import "envoy/api/v2/rds.proto"; | ||
import "envoy/config/bootstrap/v2/bootstrap.proto"; | ||
|
||
import "google/protobuf/any.proto"; | ||
|
||
import "gogoproto/gogo.proto"; | ||
|
||
// [#protodoc-title: ConfigDump] | ||
|
||
// The /config_dump admin endpoint uses this wrapper message to maintain and serve arbitrary | ||
// configuration information from any component in Envoy. | ||
// TODO(jsedgwick) In the future, we may want to formalize this further with an RPC for config_dump, | ||
// and perhaps even with an RPC per config type. That strategy across all endpoints will allow for | ||
// more flexibility w.r.t. protocol, serialization, parameters, etc. | ||
message ConfigDump { | ||
// This map is serialized and dumped in its entirety at the /config_dump endpoint. | ||
// | ||
// Keys should be a short descriptor of the config object they map to. For example, Envoy's HTTP | ||
// routing subsystem might use "routes" as the key for its config, for which it uses the message | ||
// RouteConfigDump as defined below. In the future, the key will also be used to filter the output | ||
// of the /config_dump endpoint. | ||
map<string, google.protobuf.Any> configs = 1 [(gogoproto.nullable) = false]; | ||
} | ||
|
||
// This message describes the bootstrap configuration that Envoy was started with. This includes | ||
// any CLI overrides that were merged. | ||
message BootstrapConfigDump { | ||
envoy.config.bootstrap.v2.Bootstrap bootstrap = 1 [(gogoproto.nullable) = false]; | ||
} | ||
|
||
// Envoy's listener manager fills this message with all currently known listeners. | ||
message ListenersConfigDump { | ||
// This is the top level, "transactional," version information in the last processed LDS | ||
// discovery response. If there are only static bootstrap listeners, this field will be "". | ||
string version_info = 1; | ||
|
||
// Describes a dynamically loaded cluster via the LDS API. | ||
message DynamicListener { | ||
// This is the top level, "transactional," version information in the last processed LDS | ||
// discovery response. If there are only static bootstrap listeners, this field will be "". | ||
string version_info = 1; | ||
|
||
// The listener config. | ||
envoy.api.v2.Listener listener = 2; | ||
} | ||
|
||
// The statically loaded listener configs. | ||
repeated envoy.api.v2.Listener static_listeners = 2 [(gogoproto.nullable) = false]; | ||
|
||
// The dynamically loaded active listeners These are listeners that are available to service | ||
// data plane traffic. | ||
repeated DynamicListener dynamic_active_listeners = 3 [(gogoproto.nullable) = false]; | ||
|
||
// The dynamically loaded warming listeners These are listeners that are currently undergoing | ||
// warming in preparation to service data plane traffic. | ||
repeated DynamicListener dynamic_warming_listeners = 4 [(gogoproto.nullable) = false]; | ||
|
||
// The dynamically loaded draining listeners These are listeners that are currently undergoing | ||
// draining in preparation to stop servicing data plane traffic. | ||
repeated DynamicListener dynamic_draining_listeners = 5 [(gogoproto.nullable) = false]; | ||
} | ||
|
||
// Envoy's cluster manager fills this message with all currently known clusters. | ||
message ClustersConfigDump { | ||
// This is the top level, "transactional," version information in the last processed CDS | ||
// discovery response. If there are only static bootstrap clusters, this field will be "". | ||
string version_info = 1; | ||
|
||
// Describes a dynamically loaded cluster via the CDS API. | ||
message DynamicCluster { | ||
// This is the per-resource version information. This version is currently taken from the | ||
// transactional version_info field at the time that the cluster was loaded. In the future, | ||
// discrete per cluster versions may be supported by the API. | ||
string version_info = 1; | ||
|
||
// The cluster config. | ||
envoy.api.v2.Cluster cluster = 2; | ||
} | ||
|
||
// The statically loaded cluster configs. | ||
repeated envoy.api.v2.Cluster static_clusters = 2 [(gogoproto.nullable) = false]; | ||
|
||
// The dynamically loaded active clusters. These are clusters that are available to service | ||
// data plane traffic. | ||
repeated DynamicCluster dynamic_active_clusters = 3 [(gogoproto.nullable) = false]; | ||
|
||
// The dynamically loaded warming clusters. These are clusters that are currently undergoing | ||
// warming in preparation to service data plane traffic. | ||
repeated DynamicCluster dynamic_warming_clusters = 4 [(gogoproto.nullable) = false]; | ||
} | ||
|
||
// Envoy's RDS implementation fills this message with all currently loaded routes, as described by | ||
// their RouteConfiguration objects. Static routes configured in the bootstrap configuration are | ||
// separated from those configured dynamically via RDS. | ||
message RoutesConfigDump { | ||
message DynamicRouteConfig { | ||
// This is the per-resource version information. This version is currently taken from the | ||
// transactional version_info field in the RDS response at the time that the route was loaded. | ||
// Note that *RoutesConfigDump* does not contain a top-level transactional *version_info* | ||
// field as every RDS subscription is discrete. | ||
string version_info = 1; | ||
|
||
// The route config. | ||
envoy.api.v2.RouteConfiguration route_config = 2; | ||
} | ||
|
||
// The statically loaded route configs. | ||
repeated envoy.api.v2.RouteConfiguration static_route_configs = 2 [(gogoproto.nullable) = false]; | ||
|
||
// The dynamically loaded route configs. | ||
repeated DynamicRouteConfig dynamic_route_configs = 3 [(gogoproto.nullable) = false]; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.