...

Text file src/github.com/datawire/ambassador/v2/api/envoy/config/endpoint/v3/endpoint.proto

Documentation: github.com/datawire/ambassador/v2/api/envoy/config/endpoint/v3

     1syntax = "proto3";
     2
     3package envoy.config.endpoint.v3;
     4
     5import "envoy/config/endpoint/v3/endpoint_components.proto";
     6import "envoy/type/v3/percent.proto";
     7
     8import "google/api/annotations.proto";
     9import "google/protobuf/duration.proto";
    10import "google/protobuf/wrappers.proto";
    11
    12import "udpa/annotations/status.proto";
    13import "udpa/annotations/versioning.proto";
    14import "validate/validate.proto";
    15
    16option java_package = "io.envoyproxy.envoy.config.endpoint.v3";
    17option java_outer_classname = "EndpointProto";
    18option java_multiple_files = true;
    19option (udpa.annotations.file_status).package_version_status = ACTIVE;
    20
    21// [#protodoc-title: Endpoint configuration]
    22// Endpoint discovery :ref:`architecture overview <arch_overview_service_discovery_types_eds>`
    23
    24// Each route from RDS will map to a single cluster or traffic split across
    25// clusters using weights expressed in the RDS WeightedCluster.
    26//
    27// With EDS, each cluster is treated independently from a LB perspective, with
    28// LB taking place between the Localities within a cluster and at a finer
    29// granularity between the hosts within a locality. The percentage of traffic
    30// for each endpoint is determined by both its load_balancing_weight, and the
    31// load_balancing_weight of its locality. First, a locality will be selected,
    32// then an endpoint within that locality will be chose based on its weight.
    33// [#next-free-field: 6]
    34message ClusterLoadAssignment {
    35  option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.ClusterLoadAssignment";
    36
    37  // Load balancing policy settings.
    38  // [#next-free-field: 6]
    39  message Policy {
    40    option (udpa.annotations.versioning).previous_message_type =
    41        "envoy.api.v2.ClusterLoadAssignment.Policy";
    42
    43    // [#not-implemented-hide:]
    44    message DropOverload {
    45      option (udpa.annotations.versioning).previous_message_type =
    46          "envoy.api.v2.ClusterLoadAssignment.Policy.DropOverload";
    47
    48      // Identifier for the policy specifying the drop.
    49      string category = 1 [(validate.rules).string = {min_len: 1}];
    50
    51      // Percentage of traffic that should be dropped for the category.
    52      type.v3.FractionalPercent drop_percentage = 2;
    53    }
    54
    55    reserved 1, 5;
    56
    57    reserved "disable_overprovisioning";
    58
    59    // Action to trim the overall incoming traffic to protect the upstream
    60    // hosts. This action allows protection in case the hosts are unable to
    61    // recover from an outage, or unable to autoscale or unable to handle
    62    // incoming traffic volume for any reason.
    63    //
    64    // At the client each category is applied one after the other to generate
    65    // the 'actual' drop percentage on all outgoing traffic. For example:
    66    //
    67    // .. code-block:: json
    68    //
    69    //  { "drop_overloads": [
    70    //      { "category": "throttle", "drop_percentage": 60 }
    71    //      { "category": "lb", "drop_percentage": 50 }
    72    //  ]}
    73    //
    74    // The actual drop percentages applied to the traffic at the clients will be
    75    //    "throttle"_drop = 60%
    76    //    "lb"_drop = 20%  // 50% of the remaining 'actual' load, which is 40%.
    77    //    actual_outgoing_load = 20% // remaining after applying all categories.
    78    // [#not-implemented-hide:]
    79    repeated DropOverload drop_overloads = 2;
    80
    81    // Priority levels and localities are considered overprovisioned with this
    82    // factor (in percentage). This means that we don't consider a priority
    83    // level or locality unhealthy until the fraction of healthy hosts
    84    // multiplied by the overprovisioning factor drops below 100.
    85    // With the default value 140(1.4), Envoy doesn't consider a priority level
    86    // or a locality unhealthy until their percentage of healthy hosts drops
    87    // below 72%. For example:
    88    //
    89    // .. code-block:: json
    90    //
    91    //  { "overprovisioning_factor": 100 }
    92    //
    93    // Read more at :ref:`priority levels <arch_overview_load_balancing_priority_levels>` and
    94    // :ref:`localities <arch_overview_load_balancing_locality_weighted_lb>`.
    95    google.protobuf.UInt32Value overprovisioning_factor = 3 [(validate.rules).uint32 = {gt: 0}];
    96
    97    // The max time until which the endpoints from this assignment can be used.
    98    // If no new assignments are received before this time expires the endpoints
    99    // are considered stale and should be marked unhealthy.
   100    // Defaults to 0 which means endpoints never go stale.
   101    google.protobuf.Duration endpoint_stale_after = 4 [(validate.rules).duration = {gt {}}];
   102  }
   103
   104  // Name of the cluster. This will be the :ref:`service_name
   105  // <envoy_api_field_config.cluster.v3.Cluster.EdsClusterConfig.service_name>` value if specified
   106  // in the cluster :ref:`EdsClusterConfig
   107  // <envoy_api_msg_config.cluster.v3.Cluster.EdsClusterConfig>`.
   108  string cluster_name = 1 [(validate.rules).string = {min_len: 1}];
   109
   110  // List of endpoints to load balance to.
   111  repeated LocalityLbEndpoints endpoints = 2;
   112
   113  // Map of named endpoints that can be referenced in LocalityLbEndpoints.
   114  // [#not-implemented-hide:]
   115  map<string, Endpoint> named_endpoints = 5;
   116
   117  // Load balancing policy settings.
   118  Policy policy = 4;
   119}

View as plain text