...

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

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

     1syntax = "proto3";
     2
     3package envoy.config.endpoint.v3;
     4
     5import "envoy/config/core/v3/address.proto";
     6import "envoy/config/core/v3/base.proto";
     7import "envoy/config/core/v3/health_check.proto";
     8
     9import "google/protobuf/wrappers.proto";
    10
    11import "udpa/annotations/status.proto";
    12import "udpa/annotations/versioning.proto";
    13import "validate/validate.proto";
    14
    15option java_package = "io.envoyproxy.envoy.config.endpoint.v3";
    16option java_outer_classname = "EndpointComponentsProto";
    17option java_multiple_files = true;
    18option (udpa.annotations.file_status).package_version_status = ACTIVE;
    19
    20// [#protodoc-title: Endpoints]
    21
    22// Upstream host identifier.
    23message Endpoint {
    24  option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.endpoint.Endpoint";
    25
    26  // The optional health check configuration.
    27  message HealthCheckConfig {
    28    option (udpa.annotations.versioning).previous_message_type =
    29        "envoy.api.v2.endpoint.Endpoint.HealthCheckConfig";
    30
    31    // Optional alternative health check port value.
    32    //
    33    // By default the health check address port of an upstream host is the same
    34    // as the host's serving address port. This provides an alternative health
    35    // check port. Setting this with a non-zero value allows an upstream host
    36    // to have different health check address port.
    37    uint32 port_value = 1 [(validate.rules).uint32 = {lte: 65535}];
    38
    39    // By default, the host header for L7 health checks is controlled by cluster level configuration
    40    // (see: :ref:`host <envoy_api_field_config.core.v3.HealthCheck.HttpHealthCheck.host>` and
    41    // :ref:`authority <envoy_api_field_config.core.v3.HealthCheck.GrpcHealthCheck.authority>`). Setting this
    42    // to a non-empty value allows overriding the cluster level configuration for a specific
    43    // endpoint.
    44    string hostname = 2;
    45  }
    46
    47  // The upstream host address.
    48  //
    49  // .. attention::
    50  //
    51  //   The form of host address depends on the given cluster type. For STATIC or EDS,
    52  //   it is expected to be a direct IP address (or something resolvable by the
    53  //   specified :ref:`resolver <envoy_api_field_config.core.v3.SocketAddress.resolver_name>`
    54  //   in the Address). For LOGICAL or STRICT DNS, it is expected to be hostname,
    55  //   and will be resolved via DNS.
    56  core.v3.Address address = 1;
    57
    58  // The optional health check configuration is used as configuration for the
    59  // health checker to contact the health checked host.
    60  //
    61  // .. attention::
    62  //
    63  //   This takes into effect only for upstream clusters with
    64  //   :ref:`active health checking <arch_overview_health_checking>` enabled.
    65  HealthCheckConfig health_check_config = 2;
    66
    67  // The hostname associated with this endpoint. This hostname is not used for routing or address
    68  // resolution. If provided, it will be associated with the endpoint, and can be used for features
    69  // that require a hostname, like
    70  // :ref:`auto_host_rewrite <envoy_api_field_config.route.v3.RouteAction.auto_host_rewrite>`.
    71  string hostname = 3;
    72}
    73
    74// An Endpoint that Envoy can route traffic to.
    75// [#next-free-field: 6]
    76message LbEndpoint {
    77  option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.endpoint.LbEndpoint";
    78
    79  // Upstream host identifier or a named reference.
    80  oneof host_identifier {
    81    Endpoint endpoint = 1;
    82
    83    // [#not-implemented-hide:]
    84    string endpoint_name = 5;
    85  }
    86
    87  // Optional health status when known and supplied by EDS server.
    88  core.v3.HealthStatus health_status = 2;
    89
    90  // The endpoint metadata specifies values that may be used by the load
    91  // balancer to select endpoints in a cluster for a given request. The filter
    92  // name should be specified as *envoy.lb*. An example boolean key-value pair
    93  // is *canary*, providing the optional canary status of the upstream host.
    94  // This may be matched against in a route's
    95  // :ref:`RouteAction <envoy_api_msg_config.route.v3.RouteAction>` metadata_match field
    96  // to subset the endpoints considered in cluster load balancing.
    97  core.v3.Metadata metadata = 3;
    98
    99  // The optional load balancing weight of the upstream host; at least 1.
   100  // Envoy uses the load balancing weight in some of the built in load
   101  // balancers. The load balancing weight for an endpoint is divided by the sum
   102  // of the weights of all endpoints in the endpoint's locality to produce a
   103  // percentage of traffic for the endpoint. This percentage is then further
   104  // weighted by the endpoint's locality's load balancing weight from
   105  // LocalityLbEndpoints. If unspecified, each host is presumed to have equal
   106  // weight in a locality. The sum of the weights of all endpoints in the
   107  // endpoint's locality must not exceed uint32_t maximal value (4294967295).
   108  google.protobuf.UInt32Value load_balancing_weight = 4 [(validate.rules).uint32 = {gte: 1}];
   109}
   110
   111// A group of endpoints belonging to a Locality.
   112// One can have multiple LocalityLbEndpoints for a locality, but this is
   113// generally only done if the different groups need to have different load
   114// balancing weights or different priorities.
   115// [#next-free-field: 7]
   116message LocalityLbEndpoints {
   117  option (udpa.annotations.versioning).previous_message_type =
   118      "envoy.api.v2.endpoint.LocalityLbEndpoints";
   119
   120  // Identifies location of where the upstream hosts run.
   121  core.v3.Locality locality = 1;
   122
   123  // The group of endpoints belonging to the locality specified.
   124  repeated LbEndpoint lb_endpoints = 2;
   125
   126  // Optional: Per priority/region/zone/sub_zone weight; at least 1. The load
   127  // balancing weight for a locality is divided by the sum of the weights of all
   128  // localities  at the same priority level to produce the effective percentage
   129  // of traffic for the locality. The sum of the weights of all localities at
   130  // the same priority level must not exceed uint32_t maximal value (4294967295).
   131  //
   132  // Locality weights are only considered when :ref:`locality weighted load
   133  // balancing <arch_overview_load_balancing_locality_weighted_lb>` is
   134  // configured. These weights are ignored otherwise. If no weights are
   135  // specified when locality weighted load balancing is enabled, the locality is
   136  // assigned no load.
   137  google.protobuf.UInt32Value load_balancing_weight = 3 [(validate.rules).uint32 = {gte: 1}];
   138
   139  // Optional: the priority for this LocalityLbEndpoints. If unspecified this will
   140  // default to the highest priority (0).
   141  //
   142  // Under usual circumstances, Envoy will only select endpoints for the highest
   143  // priority (0). In the event all endpoints for a particular priority are
   144  // unavailable/unhealthy, Envoy will fail over to selecting endpoints for the
   145  // next highest priority group.
   146  //
   147  // Priorities should range from 0 (highest) to N (lowest) without skipping.
   148  uint32 priority = 5 [(validate.rules).uint32 = {lte: 128}];
   149
   150  // Optional: Per locality proximity value which indicates how close this
   151  // locality is from the source locality. This value only provides ordering
   152  // information (lower the value, closer it is to the source locality).
   153  // This will be consumed by load balancing schemes that need proximity order
   154  // to determine where to route the requests.
   155  // [#not-implemented-hide:]
   156  google.protobuf.UInt32Value proximity = 6;
   157}

View as plain text