<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Traffic on Envoy Gateway</title><link>/v1.3/tasks/traffic/</link><description>Recent content in Traffic on Envoy Gateway</description><generator>Hugo</generator><language>en</language><atom:link href="/v1.3/tasks/traffic/index.xml" rel="self" type="application/rss+xml"/><item><title>Backend Routing</title><link>/v1.3/tasks/traffic/backend/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/backend/</guid><description>&lt;p&gt;Envoy Gateway supports routing to native K8s resources such as &lt;code&gt;Service&lt;/code&gt; and &lt;code&gt;ServiceImport&lt;/code&gt;. The &lt;code&gt;Backend&lt;/code&gt; API is a custom Envoy Gateway &lt;a href="https://gateway-api.sigs.k8s.io/guides/getting-started/migrating-from-ingress/#approach-to-extensibility"&gt;extension resource&lt;/a&gt; that can used in Gateway-API &lt;a href="https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.BackendObjectReference"&gt;BackendObjectReference&lt;/a&gt;.&lt;/p&gt;



&lt;h2 id="motivation"&gt;Motivation&lt;a class="td-heading-self-link" href="#motivation" aria-label="Heading self-link"&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;The Backend API was added to support several use cases:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Allowing users to integrate Envoy with services (Ext Auth, Rate Limit, ALS, &amp;hellip;) using Unix Domain Sockets, which are currently not supported by K8s.&lt;/li&gt;
&lt;li&gt;Simplify &lt;a href="/v1.3/tasks/traffic/routing-outside-kubernetes/"&gt;routing to cluster-external backends&lt;/a&gt;, which currently requires users to maintain both K8s &lt;code&gt;Service&lt;/code&gt; and &lt;code&gt;EndpointSlice&lt;/code&gt; resources.&lt;/li&gt;
&lt;/ul&gt;



&lt;h2 id="warning"&gt;Warning&lt;a class="td-heading-self-link" href="#warning" aria-label="Heading self-link"&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Similar to the K8s EndpointSlice API, the Backend API can be misused to allow traffic to be sent to otherwise restricted destinations, as described in &lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2021-25740"&gt;CVE-2021-25740&lt;/a&gt;.
A Backend resource can be used to:&lt;/p&gt;</description></item><item><title>Circuit Breakers</title><link>/v1.3/tasks/traffic/circuit-breaker/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/circuit-breaker/</guid><description>&lt;p&gt;&lt;a href="https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/circuit_breaking"&gt;Envoy circuit breakers&lt;/a&gt; can be used to fail quickly and apply back-pressure in response to upstream service degradation.&lt;/p&gt;
&lt;p&gt;Envoy Gateway supports the following circuit breaker thresholds:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Concurrent Connections&lt;/strong&gt;: limit the connections that Envoy can establish to the upstream service. When this threshold is met, new connections will not be established, and some requests will be queued until an existing connection becomes available.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Concurrent Requests&lt;/strong&gt;: limit on concurrent requests in-flight from Envoy to the upstream service. When this threshold is met, requests will be queued.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pending Requests&lt;/strong&gt;: limit the pending request queue size. When this threshold is met, overflowing requests will be terminated with a &lt;code&gt;503&lt;/code&gt; status code.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Envoy&amp;rsquo;s circuit breakers are distributed: counters are not synchronized across different Envoy processes. The default Envoy and Envoy Gateway circuit breaker threshold values (1024) may be too strict for high-throughput systems.&lt;/p&gt;</description></item><item><title>Client Traffic Policy</title><link>/v1.3/tasks/traffic/client-traffic-policy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/client-traffic-policy/</guid><description>&lt;p&gt;This task explains the usage of the &lt;a href="../../../api/extension_types#clienttrafficpolicy"&gt;ClientTrafficPolicy&lt;/a&gt; API.&lt;/p&gt;



&lt;h2 id="introduction"&gt;Introduction&lt;a class="td-heading-self-link" href="#introduction" aria-label="Heading self-link"&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="../../../api/extension_types#clienttrafficpolicy"&gt;ClientTrafficPolicy&lt;/a&gt; API allows system administrators to configure
the behavior for how the Envoy Proxy server behaves with downstream clients.&lt;/p&gt;



&lt;h2 id="motivation"&gt;Motivation&lt;a class="td-heading-self-link" href="#motivation" aria-label="Heading self-link"&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;This API was added as a new policy attachment resource that can be applied to Gateway resources and it is meant to hold settings for configuring behavior of the connection between the downstream client and Envoy Proxy listener. It is the counterpart to the &lt;a href="../../../api/extension_types#backendtrafficpolicy"&gt;BackendTrafficPolicy&lt;/a&gt; API resource.&lt;/p&gt;</description></item><item><title>Connection Limit</title><link>/v1.3/tasks/traffic/connection-limit/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/connection-limit/</guid><description>&lt;p&gt;The connection limit features allows users to limit the number of concurrently active TCP connections on a &lt;a href="https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1alpha2.Gateway"&gt;Gateway&lt;/a&gt; or a &lt;a href="https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.Listener"&gt;Listener&lt;/a&gt;.
When the &lt;a href="https://www.envoyproxy.io/docs/envoy/latest/configuration/listeners/network_filters/connection_limit_filter"&gt;connection limit&lt;/a&gt; is reached, new connections are closed immediately by Envoy proxy. It&amp;rsquo;s possible to configure a delay for connection rejection.&lt;/p&gt;
&lt;p&gt;Users may want to limit the number of connections for several reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Protect resources like CPU and Memory.&lt;/li&gt;
&lt;li&gt;Ensure that different listeners can receive a fair share of global resources.&lt;/li&gt;
&lt;li&gt;Protect from malicious activity like DoS attacks.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Envoy Gateway introduces a new CRD called &lt;a href="../../../api/extension_types#clienttrafficpolicy"&gt;Client Traffic Policy&lt;/a&gt; that allows the user to describe their desired connection limit settings.
This instantiated resource can be linked to a &lt;a href="https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1alpha2.Gateway"&gt;Gateway&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Direct Response</title><link>/v1.3/tasks/traffic/direct-response/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/direct-response/</guid><description>&lt;p&gt;Direct responses are valuable in cases where you want the gateway itself
to handle certain requests without forwarding them to backend services.
This task shows you how to configure them.&lt;/p&gt;



&lt;h2 id="installation"&gt;Installation&lt;a class="td-heading-self-link" href="#installation" aria-label="Heading self-link"&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Follow the steps from the &lt;a href="../../quickstart"&gt;Quickstart&lt;/a&gt; to install Envoy Gateway and the example manifest.
Before proceeding, you should be able to query the example backend using HTTP.&lt;/p&gt;



&lt;h2 id="testing-direct-response"&gt;Testing Direct Response&lt;a class="td-heading-self-link" href="#testing-direct-response" aria-label="Heading self-link"&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Note: the size of the response body (whether provided in-line or via a reference) cannot exceed 4096 bytes.&lt;/p&gt;</description></item><item><title>Failover</title><link>/v1.3/tasks/traffic/failover/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/failover/</guid><description>&lt;p&gt;Active-passive failover in an API gateway setup is like having a backup plan in place to keep things
running smoothly if something goes wrong. Here’s why it’s valuable:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Staying Online: When the main (or &amp;ldquo;active&amp;rdquo;) backend has issues or goes offline,
the fallback (or &amp;ldquo;passive&amp;rdquo;) backend is ready to step in instantly.
This helps keep your API accessible and your services running, so users don’t even notice any interruptions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Automatic Switch Over: If a problem occurs, the system can automatically switch traffic over to the fallback backend.
This avoids needing someone to jump in and fix things manually, which could take time and might even lead to mistakes.&lt;/p&gt;</description></item><item><title>Fault Injection</title><link>/v1.3/tasks/traffic/fault-injection/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/fault-injection/</guid><description>&lt;p&gt;&lt;a href="https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/fault_filter.html"&gt;Envoy fault injection&lt;/a&gt; can be used to inject delays and abort requests to mimic failure scenarios such as service failures and overloads.&lt;/p&gt;
&lt;p&gt;Envoy Gateway supports the following fault scenarios:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;delay fault&lt;/strong&gt;: inject a custom fixed delay into the request with a certain probability to simulate delay failures.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;abort fault&lt;/strong&gt;: inject a custom response code into the response with a certain probability to simulate abort failures.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Envoy Gateway introduces a new CRD called &lt;a href="../../../api/extension_types#backendtrafficpolicy"&gt;BackendTrafficPolicy&lt;/a&gt; that allows the user to describe their desired fault scenarios.
This instantiated resource can be linked to a &lt;a href="https://gateway-api.sigs.k8s.io/api-types/gateway/"&gt;Gateway&lt;/a&gt;, &lt;a href="https://gateway-api.sigs.k8s.io/api-types/httproute/"&gt;HTTPRoute&lt;/a&gt; or &lt;a href="https://gateway-api.sigs.k8s.io/api-types/grpcroute/"&gt;GRPCRoute&lt;/a&gt; resource.&lt;/p&gt;</description></item><item><title>Gateway Address</title><link>/v1.3/tasks/traffic/gateway-address/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/gateway-address/</guid><description>&lt;p&gt;The Gateway API provides an optional &lt;a href="https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.GatewayAddress"&gt;Addresses&lt;/a&gt; field through which Envoy Gateway can set addresses for Envoy Proxy Service.
Depending on the Service Type, the addresses of gateway can be used as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/v1.3/tasks/traffic/gateway-address/#external-ips"&gt;External IPs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/v1.3/tasks/traffic/gateway-address/#cluster-ip"&gt;Cluster IP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;h2 id="prerequisites"&gt;Prerequisites&lt;a class="td-heading-self-link" href="#prerequisites" aria-label="Heading self-link"&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Follow the steps below to install Envoy Gateway and the example manifest. Before
proceeding, you should be able to query the example backend using HTTP.&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;Expand for instructions&lt;/summary&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Install the Gateway API CRDs and Envoy Gateway using Helm:&lt;/p&gt;</description></item><item><title>Gateway API Support</title><link>/v1.3/tasks/traffic/gatewayapi-support/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/gatewayapi-support/</guid><description>&lt;p&gt;As mentioned in the &lt;a href="/contributions/design/system-design/"&gt;system design&lt;/a&gt; document, Envoy Gateway&amp;rsquo;s managed data plane is configured dynamically through
Kubernetes resources, primarily &lt;a href="https://gateway-api.sigs.k8s.io/"&gt;Gateway API&lt;/a&gt; objects. Envoy Gateway supports configuration using the following Gateway API resources.&lt;/p&gt;



&lt;h2 id="gatewayclass"&gt;GatewayClass&lt;a class="td-heading-self-link" href="#gatewayclass" aria-label="Heading self-link"&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;A &lt;a href="https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.GatewayClass"&gt;GatewayClass&lt;/a&gt; represents a &amp;ldquo;class&amp;rdquo; of gateways, i.e. which Gateways should be managed by Envoy Gateway.
Envoy Gateway supports managing &lt;strong&gt;a single&lt;/strong&gt; GatewayClass resource that matches its configured &lt;code&gt;controllerName&lt;/code&gt; and
follows Gateway API guidelines for &lt;a href="https://gateway-api.sigs.k8s.io/concepts/guidelines/?h=conflict#conflicts"&gt;resolving conflicts&lt;/a&gt; when multiple GatewayClasses exist with a matching
&lt;code&gt;controllerName&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Global Rate Limit</title><link>/v1.3/tasks/traffic/global-rate-limit/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/global-rate-limit/</guid><description>&lt;p&gt;Rate limit is a feature that allows the user to limit the number of incoming requests to a predefined value based on attributes within the traffic flow.&lt;/p&gt;
&lt;p&gt;Here are some reasons why you may want to implement Rate limits&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To prevent malicious activity such as DDoS attacks.&lt;/li&gt;
&lt;li&gt;To prevent applications and its resources (such as a database) from getting overloaded.&lt;/li&gt;
&lt;li&gt;To create API limits based on user entitlements.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Envoy Gateway supports two types of rate limiting: &lt;a href="https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/other_features/global_rate_limiting"&gt;Global rate limiting&lt;/a&gt; and &lt;a href="https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/other_features/local_rate_limiting"&gt;Local rate limiting&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>GRPC Routing</title><link>/v1.3/tasks/traffic/grpc-routing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/grpc-routing/</guid><description>&lt;p&gt;The &lt;a href="https://gateway-api.sigs.k8s.io/api-types/grpcroute/"&gt;GRPCRoute&lt;/a&gt; resource allows users to configure gRPC routing by matching HTTP/2 traffic and forwarding it to backend gRPC servers.
To learn more about gRPC routing, refer to the &lt;a href="https://gateway-api.sigs.k8s.io/"&gt;Gateway API documentation&lt;/a&gt;.&lt;/p&gt;



&lt;h2 id="prerequisites"&gt;Prerequisites&lt;a class="td-heading-self-link" href="#prerequisites" aria-label="Heading self-link"&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Follow the steps below to install Envoy Gateway and the example manifest. Before
proceeding, you should be able to query the example backend using HTTP.&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;Expand for instructions&lt;/summary&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Install the Gateway API CRDs and Envoy Gateway using Helm:&lt;/p&gt;</description></item><item><title>HTTP Redirects</title><link>/v1.3/tasks/traffic/http-redirect/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/http-redirect/</guid><description>&lt;p&gt;The &lt;a href="https://gateway-api.sigs.k8s.io/api-types/httproute/"&gt;HTTPRoute&lt;/a&gt; resource can issue redirects to clients or rewrite paths sent upstream using filters. Note that
HTTPRoute rules cannot use both filter types at once. Currently, Envoy Gateway only supports &lt;strong&gt;core&lt;/strong&gt;
&lt;a href="https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1.HTTPRouteFilter"&gt;HTTPRoute filters&lt;/a&gt; which consist of &lt;code&gt;RequestRedirect&lt;/code&gt; and &lt;code&gt;RequestHeaderModifier&lt;/code&gt; at the time of this writing. To
learn more about HTTP routing, refer to the &lt;a href="https://gateway-api.sigs.k8s.io/"&gt;Gateway API documentation&lt;/a&gt;.&lt;/p&gt;



&lt;h2 id="prerequisites"&gt;Prerequisites&lt;a class="td-heading-self-link" href="#prerequisites" aria-label="Heading self-link"&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Follow the steps below to install Envoy Gateway and the example manifest. Before
proceeding, you should be able to query the example backend using HTTP.&lt;/p&gt;</description></item><item><title>HTTP Request Headers</title><link>/v1.3/tasks/traffic/http-request-headers/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/http-request-headers/</guid><description>&lt;p&gt;The &lt;a href="https://gateway-api.sigs.k8s.io/api-types/httproute/"&gt;HTTPRoute&lt;/a&gt; resource can modify the headers of a request before forwarding it to the upstream service. HTTPRoute
rules cannot use both filter types at once. Currently, Envoy Gateway only supports &lt;strong&gt;core&lt;/strong&gt; &lt;a href="https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRouteFilter"&gt;HTTPRoute filters&lt;/a&gt; which
consist of &lt;code&gt;RequestRedirect&lt;/code&gt; and &lt;code&gt;RequestHeaderModifier&lt;/code&gt; at the time of this writing. To learn more about HTTP routing,
refer to the &lt;a href="https://gateway-api.sigs.k8s.io/"&gt;Gateway API documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A &lt;a href="https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPHeaderFilter"&gt;&lt;code&gt;RequestHeaderModifier&lt;/code&gt; filter&lt;/a&gt; instructs Gateways to modify the headers in requests that match the rule
before forwarding the request upstream. Note that the &lt;code&gt;RequestHeaderModifier&lt;/code&gt; filter will only modify headers before the
request is sent from Envoy to the upstream service and will not affect response headers returned to the downstream
client.&lt;/p&gt;</description></item><item><title>HTTP Response Headers</title><link>/v1.3/tasks/traffic/http-response-headers/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/http-response-headers/</guid><description>&lt;p&gt;The &lt;a href="https://gateway-api.sigs.k8s.io/api-types/httproute/"&gt;HTTPRoute&lt;/a&gt; resource can modify the headers of a response before responding it to the downstream service. To learn
more about HTTP routing, refer to the &lt;a href="https://gateway-api.sigs.k8s.io/"&gt;Gateway API documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A &lt;a href="https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPHeaderFilter"&gt;&lt;code&gt;ResponseHeaderModifier&lt;/code&gt; filter&lt;/a&gt; instructs Gateways to modify the headers in responses that match the
rule before responding to the downstream. Note that the &lt;code&gt;ResponseHeaderModifier&lt;/code&gt; filter will only modify headers before
the response is returned from Envoy to the downstream client and will not affect request headers forwarding to the
upstream service.&lt;/p&gt;</description></item><item><title>HTTP Routing</title><link>/v1.3/tasks/traffic/http-routing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/http-routing/</guid><description>&lt;p&gt;The &lt;a href="https://gateway-api.sigs.k8s.io/api-types/httproute/"&gt;HTTPRoute&lt;/a&gt; resource allows users to configure HTTP routing by matching HTTP traffic and forwarding it to
Kubernetes backends. Currently, the only supported backend supported by Envoy Gateway is a Service resource. This task
shows how to route traffic based on host, header, and path fields and forward the traffic to different Kubernetes
Services. To learn more about HTTP routing, refer to the &lt;a href="https://gateway-api.sigs.k8s.io/"&gt;Gateway API documentation&lt;/a&gt;.&lt;/p&gt;



&lt;h2 id="prerequisites"&gt;Prerequisites&lt;a class="td-heading-self-link" href="#prerequisites" aria-label="Heading self-link"&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Follow the steps below to install Envoy Gateway and the example manifest. Before
proceeding, you should be able to query the example backend using HTTP.&lt;/p&gt;</description></item><item><title>HTTP Timeouts</title><link>/v1.3/tasks/traffic/http-timeouts/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/http-timeouts/</guid><description>&lt;p&gt;The default request timeout is set to 15 seconds in Envoy Proxy.
The &lt;a href="https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRouteTimeouts"&gt;HTTPRouteTimeouts&lt;/a&gt; resource allows users to configure request timeouts for an &lt;a href="https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRouteRule"&gt;HTTPRouteRule&lt;/a&gt;.
This task shows you how to configure timeouts.&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRouteTimeouts"&gt;HTTPRouteTimeouts&lt;/a&gt; supports two kinds of timeouts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;request&lt;/strong&gt;: Request specifies the maximum duration for a gateway to respond to an HTTP request.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;backendRequest&lt;/strong&gt;: BackendRequest specifies a timeout for an individual request from the gateway to a backend.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The Request duration must be &amp;gt;= BackendRequest duration&lt;/p&gt;</description></item><item><title>HTTP URL Rewrite</title><link>/v1.3/tasks/traffic/http-urlrewrite/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/http-urlrewrite/</guid><description>&lt;p&gt;&lt;a href="https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPURLRewriteFilter"&gt;HTTPURLRewriteFilter&lt;/a&gt; defines a filter that modifies a request during forwarding. At most one of these filters may be
used on a Route rule. This MUST NOT be used on the same Route rule as a HTTPRequestRedirect filter.&lt;/p&gt;



&lt;h2 id="prerequisites"&gt;Prerequisites&lt;a class="td-heading-self-link" href="#prerequisites" aria-label="Heading self-link"&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Follow the steps below to install Envoy Gateway and the example manifest. Before
proceeding, you should be able to query the example backend using HTTP.&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;Expand for instructions&lt;/summary&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Install the Gateway API CRDs and Envoy Gateway using Helm:&lt;/p&gt;</description></item><item><title>HTTP3</title><link>/v1.3/tasks/traffic/http3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/http3/</guid><description>&lt;p&gt;This task will help you get started using HTTP3 using EG.
This task uses a self-signed CA, so it should be used for testing and demonstration purposes only.&lt;/p&gt;



&lt;h2 id="prerequisites"&gt;Prerequisites&lt;a class="td-heading-self-link" href="#prerequisites" aria-label="Heading self-link"&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;OpenSSL to generate TLS assets.&lt;/li&gt;
&lt;/ul&gt;



&lt;h2 id="installation"&gt;Installation&lt;a class="td-heading-self-link" href="#installation" aria-label="Heading self-link"&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Follow the steps below to install Envoy Gateway and the example manifest. Before
proceeding, you should be able to query the example backend using HTTP.&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;Expand for instructions&lt;/summary&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Install the Gateway API CRDs and Envoy Gateway using Helm:&lt;/p&gt;</description></item><item><title>HTTPRoute Request Mirroring</title><link>/v1.3/tasks/traffic/http-request-mirroring/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/http-request-mirroring/</guid><description>&lt;p&gt;The &lt;a href="https://gateway-api.sigs.k8s.io/api-types/httproute/"&gt;HTTPRoute&lt;/a&gt; resource allows one or more &lt;a href="https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.BackendRef"&gt;backendRefs&lt;/a&gt; to be provided. Requests will be routed to these upstreams. It is possible to divide the traffic between these backends using &lt;a href="../http-traffic-splitting/"&gt;Traffic Splitting&lt;/a&gt;, but it is also possible to mirror requests to another Service instead. Request mirroring is accomplished using Gateway API&amp;rsquo;s &lt;a href="https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRequestMirrorFilter"&gt;HTTPRequestMirrorFilter&lt;/a&gt; on the &lt;code&gt;HTTPRoute&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;When requests are made to a &lt;code&gt;HTTPRoute&lt;/code&gt; that uses a &lt;code&gt;HTTPRequestMirrorFilter&lt;/code&gt;, the response will never come from the &lt;code&gt;backendRef&lt;/code&gt; defined in the filter. Responses from the mirror &lt;code&gt;backendRef&lt;/code&gt; are always ignored.&lt;/p&gt;</description></item><item><title>HTTPRoute Traffic Splitting</title><link>/v1.3/tasks/traffic/http-traffic-splitting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/http-traffic-splitting/</guid><description>&lt;p&gt;The &lt;a href="https://gateway-api.sigs.k8s.io/api-types/httproute/"&gt;HTTPRoute&lt;/a&gt; resource allows one or more &lt;a href="https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.BackendRef"&gt;backendRefs&lt;/a&gt; to be provided. Requests will be routed to these upstreams
if they match the rules of the HTTPRoute. If an invalid backendRef is configured, then HTTP responses will be returned
with status code &lt;code&gt;500&lt;/code&gt; for all requests that would have been sent to that backend.&lt;/p&gt;



&lt;h2 id="prerequisites"&gt;Prerequisites&lt;a class="td-heading-self-link" href="#prerequisites" aria-label="Heading self-link"&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Follow the steps below to install Envoy Gateway and the example manifest. Before
proceeding, you should be able to query the example backend using HTTP.&lt;/p&gt;</description></item><item><title>Load Balancing</title><link>/v1.3/tasks/traffic/load-balancing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/load-balancing/</guid><description>&lt;p&gt;&lt;a href="https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/load_balancing/overview"&gt;Envoy load balancing&lt;/a&gt; is a way of distributing traffic between multiple hosts within a single upstream cluster
in order to effectively make use of available resources.&lt;/p&gt;
&lt;p&gt;Envoy Gateway supports the following load balancing policies:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Round Robin&lt;/strong&gt;: a simple policy in which each available upstream host is selected in round robin order.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Random&lt;/strong&gt;: load balancer selects a random available host.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Least Request&lt;/strong&gt;: load balancer uses different algorithms depending on whether hosts have the same or different weights.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consistent Hash&lt;/strong&gt;: load balancer implements consistent hashing to upstream hosts.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Envoy Gateway introduces a new CRD called &lt;a href="../../../api/extension_types#backendtrafficpolicy"&gt;BackendTrafficPolicy&lt;/a&gt; that allows the user to describe their desired load balancing polices.
This instantiated resource can be linked to a &lt;a href="https://gateway-api.sigs.k8s.io/api-types/gateway/"&gt;Gateway&lt;/a&gt;, &lt;a href="https://gateway-api.sigs.k8s.io/api-types/httproute/"&gt;HTTPRoute&lt;/a&gt; or &lt;a href="https://gateway-api.sigs.k8s.io/api-types/grpcroute/"&gt;GRPCRoute&lt;/a&gt; resource. If &lt;code&gt;loadBalancer&lt;/code&gt; is not specified in &lt;a href="../../../api/extension_types#backendtrafficpolicy"&gt;BackendTrafficPolicy&lt;/a&gt;, the default load balancing policy is &lt;code&gt;Least Request&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Local Rate Limit</title><link>/v1.3/tasks/traffic/local-rate-limit/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/local-rate-limit/</guid><description>&lt;p&gt;Rate limit is a feature that allows the user to limit the number of incoming requests to a predefined value based on attributes within the traffic flow.&lt;/p&gt;
&lt;p&gt;Here are some reasons why you may want to implement Rate limits&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To prevent malicious activity such as DDoS attacks.&lt;/li&gt;
&lt;li&gt;To prevent applications and its resources (such as a database) from getting overloaded.&lt;/li&gt;
&lt;li&gt;To create API limits based on user entitlements.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Envoy Gateway supports two types of rate limiting: &lt;a href="https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/other_features/global_rate_limiting"&gt;Global rate limiting&lt;/a&gt; and &lt;a href="https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/other_features/local_rate_limiting"&gt;Local rate limiting&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Multicluster Service Routing</title><link>/v1.3/tasks/traffic/multicluster-service/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/multicluster-service/</guid><description>&lt;p&gt;The Multicluster Service API ServiceImport object can be used as part of the GatewayAPI backendRef for configuring routes. For more information about multicluster service API follow &lt;a href="https://multicluster.sigs.k8s.io/concepts/multicluster-services-api/"&gt;sig documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We will use &lt;a href="https://github.com/submariner-io/submariner"&gt;Submariner project&lt;/a&gt; for setting up the multicluster environment for exporting the service to be routed from peer clusters.&lt;/p&gt;



&lt;h2 id="setting-kind-clusters-and-installing-submariner"&gt;Setting KIND clusters and installing Submariner.&lt;a class="td-heading-self-link" href="#setting-kind-clusters-and-installing-submariner" aria-label="Heading self-link"&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;We will be using KIND clusters to demonstrate this example.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git clone https://github.com/submariner-io/submariner-operator
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87"&gt;cd&lt;/span&gt; submariner-operator
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;make clusters
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Note: remain in submariner-operator directory for the rest of the steps in this section&lt;/p&gt;</description></item><item><title>Response Compression</title><link>/v1.3/tasks/traffic/response-compression/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/response-compression/</guid><description>&lt;p&gt;Response Compression allows you to compress the response from the backend before sending it to the client. This can be useful for scenarios where the backend sends large responses that can be compressed to reduce the network bandwidth. However, this comes with a trade-off of increased CPU usage on the Envoy side to compress the response.&lt;/p&gt;



&lt;h2 id="installation"&gt;Installation&lt;a class="td-heading-self-link" href="#installation" aria-label="Heading self-link"&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Follow the steps from the &lt;a href="../../quickstart"&gt;Quickstart&lt;/a&gt; to install Envoy Gateway and the example manifest.
Before proceeding, you should be able to query the example backend using HTTP.&lt;/p&gt;</description></item><item><title>Response Override</title><link>/v1.3/tasks/traffic/response-override/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/response-override/</guid><description>&lt;p&gt;Response Override allows you to override the response from the backend with a custom one. This can be useful for scenarios such as returning a custom 404 page when the requested resource is not found or a custom 500 error message when the backend is failing.&lt;/p&gt;



&lt;h2 id="installation"&gt;Installation&lt;a class="td-heading-self-link" href="#installation" aria-label="Heading self-link"&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Follow the steps from the &lt;a href="../../quickstart"&gt;Quickstart&lt;/a&gt; to install Envoy Gateway and the example manifest.
Before proceeding, you should be able to query the example backend using HTTP.&lt;/p&gt;</description></item><item><title>Retry</title><link>/v1.3/tasks/traffic/retry/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/retry/</guid><description>&lt;div class="alert alert-warning" role="alert"&gt;


 Starting from &lt;code&gt;v1.3&lt;/code&gt;, Envoy Gateway supports &lt;a href="https://gateway-api.sigs.k8s.io/geps/gep-1731/"&gt;HTTPRoute Retries(GEP-1731)&lt;/a&gt;,
this setting in the core Gateway API takes precedence over the BackendTrafficPolicy configuration.

&lt;/div&gt;

&lt;p&gt;A retry setting specifies the maximum number of times an Envoy proxy attempts to connect to a service if the initial call fails. Retries can enhance service availability and application performance by making sure that calls don’t fail permanently because of transient problems such as a temporarily overloaded service or network. The interval between retries prevents the called service from being overwhelmed with requests.&lt;/p&gt;</description></item><item><title>Routing outside Kubernetes</title><link>/v1.3/tasks/traffic/routing-outside-kubernetes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/routing-outside-kubernetes/</guid><description>&lt;p&gt;Routing to endpoints outside the Kubernetes cluster where Envoy Gateway and its corresponding Envoy Proxy fleet is
running is a common use case. This can be achieved by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;defining FQDN addresses in a &lt;a href="https://kubernetes.io/docs/concepts/services-networking/endpoint-slices/"&gt;EndpointSlice&lt;/a&gt; (covered in this document)&lt;/li&gt;
&lt;li&gt;defining a &lt;a href="/v1.3/api/extension_types/#backend"&gt;Backend&lt;/a&gt; resource, as described in the &lt;a href="/v1.3/tasks/traffic/backend/"&gt;Backend Task&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;



&lt;h2 id="installation"&gt;Installation&lt;a class="td-heading-self-link" href="#installation" aria-label="Heading self-link"&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Follow the steps from the &lt;a href="../../quickstart"&gt;Quickstart&lt;/a&gt; to install Envoy Gateway and the example manifest.
Before proceeding, you should be able to query the example backend using HTTP.&lt;/p&gt;</description></item><item><title>Session Persistence</title><link>/v1.3/tasks/traffic/session-persistence/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/session-persistence/</guid><description>&lt;p&gt;Session Persistence allows client requests to be consistently routed to the same backend service instance. This is useful in many scenarios, such as when an application needs to maintain state across multiple requests. In Envoy Gateway, session persistence can be enabled by configuring &lt;a href="https://gateway-api.sigs.k8s.io/api-types/httproute"&gt;HTTPRoute&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Envoy Gateway supports following session persistence types:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cookie-based&lt;/strong&gt; Session Persistence: Session persistence is achieved based on specific cookie information in the request.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Header-based&lt;/strong&gt; Session Persistence: Session persistence is achieved based on specific header information in the request.&lt;/li&gt;
&lt;/ul&gt;



&lt;h2 id="prerequisites"&gt;Prerequisites&lt;a class="td-heading-self-link" href="#prerequisites" aria-label="Heading self-link"&gt;&lt;/a&gt;
&lt;/h2&gt;




&lt;h3 id="install-envoy-gateway"&gt;Install Envoy Gateway&lt;a class="td-heading-self-link" href="#install-envoy-gateway" aria-label="Heading self-link"&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Follow the steps below to install Envoy Gateway and the example manifest. Before
proceeding, you should be able to query the example backend using HTTP.&lt;/p&gt;</description></item><item><title>TCP Routing</title><link>/v1.3/tasks/traffic/tcp-routing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/tcp-routing/</guid><description>&lt;p&gt;&lt;a href="https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1alpha2.TCPRoute"&gt;TCPRoute&lt;/a&gt; provides a way to route TCP requests. When combined with a Gateway listener, it can be used to forward
connections on the port specified by the listener to a set of backends specified by the TCPRoute. To learn more about
HTTP routing, refer to the &lt;a href="https://gateway-api.sigs.k8s.io/"&gt;Gateway API documentation&lt;/a&gt;.&lt;/p&gt;



&lt;h2 id="prerequisites"&gt;Prerequisites&lt;a class="td-heading-self-link" href="#prerequisites" aria-label="Heading self-link"&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Follow the steps below to install Envoy Gateway and the example manifest. Before
proceeding, you should be able to query the example backend using HTTP.&lt;/p&gt;</description></item><item><title>UDP Routing</title><link>/v1.3/tasks/traffic/udp-routing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.3/tasks/traffic/udp-routing/</guid><description>&lt;p&gt;The &lt;a href="https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1alpha2.UDPRoute"&gt;UDPRoute&lt;/a&gt; resource allows users to configure UDP routing by matching UDP traffic and forwarding it to Kubernetes
backends. This task will use CoreDNS example to walk you through the steps required to configure UDPRoute on Envoy
Gateway.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; UDPRoute allows Envoy Gateway to operate as a non-transparent proxy between a UDP client and server. The lack
of transparency means that the upstream server will see the source IP and port of the Gateway instead of the client.
For additional information, refer to Envoy&amp;rsquo;s &lt;a href="https://www.envoyproxy.io/docs/envoy/latest/configuration/listeners/udp_filters/udp_proxy"&gt;UDP proxy documentation&lt;/a&gt;.&lt;/p&gt;</description></item></channel></rss>