diff --git a/api/v1alpha1/timeout_types.go b/api/v1alpha1/timeout_types.go index 66243d4b30..d42ece0537 100644 --- a/api/v1alpha1/timeout_types.go +++ b/api/v1alpha1/timeout_types.go @@ -71,6 +71,14 @@ type ClientTimeout struct { // // +optional HTTP *HTTPClientTimeout `json:"http,omitempty"` + + // ListenerFiltersTimeout is the duration envoy waits for all listener filters to complete operation. + // If the timeout is reached, the accepted socket is closed without a connection being created. + // Specify 0 to disable the timeout. + // Default: 15 seconds. + // + // +optional + ListenerFiltersTimeout *gwapiv1.Duration `json:"listenerFiltersTimeout,omitempty"` } // TCPClientTimeout only provides timeout configuration on the listener whose protocol is TCP or TLS. @@ -81,6 +89,13 @@ type TCPClientTimeout struct { // // +optional IdleTimeout *gwapiv1.Duration `json:"idleTimeout,omitempty"` + + // TransportSocketConnectTimeout is the duration envoy waits for incoming connections to complete any transport socket negotiations. + // If this expires before the transport reports connection establishment, the connection is summarily closed. + // Default: 5 seconds. + // + // +optional + TransportSocketConnectTimeout *gwapiv1.Duration `json:"transportSocketConnectTimeout,omitempty"` } type HTTPClientTimeout struct { @@ -101,4 +116,13 @@ type HTTPClientTimeout struct { // // +optional StreamIdleTimeout *gwapiv1.Duration `json:"streamIdleTimeout,omitempty"` + + // RequestHeadersTimeout is the duration envoy waits for the request headers to arrive. + // The timer is activated when the first byte of the headers is received, + // and is disarmed when the last byte of the headers has been received. + // Specify 0 to disable the timeout. + // Default: 10 seconds. + // + // +optional + RequestHeadersTimeout *gwapiv1.Duration `json:"requestHeadersTimeout,omitempty"` } diff --git a/api/v1alpha1/zz_generated.deepcopy.go b/api/v1alpha1/zz_generated.deepcopy.go index f235298d88..dad7664a2f 100644 --- a/api/v1alpha1/zz_generated.deepcopy.go +++ b/api/v1alpha1/zz_generated.deepcopy.go @@ -1347,6 +1347,11 @@ func (in *ClientTimeout) DeepCopyInto(out *ClientTimeout) { *out = new(HTTPClientTimeout) (*in).DeepCopyInto(*out) } + if in.ListenerFiltersTimeout != nil { + in, out := &in.ListenerFiltersTimeout, &out.ListenerFiltersTimeout + *out = new(v1.Duration) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClientTimeout. @@ -4314,6 +4319,11 @@ func (in *HTTPClientTimeout) DeepCopyInto(out *HTTPClientTimeout) { *out = new(v1.Duration) **out = **in } + if in.RequestHeadersTimeout != nil { + in, out := &in.RequestHeadersTimeout, &out.RequestHeadersTimeout + *out = new(v1.Duration) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HTTPClientTimeout. @@ -8230,6 +8240,11 @@ func (in *TCPClientTimeout) DeepCopyInto(out *TCPClientTimeout) { *out = new(v1.Duration) **out = **in } + if in.TransportSocketConnectTimeout != nil { + in, out := &in.TransportSocketConnectTimeout, &out.TransportSocketConnectTimeout + *out = new(v1.Duration) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TCPClientTimeout. diff --git a/charts/gateway-crds-helm/templates/generated/gateway.envoyproxy.io_clienttrafficpolicies.yaml b/charts/gateway-crds-helm/templates/generated/gateway.envoyproxy.io_clienttrafficpolicies.yaml index 375a5feffe..db350b3278 100644 --- a/charts/gateway-crds-helm/templates/generated/gateway.envoyproxy.io_clienttrafficpolicies.yaml +++ b/charts/gateway-crds-helm/templates/generated/gateway.envoyproxy.io_clienttrafficpolicies.yaml @@ -1307,6 +1307,15 @@ spec: Default: 1 hour. pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string + requestHeadersTimeout: + description: |- + RequestHeadersTimeout is the duration envoy waits for the request headers to arrive. + The timer is activated when the first byte of the headers is received, + and is disarmed when the last byte of the headers has been received. + Specify 0 to disable the timeout. + Default: 10 seconds. + pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ + type: string requestReceivedTimeout: description: |- RequestReceivedTimeout is the duration envoy waits for the complete request reception. This timer starts upon request @@ -1320,6 +1329,14 @@ spec: pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string type: object + listenerFiltersTimeout: + description: |- + ListenerFiltersTimeout is the duration envoy waits for all listener filters to complete operation. + If the timeout is reached, the accepted socket is closed without a connection being created. + Specify 0 to disable the timeout. + Default: 15 seconds. + pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ + type: string tcp: description: Timeout settings for TCP. properties: @@ -1330,6 +1347,13 @@ spec: Default: 1 hour. pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string + transportSocketConnectTimeout: + description: |- + TransportSocketConnectTimeout is the duration envoy waits for incoming connections to complete any transport socket negotiations. + If this expires before the transport reports connection establishment, the connection is summarily closed. + Default: 5 seconds. + pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ + type: string type: object type: object tls: diff --git a/charts/gateway-helm/charts/crds/crds/generated/gateway.envoyproxy.io_clienttrafficpolicies.yaml b/charts/gateway-helm/charts/crds/crds/generated/gateway.envoyproxy.io_clienttrafficpolicies.yaml index 76aa7fcfd6..56217d4ce7 100644 --- a/charts/gateway-helm/charts/crds/crds/generated/gateway.envoyproxy.io_clienttrafficpolicies.yaml +++ b/charts/gateway-helm/charts/crds/crds/generated/gateway.envoyproxy.io_clienttrafficpolicies.yaml @@ -1306,6 +1306,15 @@ spec: Default: 1 hour. pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string + requestHeadersTimeout: + description: |- + RequestHeadersTimeout is the duration envoy waits for the request headers to arrive. + The timer is activated when the first byte of the headers is received, + and is disarmed when the last byte of the headers has been received. + Specify 0 to disable the timeout. + Default: 10 seconds. + pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ + type: string requestReceivedTimeout: description: |- RequestReceivedTimeout is the duration envoy waits for the complete request reception. This timer starts upon request @@ -1319,6 +1328,14 @@ spec: pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string type: object + listenerFiltersTimeout: + description: |- + ListenerFiltersTimeout is the duration envoy waits for all listener filters to complete operation. + If the timeout is reached, the accepted socket is closed without a connection being created. + Specify 0 to disable the timeout. + Default: 15 seconds. + pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ + type: string tcp: description: Timeout settings for TCP. properties: @@ -1329,6 +1346,13 @@ spec: Default: 1 hour. pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string + transportSocketConnectTimeout: + description: |- + TransportSocketConnectTimeout is the duration envoy waits for incoming connections to complete any transport socket negotiations. + If this expires before the transport reports connection establishment, the connection is summarily closed. + Default: 5 seconds. + pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ + type: string type: object type: object tls: diff --git a/site/content/en/latest/api/extension_types.md b/site/content/en/latest/api/extension_types.md index 767d8a3af4..8c75a31589 100644 --- a/site/content/en/latest/api/extension_types.md +++ b/site/content/en/latest/api/extension_types.md @@ -946,6 +946,7 @@ _Appears in:_ | --- | --- | --- | --- | --- | | `tcp` | _[TCPClientTimeout](#tcpclienttimeout)_ | false | | Timeout settings for TCP. | | `http` | _[HTTPClientTimeout](#httpclienttimeout)_ | false | | Timeout settings for HTTP. | +| `listenerFiltersTimeout` | _[Duration](https://gateway-api.sigs.k8s.io/reference/api-spec/1.5/spec/#duration)_ | false | | ListenerFiltersTimeout is the duration envoy waits for all listener filters to complete operation.
If the timeout is reached, the accepted socket is closed without a connection being created.
Specify 0 to disable the timeout.
Default: 15 seconds. | #### ClientTrafficPolicy @@ -2967,6 +2968,7 @@ _Appears in:_ | `requestReceivedTimeout` | _[Duration](https://gateway-api.sigs.k8s.io/reference/api-spec/1.5/spec/#duration)_ | false | | RequestReceivedTimeout is the duration envoy waits for the complete request reception. This timer starts upon request
initiation and stops when either the last byte of the request is sent upstream or when the response begins. | | `idleTimeout` | _[Duration](https://gateway-api.sigs.k8s.io/reference/api-spec/1.5/spec/#duration)_ | false | | IdleTimeout for an HTTP connection. Idle time is defined as a period in which there are no active requests in the connection.
Default: 1 hour. | | `streamIdleTimeout` | _[Duration](https://gateway-api.sigs.k8s.io/reference/api-spec/1.5/spec/#duration)_ | false | | The stream idle timeout defines the amount of time a stream can exist without any upstream or downstream activity.
Default: 5 minutes. | +| `requestHeadersTimeout` | _[Duration](https://gateway-api.sigs.k8s.io/reference/api-spec/1.5/spec/#duration)_ | false | | RequestHeadersTimeout is the duration envoy waits for the request headers to arrive.
The timer is activated when the first byte of the headers is received,
and is disarmed when the last byte of the headers has been received.
Specify 0 to disable the timeout.
Default: 10 seconds. | #### HTTPCookieMatch @@ -6094,6 +6096,7 @@ _Appears in:_ | Field | Type | Required | Default | Description | | --- | --- | --- | --- | --- | | `idleTimeout` | _[Duration](https://gateway-api.sigs.k8s.io/reference/api-spec/1.5/spec/#duration)_ | false | | IdleTimeout for a TCP connection. Idle time is defined as a period in which there are no
bytes sent or received on either the upstream or downstream connection.
Default: 1 hour. | +| `transportSocketConnectTimeout` | _[Duration](https://gateway-api.sigs.k8s.io/reference/api-spec/1.5/spec/#duration)_ | false | | TransportSocketConnectTimeout is the duration envoy waits for incoming connections to complete any transport socket negotiations.
If this expires before the transport reports connection establishment, the connection is summarily closed.
Default: 5 seconds. | #### TCPKeepalive diff --git a/test/helm/gateway-crds-helm/all.out.yaml b/test/helm/gateway-crds-helm/all.out.yaml index 357bc518cc..c8ae1290c0 100644 --- a/test/helm/gateway-crds-helm/all.out.yaml +++ b/test/helm/gateway-crds-helm/all.out.yaml @@ -27589,6 +27589,15 @@ spec: Default: 1 hour. pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string + requestHeadersTimeout: + description: |- + RequestHeadersTimeout is the duration envoy waits for the request headers to arrive. + The timer is activated when the first byte of the headers is received, + and is disarmed when the last byte of the headers has been received. + Specify 0 to disable the timeout. + Default: 10 seconds. + pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ + type: string requestReceivedTimeout: description: |- RequestReceivedTimeout is the duration envoy waits for the complete request reception. This timer starts upon request @@ -27602,6 +27611,14 @@ spec: pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string type: object + listenerFiltersTimeout: + description: |- + ListenerFiltersTimeout is the duration envoy waits for all listener filters to complete operation. + If the timeout is reached, the accepted socket is closed without a connection being created. + Specify 0 to disable the timeout. + Default: 15 seconds. + pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ + type: string tcp: description: Timeout settings for TCP. properties: @@ -27612,6 +27629,13 @@ spec: Default: 1 hour. pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string + transportSocketConnectTimeout: + description: |- + TransportSocketConnectTimeout is the duration envoy waits for incoming connections to complete any transport socket negotiations. + If this expires before the transport reports connection establishment, the connection is summarily closed. + Default: 5 seconds. + pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ + type: string type: object type: object tls: diff --git a/test/helm/gateway-crds-helm/e2e.out.yaml b/test/helm/gateway-crds-helm/e2e.out.yaml index 413f4840c4..a9e9bbf03f 100644 --- a/test/helm/gateway-crds-helm/e2e.out.yaml +++ b/test/helm/gateway-crds-helm/e2e.out.yaml @@ -5562,6 +5562,15 @@ spec: Default: 1 hour. pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string + requestHeadersTimeout: + description: |- + RequestHeadersTimeout is the duration envoy waits for the request headers to arrive. + The timer is activated when the first byte of the headers is received, + and is disarmed when the last byte of the headers has been received. + Specify 0 to disable the timeout. + Default: 10 seconds. + pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ + type: string requestReceivedTimeout: description: |- RequestReceivedTimeout is the duration envoy waits for the complete request reception. This timer starts upon request @@ -5575,6 +5584,14 @@ spec: pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string type: object + listenerFiltersTimeout: + description: |- + ListenerFiltersTimeout is the duration envoy waits for all listener filters to complete operation. + If the timeout is reached, the accepted socket is closed without a connection being created. + Specify 0 to disable the timeout. + Default: 15 seconds. + pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ + type: string tcp: description: Timeout settings for TCP. properties: @@ -5585,6 +5602,13 @@ spec: Default: 1 hour. pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string + transportSocketConnectTimeout: + description: |- + TransportSocketConnectTimeout is the duration envoy waits for incoming connections to complete any transport socket negotiations. + If this expires before the transport reports connection establishment, the connection is summarily closed. + Default: 5 seconds. + pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ + type: string type: object type: object tls: diff --git a/test/helm/gateway-crds-helm/envoy-gateway-crds.out.yaml b/test/helm/gateway-crds-helm/envoy-gateway-crds.out.yaml index a173638a1e..7a503f58ab 100644 --- a/test/helm/gateway-crds-helm/envoy-gateway-crds.out.yaml +++ b/test/helm/gateway-crds-helm/envoy-gateway-crds.out.yaml @@ -5562,6 +5562,15 @@ spec: Default: 1 hour. pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string + requestHeadersTimeout: + description: |- + RequestHeadersTimeout is the duration envoy waits for the request headers to arrive. + The timer is activated when the first byte of the headers is received, + and is disarmed when the last byte of the headers has been received. + Specify 0 to disable the timeout. + Default: 10 seconds. + pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ + type: string requestReceivedTimeout: description: |- RequestReceivedTimeout is the duration envoy waits for the complete request reception. This timer starts upon request @@ -5575,6 +5584,14 @@ spec: pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string type: object + listenerFiltersTimeout: + description: |- + ListenerFiltersTimeout is the duration envoy waits for all listener filters to complete operation. + If the timeout is reached, the accepted socket is closed without a connection being created. + Specify 0 to disable the timeout. + Default: 15 seconds. + pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ + type: string tcp: description: Timeout settings for TCP. properties: @@ -5585,6 +5602,13 @@ spec: Default: 1 hour. pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string + transportSocketConnectTimeout: + description: |- + TransportSocketConnectTimeout is the duration envoy waits for incoming connections to complete any transport socket negotiations. + If this expires before the transport reports connection establishment, the connection is summarily closed. + Default: 5 seconds. + pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ + type: string type: object type: object tls: