api: deprecate the node.listening_addresses field (#12691)
This was added for gRPC server support, but we've decided to use resource names instead to explicitly request the listeners we want by name. This is more in-line with the new naming scheme described in the "xDS Transport Next Steps" design. Signed-off-by: Mark D. Roth <roth@google.com> Mirrored from https://github.com/envoyproxy/envoy @ 05cbb309b828dc86737c51fd2c79d30e48e397a4master-ci-test
parent
8c0fe46243
commit
5f5280738e
20 changed files with 801 additions and 26 deletions
@ -0,0 +1,15 @@ |
|||||||
|
# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py. |
||||||
|
|
||||||
|
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package") |
||||||
|
|
||||||
|
licenses(["notice"]) # Apache 2 |
||||||
|
|
||||||
|
api_proto_package( |
||||||
|
has_services = True, |
||||||
|
deps = [ |
||||||
|
"//envoy/config/core/v4alpha:pkg", |
||||||
|
"//envoy/data/accesslog/v3:pkg", |
||||||
|
"//envoy/service/accesslog/v3:pkg", |
||||||
|
"@com_github_cncf_udpa//udpa/annotations:pkg", |
||||||
|
], |
||||||
|
) |
@ -0,0 +1,87 @@ |
|||||||
|
syntax = "proto3"; |
||||||
|
|
||||||
|
package envoy.service.accesslog.v4alpha; |
||||||
|
|
||||||
|
import "envoy/config/core/v4alpha/base.proto"; |
||||||
|
import "envoy/data/accesslog/v3/accesslog.proto"; |
||||||
|
|
||||||
|
import "udpa/annotations/status.proto"; |
||||||
|
import "udpa/annotations/versioning.proto"; |
||||||
|
import "validate/validate.proto"; |
||||||
|
|
||||||
|
option java_package = "io.envoyproxy.envoy.service.accesslog.v4alpha"; |
||||||
|
option java_outer_classname = "AlsProto"; |
||||||
|
option java_multiple_files = true; |
||||||
|
option java_generic_services = true; |
||||||
|
option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE; |
||||||
|
|
||||||
|
// [#protodoc-title: gRPC Access Log Service (ALS)] |
||||||
|
|
||||||
|
// Service for streaming access logs from Envoy to an access log server. |
||||||
|
service AccessLogService { |
||||||
|
// Envoy will connect and send StreamAccessLogsMessage messages forever. It does not expect any |
||||||
|
// response to be sent as nothing would be done in the case of failure. The server should |
||||||
|
// disconnect if it expects Envoy to reconnect. In the future we may decide to add a different |
||||||
|
// API for "critical" access logs in which Envoy will buffer access logs for some period of time |
||||||
|
// until it gets an ACK so it could then retry. This API is designed for high throughput with the |
||||||
|
// expectation that it might be lossy. |
||||||
|
rpc StreamAccessLogs(stream StreamAccessLogsMessage) returns (StreamAccessLogsResponse) { |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// Empty response for the StreamAccessLogs API. Will never be sent. See below. |
||||||
|
message StreamAccessLogsResponse { |
||||||
|
option (udpa.annotations.versioning).previous_message_type = |
||||||
|
"envoy.service.accesslog.v3.StreamAccessLogsResponse"; |
||||||
|
} |
||||||
|
|
||||||
|
// Stream message for the StreamAccessLogs API. Envoy will open a stream to the server and stream |
||||||
|
// access logs without ever expecting a response. |
||||||
|
message StreamAccessLogsMessage { |
||||||
|
option (udpa.annotations.versioning).previous_message_type = |
||||||
|
"envoy.service.accesslog.v3.StreamAccessLogsMessage"; |
||||||
|
|
||||||
|
message Identifier { |
||||||
|
option (udpa.annotations.versioning).previous_message_type = |
||||||
|
"envoy.service.accesslog.v3.StreamAccessLogsMessage.Identifier"; |
||||||
|
|
||||||
|
// The node sending the access log messages over the stream. |
||||||
|
config.core.v4alpha.Node node = 1 [(validate.rules).message = {required: true}]; |
||||||
|
|
||||||
|
// The friendly name of the log configured in :ref:`CommonGrpcAccessLogConfig |
||||||
|
// <envoy_api_msg_extensions.access_loggers.grpc.v3.CommonGrpcAccessLogConfig>`. |
||||||
|
string log_name = 2 [(validate.rules).string = {min_bytes: 1}]; |
||||||
|
} |
||||||
|
|
||||||
|
// Wrapper for batches of HTTP access log entries. |
||||||
|
message HTTPAccessLogEntries { |
||||||
|
option (udpa.annotations.versioning).previous_message_type = |
||||||
|
"envoy.service.accesslog.v3.StreamAccessLogsMessage.HTTPAccessLogEntries"; |
||||||
|
|
||||||
|
repeated data.accesslog.v3.HTTPAccessLogEntry log_entry = 1 |
||||||
|
[(validate.rules).repeated = {min_items: 1}]; |
||||||
|
} |
||||||
|
|
||||||
|
// Wrapper for batches of TCP access log entries. |
||||||
|
message TCPAccessLogEntries { |
||||||
|
option (udpa.annotations.versioning).previous_message_type = |
||||||
|
"envoy.service.accesslog.v3.StreamAccessLogsMessage.TCPAccessLogEntries"; |
||||||
|
|
||||||
|
repeated data.accesslog.v3.TCPAccessLogEntry log_entry = 1 |
||||||
|
[(validate.rules).repeated = {min_items: 1}]; |
||||||
|
} |
||||||
|
|
||||||
|
// Identifier data that will only be sent in the first message on the stream. This is effectively |
||||||
|
// structured metadata and is a performance optimization. |
||||||
|
Identifier identifier = 1; |
||||||
|
|
||||||
|
// Batches of log entries of a single type. Generally speaking, a given stream should only |
||||||
|
// ever include one type of log entry. |
||||||
|
oneof log_entries { |
||||||
|
option (validate.required) = true; |
||||||
|
|
||||||
|
HTTPAccessLogEntries http_logs = 2; |
||||||
|
|
||||||
|
TCPAccessLogEntries tcp_logs = 3; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,15 @@ |
|||||||
|
# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py. |
||||||
|
|
||||||
|
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package") |
||||||
|
|
||||||
|
licenses(["notice"]) # Apache 2 |
||||||
|
|
||||||
|
api_proto_package( |
||||||
|
has_services = True, |
||||||
|
deps = [ |
||||||
|
"//envoy/config/core/v4alpha:pkg", |
||||||
|
"//envoy/service/discovery/v3:pkg", |
||||||
|
"@com_github_cncf_udpa//udpa/annotations:pkg", |
||||||
|
"@com_github_cncf_udpa//udpa/core/v1:pkg", |
||||||
|
], |
||||||
|
) |
@ -0,0 +1,44 @@ |
|||||||
|
syntax = "proto3"; |
||||||
|
|
||||||
|
package envoy.service.discovery.v4alpha; |
||||||
|
|
||||||
|
import "envoy/service/discovery/v4alpha/discovery.proto"; |
||||||
|
|
||||||
|
import "udpa/annotations/status.proto"; |
||||||
|
import "udpa/annotations/versioning.proto"; |
||||||
|
|
||||||
|
option java_package = "io.envoyproxy.envoy.service.discovery.v4alpha"; |
||||||
|
option java_outer_classname = "AdsProto"; |
||||||
|
option java_multiple_files = true; |
||||||
|
option java_generic_services = true; |
||||||
|
option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE; |
||||||
|
|
||||||
|
// [#protodoc-title: Aggregated Discovery Service (ADS)] |
||||||
|
|
||||||
|
// [#not-implemented-hide:] Discovery services for endpoints, clusters, routes, |
||||||
|
// and listeners are retained in the package `envoy.api.v2` for backwards |
||||||
|
// compatibility with existing management servers. New development in discovery |
||||||
|
// services should proceed in the package `envoy.service.discovery.v2`. |
||||||
|
|
||||||
|
// See https://github.com/lyft/envoy-api#apis for a description of the role of |
||||||
|
// ADS and how it is intended to be used by a management server. ADS requests |
||||||
|
// have the same structure as their singleton xDS counterparts, but can |
||||||
|
// multiplex many resource types on a single stream. The type_url in the |
||||||
|
// DiscoveryRequest/DiscoveryResponse provides sufficient information to recover |
||||||
|
// the multiplexed singleton APIs at the Envoy instance and management server. |
||||||
|
service AggregatedDiscoveryService { |
||||||
|
// This is a gRPC-only API. |
||||||
|
rpc StreamAggregatedResources(stream DiscoveryRequest) returns (stream DiscoveryResponse) { |
||||||
|
} |
||||||
|
|
||||||
|
rpc DeltaAggregatedResources(stream DeltaDiscoveryRequest) |
||||||
|
returns (stream DeltaDiscoveryResponse) { |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// [#not-implemented-hide:] Not configuration. Workaround c++ protobuf issue with importing |
||||||
|
// services: https://github.com/google/protobuf/issues/4221 |
||||||
|
message AdsDummy { |
||||||
|
option (udpa.annotations.versioning).previous_message_type = |
||||||
|
"envoy.service.discovery.v3.AdsDummy"; |
||||||
|
} |
@ -0,0 +1,279 @@ |
|||||||
|
syntax = "proto3"; |
||||||
|
|
||||||
|
package envoy.service.discovery.v4alpha; |
||||||
|
|
||||||
|
import "envoy/config/core/v4alpha/base.proto"; |
||||||
|
|
||||||
|
import "google/protobuf/any.proto"; |
||||||
|
import "google/rpc/status.proto"; |
||||||
|
|
||||||
|
import "udpa/core/v1/resource_locator.proto"; |
||||||
|
import "udpa/core/v1/resource_name.proto"; |
||||||
|
|
||||||
|
import "udpa/annotations/status.proto"; |
||||||
|
import "udpa/annotations/versioning.proto"; |
||||||
|
|
||||||
|
option java_package = "io.envoyproxy.envoy.service.discovery.v4alpha"; |
||||||
|
option java_outer_classname = "DiscoveryProto"; |
||||||
|
option java_multiple_files = true; |
||||||
|
option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE; |
||||||
|
|
||||||
|
// [#protodoc-title: Common discovery API components] |
||||||
|
|
||||||
|
// A DiscoveryRequest requests a set of versioned resources of the same type for |
||||||
|
// a given Envoy node on some API. |
||||||
|
// [#next-free-field: 7] |
||||||
|
message DiscoveryRequest { |
||||||
|
option (udpa.annotations.versioning).previous_message_type = |
||||||
|
"envoy.service.discovery.v3.DiscoveryRequest"; |
||||||
|
|
||||||
|
// The version_info provided in the request messages will be the version_info |
||||||
|
// received with the most recent successfully processed response or empty on |
||||||
|
// the first request. It is expected that no new request is sent after a |
||||||
|
// response is received until the Envoy instance is ready to ACK/NACK the new |
||||||
|
// configuration. ACK/NACK takes place by returning the new API config version |
||||||
|
// as applied or the previous API config version respectively. Each type_url |
||||||
|
// (see below) has an independent version associated with it. |
||||||
|
string version_info = 1; |
||||||
|
|
||||||
|
// The node making the request. |
||||||
|
config.core.v4alpha.Node node = 2; |
||||||
|
|
||||||
|
// List of resources to subscribe to, e.g. list of cluster names or a route |
||||||
|
// configuration name. If this is empty, all resources for the API are |
||||||
|
// returned. LDS/CDS may have empty resource_names, which will cause all |
||||||
|
// resources for the Envoy instance to be returned. The LDS and CDS responses |
||||||
|
// will then imply a number of resources that need to be fetched via EDS/RDS, |
||||||
|
// which will be explicitly enumerated in resource_names. |
||||||
|
repeated string resource_names = 3; |
||||||
|
|
||||||
|
// Type of the resource that is being requested, e.g. |
||||||
|
// "type.googleapis.com/envoy.api.v2.ClusterLoadAssignment". This is implicit |
||||||
|
// in requests made via singleton xDS APIs such as CDS, LDS, etc. but is |
||||||
|
// required for ADS. |
||||||
|
string type_url = 4; |
||||||
|
|
||||||
|
// nonce corresponding to DiscoveryResponse being ACK/NACKed. See above |
||||||
|
// discussion on version_info and the DiscoveryResponse nonce comment. This |
||||||
|
// may be empty only if 1) this is a non-persistent-stream xDS such as HTTP, |
||||||
|
// or 2) the client has not yet accepted an update in this xDS stream (unlike |
||||||
|
// delta, where it is populated only for new explicit ACKs). |
||||||
|
string response_nonce = 5; |
||||||
|
|
||||||
|
// This is populated when the previous :ref:`DiscoveryResponse <envoy_api_msg_service.discovery.v4alpha.DiscoveryResponse>` |
||||||
|
// failed to update configuration. The *message* field in *error_details* provides the Envoy |
||||||
|
// internal exception related to the failure. It is only intended for consumption during manual |
||||||
|
// debugging, the string provided is not guaranteed to be stable across Envoy versions. |
||||||
|
google.rpc.Status error_detail = 6; |
||||||
|
} |
||||||
|
|
||||||
|
// [#next-free-field: 7] |
||||||
|
message DiscoveryResponse { |
||||||
|
option (udpa.annotations.versioning).previous_message_type = |
||||||
|
"envoy.service.discovery.v3.DiscoveryResponse"; |
||||||
|
|
||||||
|
// The version of the response data. |
||||||
|
string version_info = 1; |
||||||
|
|
||||||
|
// The response resources. These resources are typed and depend on the API being called. |
||||||
|
repeated google.protobuf.Any resources = 2; |
||||||
|
|
||||||
|
// [#not-implemented-hide:] |
||||||
|
// Canary is used to support two Envoy command line flags: |
||||||
|
// |
||||||
|
// * --terminate-on-canary-transition-failure. When set, Envoy is able to |
||||||
|
// terminate if it detects that configuration is stuck at canary. Consider |
||||||
|
// this example sequence of updates: |
||||||
|
// - Management server applies a canary config successfully. |
||||||
|
// - Management server rolls back to a production config. |
||||||
|
// - Envoy rejects the new production config. |
||||||
|
// Since there is no sensible way to continue receiving configuration |
||||||
|
// updates, Envoy will then terminate and apply production config from a |
||||||
|
// clean slate. |
||||||
|
// * --dry-run-canary. When set, a canary response will never be applied, only |
||||||
|
// validated via a dry run. |
||||||
|
bool canary = 3; |
||||||
|
|
||||||
|
// Type URL for resources. Identifies the xDS API when muxing over ADS. |
||||||
|
// Must be consistent with the type_url in the 'resources' repeated Any (if non-empty). |
||||||
|
string type_url = 4; |
||||||
|
|
||||||
|
// For gRPC based subscriptions, the nonce provides a way to explicitly ack a |
||||||
|
// specific DiscoveryResponse in a following DiscoveryRequest. Additional |
||||||
|
// messages may have been sent by Envoy to the management server for the |
||||||
|
// previous version on the stream prior to this DiscoveryResponse, that were |
||||||
|
// unprocessed at response send time. The nonce allows the management server |
||||||
|
// to ignore any further DiscoveryRequests for the previous version until a |
||||||
|
// DiscoveryRequest bearing the nonce. The nonce is optional and is not |
||||||
|
// required for non-stream based xDS implementations. |
||||||
|
string nonce = 5; |
||||||
|
|
||||||
|
// [#not-implemented-hide:] |
||||||
|
// The control plane instance that sent the response. |
||||||
|
config.core.v4alpha.ControlPlane control_plane = 6; |
||||||
|
} |
||||||
|
|
||||||
|
// DeltaDiscoveryRequest and DeltaDiscoveryResponse are used in a new gRPC |
||||||
|
// endpoint for Delta xDS. |
||||||
|
// |
||||||
|
// With Delta xDS, the DeltaDiscoveryResponses do not need to include a full |
||||||
|
// snapshot of the tracked resources. Instead, DeltaDiscoveryResponses are a |
||||||
|
// diff to the state of a xDS client. |
||||||
|
// In Delta XDS there are per-resource versions, which allow tracking state at |
||||||
|
// the resource granularity. |
||||||
|
// An xDS Delta session is always in the context of a gRPC bidirectional |
||||||
|
// stream. This allows the xDS server to keep track of the state of xDS clients |
||||||
|
// connected to it. |
||||||
|
// |
||||||
|
// In Delta xDS the nonce field is required and used to pair |
||||||
|
// DeltaDiscoveryResponse to a DeltaDiscoveryRequest ACK or NACK. |
||||||
|
// Optionally, a response message level system_version_info is present for |
||||||
|
// debugging purposes only. |
||||||
|
// |
||||||
|
// DeltaDiscoveryRequest plays two independent roles. Any DeltaDiscoveryRequest |
||||||
|
// can be either or both of: [1] informing the server of what resources the |
||||||
|
// client has gained/lost interest in (using resource_names_subscribe and |
||||||
|
// resource_names_unsubscribe), or [2] (N)ACKing an earlier resource update from |
||||||
|
// the server (using response_nonce, with presence of error_detail making it a NACK). |
||||||
|
// Additionally, the first message (for a given type_url) of a reconnected gRPC stream |
||||||
|
// has a third role: informing the server of the resources (and their versions) |
||||||
|
// that the client already possesses, using the initial_resource_versions field. |
||||||
|
// |
||||||
|
// As with state-of-the-world, when multiple resource types are multiplexed (ADS), |
||||||
|
// all requests/acknowledgments/updates are logically walled off by type_url: |
||||||
|
// a Cluster ACK exists in a completely separate world from a prior Route NACK. |
||||||
|
// In particular, initial_resource_versions being sent at the "start" of every |
||||||
|
// gRPC stream actually entails a message for each type_url, each with its own |
||||||
|
// initial_resource_versions. |
||||||
|
// [#next-free-field: 10] |
||||||
|
message DeltaDiscoveryRequest { |
||||||
|
option (udpa.annotations.versioning).previous_message_type = |
||||||
|
"envoy.service.discovery.v3.DeltaDiscoveryRequest"; |
||||||
|
|
||||||
|
// The node making the request. |
||||||
|
config.core.v4alpha.Node node = 1; |
||||||
|
|
||||||
|
// Type of the resource that is being requested, e.g. |
||||||
|
// "type.googleapis.com/envoy.api.v2.ClusterLoadAssignment". This does not need to be set if |
||||||
|
// resources are only referenced via *udpa_resource_subscribe* and |
||||||
|
// *udpa_resources_unsubscribe*. |
||||||
|
string type_url = 2; |
||||||
|
|
||||||
|
// DeltaDiscoveryRequests allow the client to add or remove individual |
||||||
|
// resources to the set of tracked resources in the context of a stream. |
||||||
|
// All resource names in the resource_names_subscribe list are added to the |
||||||
|
// set of tracked resources and all resource names in the resource_names_unsubscribe |
||||||
|
// list are removed from the set of tracked resources. |
||||||
|
// |
||||||
|
// *Unlike* state-of-the-world xDS, an empty resource_names_subscribe or |
||||||
|
// resource_names_unsubscribe list simply means that no resources are to be |
||||||
|
// added or removed to the resource list. |
||||||
|
// *Like* state-of-the-world xDS, the server must send updates for all tracked |
||||||
|
// resources, but can also send updates for resources the client has not subscribed to. |
||||||
|
// |
||||||
|
// NOTE: the server must respond with all resources listed in resource_names_subscribe, |
||||||
|
// even if it believes the client has the most recent version of them. The reason: |
||||||
|
// the client may have dropped them, but then regained interest before it had a chance |
||||||
|
// to send the unsubscribe message. See DeltaSubscriptionStateTest.RemoveThenAdd. |
||||||
|
// |
||||||
|
// These two fields can be set in any DeltaDiscoveryRequest, including ACKs |
||||||
|
// and initial_resource_versions. |
||||||
|
// |
||||||
|
// A list of Resource names to add to the list of tracked resources. |
||||||
|
repeated string resource_names_subscribe = 3; |
||||||
|
|
||||||
|
// As with *resource_names_subscribe* but used when subscribing to resources indicated |
||||||
|
// by a *udpa.core.v1.ResourceLocator*. The directives in the resource locator |
||||||
|
// are ignored and the context parameters are matched with |
||||||
|
// *context_param_specifier* specific semantics. |
||||||
|
// [#not-implemented-hide:] |
||||||
|
repeated udpa.core.v1.ResourceLocator udpa_resources_subscribe = 8; |
||||||
|
|
||||||
|
// A list of Resource names to remove from the list of tracked resources. |
||||||
|
repeated string resource_names_unsubscribe = 4; |
||||||
|
|
||||||
|
// As with *resource_names_unsubscribe* but used when unsubscribing to resources indicated by a |
||||||
|
// *udpa.core.v1.ResourceLocator*. This must match a previously subscribed |
||||||
|
// resource locator provided in *udpa_resources_subscribe*. |
||||||
|
// [#not-implemented-hide:] |
||||||
|
repeated udpa.core.v1.ResourceLocator udpa_resources_unsubscribe = 9; |
||||||
|
|
||||||
|
// Informs the server of the versions of the resources the xDS client knows of, to enable the |
||||||
|
// client to continue the same logical xDS session even in the face of gRPC stream reconnection. |
||||||
|
// It will not be populated: [1] in the very first stream of a session, since the client will |
||||||
|
// not yet have any resources, [2] in any message after the first in a stream (for a given |
||||||
|
// type_url), since the server will already be correctly tracking the client's state. |
||||||
|
// (In ADS, the first message *of each type_url* of a reconnected stream populates this map.) |
||||||
|
// The map's keys are names of xDS resources known to the xDS client. |
||||||
|
// The map's values are opaque resource versions. |
||||||
|
map<string, string> initial_resource_versions = 5; |
||||||
|
|
||||||
|
// When the DeltaDiscoveryRequest is a ACK or NACK message in response |
||||||
|
// to a previous DeltaDiscoveryResponse, the response_nonce must be the |
||||||
|
// nonce in the DeltaDiscoveryResponse. |
||||||
|
// Otherwise (unlike in DiscoveryRequest) response_nonce must be omitted. |
||||||
|
string response_nonce = 6; |
||||||
|
|
||||||
|
// This is populated when the previous :ref:`DiscoveryResponse <envoy_api_msg_service.discovery.v4alpha.DiscoveryResponse>` |
||||||
|
// failed to update configuration. The *message* field in *error_details* |
||||||
|
// provides the Envoy internal exception related to the failure. |
||||||
|
google.rpc.Status error_detail = 7; |
||||||
|
} |
||||||
|
|
||||||
|
// [#next-free-field: 8] |
||||||
|
message DeltaDiscoveryResponse { |
||||||
|
option (udpa.annotations.versioning).previous_message_type = |
||||||
|
"envoy.service.discovery.v3.DeltaDiscoveryResponse"; |
||||||
|
|
||||||
|
// The version of the response data (used for debugging). |
||||||
|
string system_version_info = 1; |
||||||
|
|
||||||
|
// The response resources. These are typed resources, whose types must match |
||||||
|
// the type_url field. |
||||||
|
repeated Resource resources = 2; |
||||||
|
|
||||||
|
// field id 3 IS available! |
||||||
|
|
||||||
|
// Type URL for resources. Identifies the xDS API when muxing over ADS. |
||||||
|
// Must be consistent with the type_url in the Any within 'resources' if 'resources' is non-empty. |
||||||
|
// This does not need to be set if *udpa_removed_resources* is used instead of |
||||||
|
// *removed_resources*. |
||||||
|
string type_url = 4; |
||||||
|
|
||||||
|
// Resources names of resources that have be deleted and to be removed from the xDS Client. |
||||||
|
// Removed resources for missing resources can be ignored. |
||||||
|
repeated string removed_resources = 6; |
||||||
|
|
||||||
|
// As with *removed_resources* but used when a removed resource was named in |
||||||
|
// its *Resource*s with a *udpa.core.v1.ResourceName*. |
||||||
|
// [#not-implemented-hide:] |
||||||
|
repeated udpa.core.v1.ResourceName udpa_removed_resources = 7; |
||||||
|
|
||||||
|
// The nonce provides a way for DeltaDiscoveryRequests to uniquely |
||||||
|
// reference a DeltaDiscoveryResponse when (N)ACKing. The nonce is required. |
||||||
|
string nonce = 5; |
||||||
|
} |
||||||
|
|
||||||
|
// [#next-free-field: 6] |
||||||
|
message Resource { |
||||||
|
option (udpa.annotations.versioning).previous_message_type = |
||||||
|
"envoy.service.discovery.v3.Resource"; |
||||||
|
|
||||||
|
oneof name_specifier { |
||||||
|
// The resource's name, to distinguish it from others of the same type of resource. |
||||||
|
string name = 3; |
||||||
|
|
||||||
|
// Used instead of *name* when a resource with a *udpa.core.v1.ResourceName* is delivered. |
||||||
|
udpa.core.v1.ResourceName udpa_resource_name = 5; |
||||||
|
} |
||||||
|
|
||||||
|
// The aliases are a list of other names that this resource can go by. |
||||||
|
repeated string aliases = 4; |
||||||
|
|
||||||
|
// The resource level version. It allows xDS to track the state of individual |
||||||
|
// resources. |
||||||
|
string version = 1; |
||||||
|
|
||||||
|
// The resource being tracked. |
||||||
|
google.protobuf.Any resource = 2; |
||||||
|
} |
@ -0,0 +1,14 @@ |
|||||||
|
# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py. |
||||||
|
|
||||||
|
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package") |
||||||
|
|
||||||
|
licenses(["notice"]) # Apache 2 |
||||||
|
|
||||||
|
api_proto_package( |
||||||
|
has_services = True, |
||||||
|
deps = [ |
||||||
|
"//envoy/config/core/v4alpha:pkg", |
||||||
|
"//envoy/service/event_reporting/v3:pkg", |
||||||
|
"@com_github_cncf_udpa//udpa/annotations:pkg", |
||||||
|
], |
||||||
|
) |
@ -0,0 +1,69 @@ |
|||||||
|
syntax = "proto3"; |
||||||
|
|
||||||
|
package envoy.service.event_reporting.v4alpha; |
||||||
|
|
||||||
|
import "envoy/config/core/v4alpha/base.proto"; |
||||||
|
|
||||||
|
import "google/protobuf/any.proto"; |
||||||
|
|
||||||
|
import "udpa/annotations/status.proto"; |
||||||
|
import "udpa/annotations/versioning.proto"; |
||||||
|
import "validate/validate.proto"; |
||||||
|
|
||||||
|
option java_package = "io.envoyproxy.envoy.service.event_reporting.v4alpha"; |
||||||
|
option java_outer_classname = "EventReportingServiceProto"; |
||||||
|
option java_multiple_files = true; |
||||||
|
option java_generic_services = true; |
||||||
|
option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE; |
||||||
|
|
||||||
|
// [#protodoc-title: gRPC Event Reporting Service] |
||||||
|
|
||||||
|
// [#not-implemented-hide:] |
||||||
|
// Service for streaming different types of events from Envoy to a server. The examples of |
||||||
|
// such events may be health check or outlier detection events. |
||||||
|
service EventReportingService { |
||||||
|
// Envoy will connect and send StreamEventsRequest messages forever. |
||||||
|
// The management server may send StreamEventsResponse to configure event stream. See below. |
||||||
|
// This API is designed for high throughput with the expectation that it might be lossy. |
||||||
|
rpc StreamEvents(stream StreamEventsRequest) returns (stream StreamEventsResponse) { |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// [#not-implemented-hide:] |
||||||
|
// An events envoy sends to the management server. |
||||||
|
message StreamEventsRequest { |
||||||
|
option (udpa.annotations.versioning).previous_message_type = |
||||||
|
"envoy.service.event_reporting.v3.StreamEventsRequest"; |
||||||
|
|
||||||
|
message Identifier { |
||||||
|
option (udpa.annotations.versioning).previous_message_type = |
||||||
|
"envoy.service.event_reporting.v3.StreamEventsRequest.Identifier"; |
||||||
|
|
||||||
|
// The node sending the event messages over the stream. |
||||||
|
config.core.v4alpha.Node node = 1 [(validate.rules).message = {required: true}]; |
||||||
|
} |
||||||
|
|
||||||
|
// Identifier data that will only be sent in the first message on the stream. This is effectively |
||||||
|
// structured metadata and is a performance optimization. |
||||||
|
Identifier identifier = 1; |
||||||
|
|
||||||
|
// Batch of events. When the stream is already active, it will be the events occurred |
||||||
|
// since the last message had been sent. If the server receives unknown event type, it should |
||||||
|
// silently ignore it. |
||||||
|
// |
||||||
|
// The following events are supported: |
||||||
|
// |
||||||
|
// * :ref:`HealthCheckEvent <envoy_api_msg_data.core.v3.HealthCheckEvent>` |
||||||
|
// * :ref:`OutlierDetectionEvent <envoy_api_msg_data.cluster.v3.OutlierDetectionEvent>` |
||||||
|
repeated google.protobuf.Any events = 2 [(validate.rules).repeated = {min_items: 1}]; |
||||||
|
} |
||||||
|
|
||||||
|
// [#not-implemented-hide:] |
||||||
|
// The management server may send envoy a StreamEventsResponse to tell which events the server |
||||||
|
// is interested in. In future, with aggregated event reporting service, this message will |
||||||
|
// contain, for example, clusters the envoy should send events for, or event types the server |
||||||
|
// wants to process. |
||||||
|
message StreamEventsResponse { |
||||||
|
option (udpa.annotations.versioning).previous_message_type = |
||||||
|
"envoy.service.event_reporting.v3.StreamEventsResponse"; |
||||||
|
} |
@ -0,0 +1,15 @@ |
|||||||
|
# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py. |
||||||
|
|
||||||
|
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package") |
||||||
|
|
||||||
|
licenses(["notice"]) # Apache 2 |
||||||
|
|
||||||
|
api_proto_package( |
||||||
|
has_services = True, |
||||||
|
deps = [ |
||||||
|
"//envoy/config/core/v4alpha:pkg", |
||||||
|
"//envoy/config/endpoint/v3:pkg", |
||||||
|
"//envoy/service/load_stats/v3:pkg", |
||||||
|
"@com_github_cncf_udpa//udpa/annotations:pkg", |
||||||
|
], |
||||||
|
) |
@ -0,0 +1,103 @@ |
|||||||
|
syntax = "proto3"; |
||||||
|
|
||||||
|
package envoy.service.load_stats.v4alpha; |
||||||
|
|
||||||
|
import "envoy/config/core/v4alpha/base.proto"; |
||||||
|
import "envoy/config/endpoint/v3/load_report.proto"; |
||||||
|
|
||||||
|
import "google/protobuf/duration.proto"; |
||||||
|
|
||||||
|
import "udpa/annotations/status.proto"; |
||||||
|
import "udpa/annotations/versioning.proto"; |
||||||
|
import "validate/validate.proto"; |
||||||
|
|
||||||
|
option java_package = "io.envoyproxy.envoy.service.load_stats.v4alpha"; |
||||||
|
option java_outer_classname = "LrsProto"; |
||||||
|
option java_multiple_files = true; |
||||||
|
option java_generic_services = true; |
||||||
|
option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE; |
||||||
|
|
||||||
|
// [#protodoc-title: Load Reporting service (LRS)] |
||||||
|
|
||||||
|
// Load Reporting Service is an Envoy API to emit load reports. Envoy will initiate a bi-directional |
||||||
|
// stream with a management server. Upon connecting, the management server can send a |
||||||
|
// :ref:`LoadStatsResponse <envoy_api_msg_service.load_stats.v4alpha.LoadStatsResponse>` to a node it is |
||||||
|
// interested in getting the load reports for. Envoy in this node will start sending |
||||||
|
// :ref:`LoadStatsRequest <envoy_api_msg_service.load_stats.v4alpha.LoadStatsRequest>`. This is done periodically |
||||||
|
// based on the :ref:`load reporting interval <envoy_api_field_service.load_stats.v4alpha.LoadStatsResponse.load_reporting_interval>` |
||||||
|
// For details, take a look at the :ref:`Load Reporting Service sandbox example <install_sandboxes_load_reporting_service>`. |
||||||
|
|
||||||
|
service LoadReportingService { |
||||||
|
// Advanced API to allow for multi-dimensional load balancing by remote |
||||||
|
// server. For receiving LB assignments, the steps are: |
||||||
|
// 1, The management server is configured with per cluster/zone/load metric |
||||||
|
// capacity configuration. The capacity configuration definition is |
||||||
|
// outside of the scope of this document. |
||||||
|
// 2. Envoy issues a standard {Stream,Fetch}Endpoints request for the clusters |
||||||
|
// to balance. |
||||||
|
// |
||||||
|
// Independently, Envoy will initiate a StreamLoadStats bidi stream with a |
||||||
|
// management server: |
||||||
|
// 1. Once a connection establishes, the management server publishes a |
||||||
|
// LoadStatsResponse for all clusters it is interested in learning load |
||||||
|
// stats about. |
||||||
|
// 2. For each cluster, Envoy load balances incoming traffic to upstream hosts |
||||||
|
// based on per-zone weights and/or per-instance weights (if specified) |
||||||
|
// based on intra-zone LbPolicy. This information comes from the above |
||||||
|
// {Stream,Fetch}Endpoints. |
||||||
|
// 3. When upstream hosts reply, they optionally add header <define header |
||||||
|
// name> with ASCII representation of EndpointLoadMetricStats. |
||||||
|
// 4. Envoy aggregates load reports over the period of time given to it in |
||||||
|
// LoadStatsResponse.load_reporting_interval. This includes aggregation |
||||||
|
// stats Envoy maintains by itself (total_requests, rpc_errors etc.) as |
||||||
|
// well as load metrics from upstream hosts. |
||||||
|
// 5. When the timer of load_reporting_interval expires, Envoy sends new |
||||||
|
// LoadStatsRequest filled with load reports for each cluster. |
||||||
|
// 6. The management server uses the load reports from all reported Envoys |
||||||
|
// from around the world, computes global assignment and prepares traffic |
||||||
|
// assignment destined for each zone Envoys are located in. Goto 2. |
||||||
|
rpc StreamLoadStats(stream LoadStatsRequest) returns (stream LoadStatsResponse) { |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// A load report Envoy sends to the management server. |
||||||
|
message LoadStatsRequest { |
||||||
|
option (udpa.annotations.versioning).previous_message_type = |
||||||
|
"envoy.service.load_stats.v3.LoadStatsRequest"; |
||||||
|
|
||||||
|
// Node identifier for Envoy instance. |
||||||
|
config.core.v4alpha.Node node = 1; |
||||||
|
|
||||||
|
// A list of load stats to report. |
||||||
|
repeated config.endpoint.v3.ClusterStats cluster_stats = 2; |
||||||
|
} |
||||||
|
|
||||||
|
// The management server sends envoy a LoadStatsResponse with all clusters it |
||||||
|
// is interested in learning load stats about. |
||||||
|
message LoadStatsResponse { |
||||||
|
option (udpa.annotations.versioning).previous_message_type = |
||||||
|
"envoy.service.load_stats.v3.LoadStatsResponse"; |
||||||
|
|
||||||
|
// Clusters to report stats for. |
||||||
|
// Not populated if *send_all_clusters* is true. |
||||||
|
repeated string clusters = 1; |
||||||
|
|
||||||
|
// If true, the client should send all clusters it knows about. |
||||||
|
// Only clients that advertise the "envoy.lrs.supports_send_all_clusters" capability in their |
||||||
|
// :ref:`client_features<envoy_api_field_config.core.v4alpha.Node.client_features>` field will honor this field. |
||||||
|
bool send_all_clusters = 4; |
||||||
|
|
||||||
|
// The minimum interval of time to collect stats over. This is only a minimum for two reasons: |
||||||
|
// |
||||||
|
// 1. There may be some delay from when the timer fires until stats sampling occurs. |
||||||
|
// 2. For clusters that were already feature in the previous *LoadStatsResponse*, any traffic |
||||||
|
// that is observed in between the corresponding previous *LoadStatsRequest* and this |
||||||
|
// *LoadStatsResponse* will also be accumulated and billed to the cluster. This avoids a period |
||||||
|
// of inobservability that might otherwise exists between the messages. New clusters are not |
||||||
|
// subject to this consideration. |
||||||
|
google.protobuf.Duration load_reporting_interval = 2; |
||||||
|
|
||||||
|
// Set to *true* if the management server supports endpoint granularity |
||||||
|
// report. |
||||||
|
bool report_endpoint_granularity = 3; |
||||||
|
} |
@ -0,0 +1,15 @@ |
|||||||
|
# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py. |
||||||
|
|
||||||
|
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package") |
||||||
|
|
||||||
|
licenses(["notice"]) # Apache 2 |
||||||
|
|
||||||
|
api_proto_package( |
||||||
|
has_services = True, |
||||||
|
deps = [ |
||||||
|
"//envoy/config/core/v4alpha:pkg", |
||||||
|
"//envoy/service/metrics/v3:pkg", |
||||||
|
"@com_github_cncf_udpa//udpa/annotations:pkg", |
||||||
|
"@prometheus_metrics_model//:client_model", |
||||||
|
], |
||||||
|
) |
@ -0,0 +1,53 @@ |
|||||||
|
syntax = "proto3"; |
||||||
|
|
||||||
|
package envoy.service.metrics.v4alpha; |
||||||
|
|
||||||
|
import "envoy/config/core/v4alpha/base.proto"; |
||||||
|
|
||||||
|
import "metrics.proto"; |
||||||
|
|
||||||
|
import "udpa/annotations/status.proto"; |
||||||
|
import "udpa/annotations/versioning.proto"; |
||||||
|
import "validate/validate.proto"; |
||||||
|
|
||||||
|
option java_package = "io.envoyproxy.envoy.service.metrics.v4alpha"; |
||||||
|
option java_outer_classname = "MetricsServiceProto"; |
||||||
|
option java_multiple_files = true; |
||||||
|
option java_generic_services = true; |
||||||
|
option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE; |
||||||
|
|
||||||
|
// [#protodoc-title: Metrics service] |
||||||
|
|
||||||
|
// Service for streaming metrics to server that consumes the metrics data. It uses Prometheus metric |
||||||
|
// data model as a standard to represent metrics information. |
||||||
|
service MetricsService { |
||||||
|
// Envoy will connect and send StreamMetricsMessage messages forever. It does not expect any |
||||||
|
// response to be sent as nothing would be done in the case of failure. |
||||||
|
rpc StreamMetrics(stream StreamMetricsMessage) returns (StreamMetricsResponse) { |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
message StreamMetricsResponse { |
||||||
|
option (udpa.annotations.versioning).previous_message_type = |
||||||
|
"envoy.service.metrics.v3.StreamMetricsResponse"; |
||||||
|
} |
||||||
|
|
||||||
|
message StreamMetricsMessage { |
||||||
|
option (udpa.annotations.versioning).previous_message_type = |
||||||
|
"envoy.service.metrics.v3.StreamMetricsMessage"; |
||||||
|
|
||||||
|
message Identifier { |
||||||
|
option (udpa.annotations.versioning).previous_message_type = |
||||||
|
"envoy.service.metrics.v3.StreamMetricsMessage.Identifier"; |
||||||
|
|
||||||
|
// The node sending metrics over the stream. |
||||||
|
config.core.v4alpha.Node node = 1 [(validate.rules).message = {required: true}]; |
||||||
|
} |
||||||
|
|
||||||
|
// Identifier data effectively is a structured metadata. As a performance optimization this will |
||||||
|
// only be sent in the first message on the stream. |
||||||
|
Identifier identifier = 1; |
||||||
|
|
||||||
|
// A list of metric entries |
||||||
|
repeated io.prometheus.client.MetricFamily envoy_metrics = 2; |
||||||
|
} |
@ -0,0 +1,15 @@ |
|||||||
|
# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py. |
||||||
|
|
||||||
|
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package") |
||||||
|
|
||||||
|
licenses(["notice"]) # Apache 2 |
||||||
|
|
||||||
|
api_proto_package( |
||||||
|
has_services = True, |
||||||
|
deps = [ |
||||||
|
"//envoy/config/core/v4alpha:pkg", |
||||||
|
"//envoy/service/trace/v3:pkg", |
||||||
|
"@com_github_cncf_udpa//udpa/annotations:pkg", |
||||||
|
"@opencensus_proto//opencensus/proto/trace/v1:trace_proto", |
||||||
|
], |
||||||
|
) |
@ -0,0 +1,57 @@ |
|||||||
|
syntax = "proto3"; |
||||||
|
|
||||||
|
package envoy.service.trace.v4alpha; |
||||||
|
|
||||||
|
import "envoy/config/core/v4alpha/base.proto"; |
||||||
|
|
||||||
|
import "google/api/annotations.proto"; |
||||||
|
|
||||||
|
import "opencensus/proto/trace/v1/trace.proto"; |
||||||
|
|
||||||
|
import "udpa/annotations/status.proto"; |
||||||
|
import "udpa/annotations/versioning.proto"; |
||||||
|
import "validate/validate.proto"; |
||||||
|
|
||||||
|
option java_package = "io.envoyproxy.envoy.service.trace.v4alpha"; |
||||||
|
option java_outer_classname = "TraceServiceProto"; |
||||||
|
option java_multiple_files = true; |
||||||
|
option java_generic_services = true; |
||||||
|
option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE; |
||||||
|
|
||||||
|
// [#protodoc-title: Trace service] |
||||||
|
|
||||||
|
// Service for streaming traces to server that consumes the trace data. It |
||||||
|
// uses OpenCensus data model as a standard to represent trace information. |
||||||
|
service TraceService { |
||||||
|
// Envoy will connect and send StreamTracesMessage messages forever. It does |
||||||
|
// not expect any response to be sent as nothing would be done in the case |
||||||
|
// of failure. |
||||||
|
rpc StreamTraces(stream StreamTracesMessage) returns (StreamTracesResponse) { |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
message StreamTracesResponse { |
||||||
|
option (udpa.annotations.versioning).previous_message_type = |
||||||
|
"envoy.service.trace.v3.StreamTracesResponse"; |
||||||
|
} |
||||||
|
|
||||||
|
message StreamTracesMessage { |
||||||
|
option (udpa.annotations.versioning).previous_message_type = |
||||||
|
"envoy.service.trace.v3.StreamTracesMessage"; |
||||||
|
|
||||||
|
message Identifier { |
||||||
|
option (udpa.annotations.versioning).previous_message_type = |
||||||
|
"envoy.service.trace.v3.StreamTracesMessage.Identifier"; |
||||||
|
|
||||||
|
// The node sending the access log messages over the stream. |
||||||
|
config.core.v4alpha.Node node = 1 [(validate.rules).message = {required: true}]; |
||||||
|
} |
||||||
|
|
||||||
|
// Identifier data effectively is a structured metadata. |
||||||
|
// As a performance optimization this will only be sent in the first message |
||||||
|
// on the stream. |
||||||
|
Identifier identifier = 1; |
||||||
|
|
||||||
|
// A list of Span entries |
||||||
|
repeated opencensus.proto.trace.v1.Span spans = 2; |
||||||
|
} |
Loading…
Reference in new issue