1.9.0 (Dec 20, 2018)

    • access log: added dynamic metadata to access log messages streamed over gRPC.

    • access log: added DOWNSTREAM_CONNECTION_TERMINATION.

    • admin: now responds with 200 while there are no params.

    • admin: added support for displaying subject alternate names in certs end point.

    • admin: added host weight to the end point response.

    • admin: GET /server_info now responds with a JSON object instead of a single string.

    • admin: now exposes what stage of initialization the server is currently in.

    • admin: added support for displaying command line options in GET /server_info end point.

    • circuit-breaker: added cx_open, rq_pending_open, rq_open and rq_retry_open gauges to expose live state via .

    • cluster: set a default of 1s for option.

    • config: removed support for the v1 API.

    • config: added support for discovery request calls.

    • cors: added invalid/valid stats to filter.

    • ext-authz: added support for providing per route config - optionally disable the filter and provide context extensions.

    • fault: removed integer percentage support.

    • grpc-json: added support for .

    • health check: added logging health check failure events.

    • health check: added ability to set for gRPC health check.

    • http: added HTTP/2 WebSocket proxying via extended CONNECT.

    • http: added limits to the number and length of header modifications in all fields request_headers_to_add and response_headers_to_add. These limits are very high and should only be used as a last-resort safeguard.

    • http: added support for a . The timeout is disabled by default.

    • http: no longer adding whitespace when appending X-Forwarded-For headers. Warning: this is not compatible with 1.7.0 builds prior to 9d3a4eb4ac44be9f0651fcc7f87ad98c538b01ee. See for details.

    • http: no longer close the TCP connection when a HTTP/1 request is retried due to a response with empty body.

    • listeners: all listener filters are now governed by the listener_filters_timeout setting. The hard coded 15s timeout in the is superseded by this setting.

    • listeners: added the ability to match FilterChain using .

    • load balancer: added a configuration <v1.9:envoy_api_msg_Cluster.LeastRequestLbConfig> option to specify the number of choices made in P2C.

    • logging: added missing [ in log prefix.

    • mongo_proxy: added dynamic metadata.

    • network: removed the reference to FilterState in Connection in favor of StreamInfo.

    • rate-limit: added to specify whether the GrpcStatus status returned should be RESOURCE_EXHAUSTED or UNAVAILABLE when a gRPC call is rate limited.

    • rate-limit: removed support for the legacy ratelimit service and made the data-plane-api rls.proto based implementation default.

    • rate-limit: removed the deprecated cluster_name attribute in .

    • rate-limit: added rate_limit_service configuration to filters.

    • rbac: added dynamic metadata to the network level filter.

    • rbac: added support for permission matching by .

    • redis: static cluster configuration is no longer required. Redis proxy will work with clusters delivered via CDS.

    • router: added ability to configure arbitrary retriable status codes.

    • router: added ability to set attempt count in upstream requests, see .

    • router: added internal grpc-retry-on policy.

    • router: added and port_redirect to define the respective scheme and port rewriting RedirectAction.

    • router: when is set, Envoy will now add or update the grpc-timeout header to reflect Envoy’s expected timeout.

    • router: per try timeouts now starts when an upstream stream is ready instead of when the request has been fully decoded by Envoy.

    • router: added support for not retrying rate limited requests. Rate limit filter now sets the header so the rate limited requests that may have been retried earlier will not be retried with this change.

    • router: added support for enabling upgrades on a per-route basis.

    • router: support configuring a default fraction of mirror traffic via .

    • sandbox: added cors sandbox.

    • stream: renamed the RequestInfo namespace to StreamInfo to better match its behaviour within TCP and HTTP implementations.

    • stream: renamed perRequestState to filterState in StreamInfo.

    • stream: added downstreamDirectRemoteAddress to .

    • thrift_proxy: introduced thrift rate limiter filter.

    • tls: added ssl.curves.<curve>, ssl.sigalgs.<sigalg> and ssl.versions.<version> to to track TLS algorithms and versions in use.

    • tls: added support for client-side session resumption.

    • tls: added support for CRLs in .

    • tls: added support for multiple server TLS certificates.

    • tls: added support for .

    • tls: added the ability to build BoringSSL FIPS using --define boringssl=fips Bazel option.

    • tls: removed support for ECDSA certificates with curves other than P-256.

    • tls: removed support for RSA certificates with keys smaller than 2048-bits.

    • tracing: added support to the Zipkin tracer for the single header format.

    • tracing: added support for Datadog tracer.

    • upstream: added to enable scaling locality weights by number of hosts removed by subset lb predicates.

    • upstream: changed how load calculation for priority levels and interact. As long as normalized total health is 100% panic thresholds are disregarded.

    • upstream: changed the default hash for ring hash from std::hash to .

    • upstream: when using active health checking and STRICT_DNS with several addresses that resolve to the same hosts, Envoy will now health check each host independently.

    Deprecated

    • Order of execution of the network write filter chain has been reversed. Prior to this release cycle it was incorrect, see . In the 1.9.0 release cycle we introduced bugfix_reverse_write_filter_order in lds.proto to temporarily support both old and new behaviors. Note this boolean field is deprecated.

    • Order of execution of the HTTP encoder filter chain has been reversed. Prior to this release cycle it was incorrect, see . In the 1.9.0 release cycle we introduced bugfix_reverse_encode_order in http_connection_manager.proto to temporarily support both old and new behaviors. Note this boolean field is deprecated.

    • Use of the v1 REST_LEGACY ApiConfigSource is deprecated.

    • Use of std::hash in the ring hash load balancer is deprecated.

    • Use of rate_limit_service configuration in the is deprecated.

    • Use of runtime_key in RequestMirrorPolicy, found in route.proto is deprecated. Set the runtime_fraction field instead.