upstream.proto

Package: gloo.solo.io

Types:

Source File: github.com/solo-io/gloo/projects/gloo/api/v1/upstream.proto

Upstream

Upstreams represent destination for routing HTTP requests. Upstreams can be compared to clusters in Envoy terminology. Each upstream in Gloo has a type. Supported types include static, kubernetes, aws, consul, and more. Each upstream type is handled by a corresponding Gloo plugin. (plugins currently need to be compiled into Gloo)

"namespacedStatuses": .core.solo.io.NamespacedStatuses
"metadata": .core.solo.io.Metadata
"discoveryMetadata": .gloo.solo.io.DiscoveryMetadata
"sslConfig": .gloo.solo.io.UpstreamSslConfig
"circuitBreakers": .gloo.solo.io.CircuitBreakerConfig
"loadBalancerConfig": .gloo.solo.io.LoadBalancerConfig
"healthChecks": []solo.io.envoy.api.v2.core.HealthCheck
"outlierDetection": .solo.io.envoy.api.v2.cluster.OutlierDetection
"kube": .kubernetes.options.gloo.solo.io.UpstreamSpec
"static": .static.options.gloo.solo.io.UpstreamSpec
"pipe": .pipe.options.gloo.solo.io.UpstreamSpec
"aws": .aws.options.gloo.solo.io.UpstreamSpec
"azure": .azure.options.gloo.solo.io.UpstreamSpec
"consul": .consul.options.gloo.solo.io.UpstreamSpec
"awsEc2": .aws_ec2.options.gloo.solo.io.UpstreamSpec
"failover": .gloo.solo.io.Failover
"connectionConfig": .gloo.solo.io.ConnectionConfig
"protocolSelection": .gloo.solo.io.Upstream.ClusterProtocolSelection
"useHttp2": .google.protobuf.BoolValue
"initialStreamWindowSize": .google.protobuf.UInt32Value
"initialConnectionWindowSize": .google.protobuf.UInt32Value
"maxConcurrentStreams": .google.protobuf.UInt32Value
"overrideStreamErrorOnInvalidHttpMessage": .google.protobuf.BoolValue
"httpProxyHostname": .google.protobuf.StringValue
"httpConnectSslConfig": .gloo.solo.io.UpstreamSslConfig
"httpConnectHeaders": []gloo.solo.io.HeaderValue
"ignoreHealthOnHostRemoval": .google.protobuf.BoolValue

Field Type Description
namespacedStatuses .core.solo.io.NamespacedStatuses NamespacedStatuses indicates the validation status of this resource. NamespacedStatuses is read-only by clients, and set by gloo during validation.
metadata .core.solo.io.Metadata Metadata contains the object metadata for this resource.
discoveryMetadata .gloo.solo.io.DiscoveryMetadata Upstreams and their configuration can be automatically by Gloo Discovery if this upstream is created or modified by Discovery, metadata about the operation will be placed here.
sslConfig .gloo.solo.io.UpstreamSslConfig SslConfig contains the options necessary to configure envoy to originate TLS to an upstream.
circuitBreakers .gloo.solo.io.CircuitBreakerConfig Circuit breakers for this upstream. if not set, the defaults ones from the Gloo settings will be used. if those are not set, envoy’s defaults will be used.
loadBalancerConfig .gloo.solo.io.LoadBalancerConfig Settings for the load balancer that sends requests to the Upstream. The load balancing method is set to round robin by default.
healthChecks []solo.io.envoy.api.v2.core.HealthCheck
outlierDetection .solo.io.envoy.api.v2.cluster.OutlierDetection
kube .kubernetes.options.gloo.solo.io.UpstreamSpec Only one of kube, static, pipe, aws, azure, consul, or awsEc2 can be set.
static .static.options.gloo.solo.io.UpstreamSpec Only one of static, kube, pipe, aws, azure, consul, or awsEc2 can be set.
pipe .pipe.options.gloo.solo.io.UpstreamSpec Only one of pipe, kube, static, aws, azure, consul, or awsEc2 can be set.
aws .aws.options.gloo.solo.io.UpstreamSpec Only one of aws, kube, static, pipe, azure, consul, or awsEc2 can be set.
azure .azure.options.gloo.solo.io.UpstreamSpec Only one of azure, kube, static, pipe, aws, consul, or awsEc2 can be set.
consul .consul.options.gloo.solo.io.UpstreamSpec Only one of consul, kube, static, pipe, aws, azure, or awsEc2 can be set.
awsEc2 .aws_ec2.options.gloo.solo.io.UpstreamSpec Only one of awsEc2, kube, static, pipe, aws, azure, or consul can be set.
failover .gloo.solo.io.Failover Failover endpoints for this upstream. If omitted (the default) no failovers will be applied.
connectionConfig .gloo.solo.io.ConnectionConfig HTTP/1 connection configurations.
protocolSelection .gloo.solo.io.Upstream.ClusterProtocolSelection Determines how Envoy selects the protocol used to speak to upstream hosts.
useHttp2 .google.protobuf.BoolValue Use http2 when communicating with this upstream this field is evaluated true for upstreams with a grpc service spec. otherwise defaults to false.
initialStreamWindowSize .google.protobuf.UInt32Value (UInt32Value) Initial stream-level flow-control window size. Valid values range from 65535 (2^16 - 1, HTTP/2 default) to 2147483647 (2^31 - 1, HTTP/2 maximum) and defaults to 268435456 (256 * 1024 * 1024). NOTE: 65535 is the initial window size from HTTP/2 spec. We only support increasing the default window size now, so it’s also the minimum. This field also acts as a soft limit on the number of bytes Envoy will buffer per-stream in the HTTP/2 codec buffers. Once the buffer reaches this pointer, watermark callbacks will fire to stop the flow of data to the codec buffers. Requires UseHttp2 to be true to be acknowledged.
initialConnectionWindowSize .google.protobuf.UInt32Value (UInt32Value) Similar to initial_stream_window_size, but for connection-level flow-control window. Currently, this has the same minimum/maximum/default as initial_stream_window_size. Requires UseHttp2 to be true to be acknowledged.
maxConcurrentStreams .google.protobuf.UInt32Value (UInt32Value) Maximum concurrent streams allowed for peer on one HTTP/2 connection. Valid values range from 1 to 2147483647 (2^31 - 1) and defaults to 2147483647. Requires UseHttp2 to be true to be acknowledged.
overrideStreamErrorOnInvalidHttpMessage .google.protobuf.BoolValue Allows invalid HTTP messaging and headers. When this option is disabled (default), then the whole HTTP/2 connection is terminated upon receiving invalid HEADERS frame. However, when this option is enabled, only the offending stream is terminated. This overrides any HCM :ref:stream_error_on_invalid_http_messaging <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.stream_error_on_invalid_http_message> See RFC7540, sec. 8.1 <https://tools.ietf.org/html/rfc7540#section-8.1>_ for details.
httpProxyHostname .google.protobuf.StringValue Tells envoy that the upstream is an HTTP proxy (e.g., another proxy in a DMZ) that supports HTTP Connect. This configuration sets the hostname used as part of the HTTP Connect request. For example, setting to: host.com:443 and making a request routed to the upstream such as curl <envoy>:<port>/v1 would result in the following request: CONNECT host.com:443 HTTP/1.1 host: host.com:443 GET /v1 HTTP/1.1 host: : user-agent: curl/7.64.1 accept: / Note: if setting this field to a hostname rather than IP:PORT, you may want to also set host_rewrite on the route.
httpConnectSslConfig .gloo.solo.io.UpstreamSslConfig HttpConnectSslConfig contains the options necessary to configure envoy to originate TLS to an HTTP Connect proxy. If you also want to ensure the bytes proxied by the HTTP Connect proxy are encrypted, you should also specify ssl_config.
httpConnectHeaders []gloo.solo.io.HeaderValue HttpConnectHeaders specifies the headers sent with the initial HTTP Connect request.
ignoreHealthOnHostRemoval .google.protobuf.BoolValue (bool) If set to true, Envoy will ignore the health value of a host when processing its removal from service discovery. This means that if active health checking is used, Envoy will not wait for the endpoint to go unhealthy before removing it.

ClusterProtocolSelection

Name Description
USE_CONFIGURED_PROTOCOL Cluster can only operate on one of the possible upstream protocols (HTTP1.1, HTTP2). If :ref:http2_protocol_options <envoy_v3_api_field_config.cluster.v3.Cluster.http2_protocol_options> are present, HTTP2 will be used, otherwise HTTP1.1 will be used.
USE_DOWNSTREAM_PROTOCOL Use HTTP1.1 or HTTP2, depending on which one is used on the downstream connection.

DiscoveryMetadata

created by discovery services

"labels": map<string, string>

Field Type Description
labels map<string, string> Labels inherited from the original upstream (e.g. Kubernetes labels).

HeaderValue

Header name/value pair.

"key": string
"value": string

Field Type Description
key string Header name.
value string Header value.