Skip to content

Commit

Permalink
fix(meshtimeout): set default inbound timeouts correctly (#12692)
Browse files Browse the repository at this point in the history
## Motivation

Explained in #12667

## Supporting documentation

Fix #12667

---------

Signed-off-by: Ilya Lobkov <[email protected]>
  • Loading branch information
lobkovilya authored Jan 29, 2025
1 parent 9e88d5a commit 39d928f
Show file tree
Hide file tree
Showing 8 changed files with 114 additions and 18 deletions.
Original file line number Diff line number Diff line change
@@ -1 +1,9 @@
connectTimeout: 5s
name: localhost:8080
typedExtensionProtocolOptions:
envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
'@type': type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions
commonHttpProtocolOptions:
idleTimeout: 3600s
maxConnectionDuration: 0s
maxStreamDuration: 0s
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,13 @@ filterChains:
- name: envoy.filters.network.http_connection_manager
typedConfig:
'@type': type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
commonHttpProtocolOptions:
idleTimeout: 0s
httpFilters:
- name: envoy.filters.http.router
typedConfig:
'@type': type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
requestHeadersTimeout: 0s
routeConfig:
name: inbound:backend
requestHeadersToRemove:
Expand All @@ -26,7 +29,8 @@ filterChains:
prefix: /
route:
cluster: backend
timeout: 0s
idleTimeout: 1800s
timeout: 15s
statPrefix: inbound_127_0_0_1_80
name: inbound:127.0.0.1:80
trafficDirection: INBOUND
2 changes: 1 addition & 1 deletion pkg/plugins/policies/meshtimeout/plugin/v1alpha1/plugin.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ func applyToInbounds(fromRules core_rules.FromRules, inboundListeners map[core_r
protocol := core_mesh.ParseProtocol(inbound.GetProtocol())
conf := getConf(fromRules.Rules[listenerKey], subsetutils.MeshElement())
if conf == nil {
continue
conf = &plugin_xds.DefaultTimeoutConf
}
configurer := plugin_xds.ListenerConfigurer{
Conf: *conf,
Expand Down
4 changes: 2 additions & 2 deletions pkg/plugins/policies/meshtimeout/plugin/xds/configurer.go
Original file line number Diff line number Diff line change
Expand Up @@ -228,9 +228,9 @@ var DefaultTimeoutConf = api.Conf{
IdleTimeout: &kube_meta.Duration{Duration: policies_defaults.DefaultIdleTimeout},
Http: &api.Http{
RequestTimeout: &kube_meta.Duration{Duration: policies_defaults.DefaultRequestTimeout},
StreamIdleTimeout: &kube_meta.Duration{Duration: policies_defaults.DefaultGatewayStreamIdleTimeout},
StreamIdleTimeout: &kube_meta.Duration{Duration: policies_defaults.DefaultStreamIdleTimeout},
MaxStreamDuration: &kube_meta.Duration{Duration: policies_defaults.DefaultMaxStreamDuration},
MaxConnectionDuration: &kube_meta.Duration{Duration: policies_defaults.DefaultConnectTimeout},
MaxConnectionDuration: &kube_meta.Duration{Duration: policies_defaults.DefaultMaxConnectionDuration},
RequestHeadersTimeout: &kube_meta.Duration{Duration: policies_defaults.DefaultRequestHeadersTimeout},
},
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"path": "/type.googleapis.com~1envoy.config.cluster.v3.Cluster/envoyconfig_test-server__kuma-3_msvc_80/typedExtensionProtocolOptions/envoy.extensions.upstreams.http.v3.HttpProtocolOptions/commonHttpProtocolOptions",
"value": {
"idleTimeout": "3600s",
"maxConnectionDuration": "5s",
"maxConnectionDuration": "0s",
"maxStreamDuration": "0s"
}
},
Expand Down Expand Up @@ -59,7 +59,7 @@
{
"op": "add",
"path": "/type.googleapis.com~1envoy.config.listener.v3.Listener/outbound:IP_REDACTED:80/filterChains/0/filters/0/typedConfig/routeConfig/virtualHosts/0/routes/0/route/idleTimeout",
"value": "5s"
"value": "1800s"
},
{
"op": "remove",
Expand Down Expand Up @@ -108,7 +108,7 @@
"@type": "type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions",
"commonHttpProtocolOptions": {
"idleTimeout": "3600s",
"maxConnectionDuration": "5s",
"maxConnectionDuration": "0s",
"maxStreamDuration": "0s"
},
"explicitHttpConfig": {
Expand Down Expand Up @@ -432,7 +432,7 @@
"name": "9Zuf5Tg79OuZcQITwBbQykxAk2u4fRKrwYn3//AL4Yo=",
"route": {
"cluster": "envoyconfig_test-server__kuma-3_msvc_80",
"idleTimeout": "5s",
"idleTimeout": "1800s",
"timeout": "15s"
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"path": "/type.googleapis.com~1envoy.config.cluster.v3.Cluster/envoyconfig_test-server__kuma-3_msvc_80/typedExtensionProtocolOptions/envoy.extensions.upstreams.http.v3.HttpProtocolOptions/commonHttpProtocolOptions",
"value": {
"idleTimeout": "3600s",
"maxConnectionDuration": "5s",
"maxConnectionDuration": "0s",
"maxStreamDuration": "0s"
}
},
Expand Down Expand Up @@ -99,7 +99,7 @@
{
"op": "add",
"path": "/type.googleapis.com~1envoy.config.listener.v3.Listener/outbound:IP_REDACTED:80/filterChains/0/filters/0/typedConfig/routeConfig/virtualHosts/0/routes/0/route/idleTimeout",
"value": "5s"
"value": "1800s"
},
{
"op": "remove",
Expand Down Expand Up @@ -148,7 +148,7 @@
"@type": "type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions",
"commonHttpProtocolOptions": {
"idleTimeout": "3600s",
"maxConnectionDuration": "5s",
"maxConnectionDuration": "0s",
"maxStreamDuration": "0s"
},
"explicitHttpConfig": {
Expand Down Expand Up @@ -530,7 +530,7 @@
"name": "9Zuf5Tg79OuZcQITwBbQykxAk2u4fRKrwYn3//AL4Yo=",
"route": {
"cluster": "envoyconfig_test-server__kuma-3_msvc_80",
"idleTimeout": "5s",
"idleTimeout": "1800s",
"timeout": "15s"
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,26 @@
"maxStreamDuration": "54s"
}
},
{
"op": "remove",
"path": "/type.googleapis.com~1envoy.config.cluster.v3.Cluster/localhost:3000/connectTimeout",
"value": "10s"
},
{
"op": "add",
"path": "/type.googleapis.com~1envoy.config.cluster.v3.Cluster/localhost:3000/connectTimeout",
"value": "5s"
},
{
"op": "remove",
"path": "/type.googleapis.com~1envoy.config.listener.v3.Listener/inbound:IP_REDACTED:3000/filterChains/0/filters/0/typedConfig/idleTimeout",
"value": "7200s"
},
{
"op": "add",
"path": "/type.googleapis.com~1envoy.config.listener.v3.Listener/inbound:IP_REDACTED:3000/filterChains/0/filters/0/typedConfig/idleTimeout",
"value": "3600s"
},
{
"op": "add",
"path": "/type.googleapis.com~1envoy.config.listener.v3.Listener/outbound:IP_REDACTED:3000/filterChains/0/filters/0/typedConfig/idleTimeout",
Expand Down Expand Up @@ -125,7 +145,7 @@
},
"localhost:3000": {
"altStatName": "localhost_3000",
"connectTimeout": "10s",
"connectTimeout": "5s",
"loadAssignment": {
"clusterName": "localhost:3000",
"endpoints": [
Expand Down Expand Up @@ -265,7 +285,7 @@
"typedConfig": {
"@type": "type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy",
"cluster": "localhost:3000",
"idleTimeout": "7200s",
"idleTimeout": "3600s",
"statPrefix": "localhost_3000"
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,66 @@
"maxStreamDuration": "54s"
}
},
{
"op": "remove",
"path": "/type.googleapis.com~1envoy.config.cluster.v3.Cluster/localhost:8080/connectTimeout",
"value": "10s"
},
{
"op": "add",
"path": "/type.googleapis.com~1envoy.config.cluster.v3.Cluster/localhost:8080/connectTimeout",
"value": "5s"
},
{
"op": "remove",
"path": "/type.googleapis.com~1envoy.config.cluster.v3.Cluster/localhost:8080/typedExtensionProtocolOptions/envoy.extensions.upstreams.http.v3.HttpProtocolOptions/commonHttpProtocolOptions/idleTimeout",
"value": "7200s"
},
{
"op": "add",
"path": "/type.googleapis.com~1envoy.config.cluster.v3.Cluster/localhost:8080/typedExtensionProtocolOptions/envoy.extensions.upstreams.http.v3.HttpProtocolOptions/commonHttpProtocolOptions/idleTimeout",
"value": "3600s"
},
{
"op": "add",
"path": "/type.googleapis.com~1envoy.config.cluster.v3.Cluster/localhost:8080/typedExtensionProtocolOptions/envoy.extensions.upstreams.http.v3.HttpProtocolOptions/commonHttpProtocolOptions/maxConnectionDuration",
"value": "0s"
},
{
"op": "add",
"path": "/type.googleapis.com~1envoy.config.cluster.v3.Cluster/localhost:8080/typedExtensionProtocolOptions/envoy.extensions.upstreams.http.v3.HttpProtocolOptions/commonHttpProtocolOptions/maxStreamDuration",
"value": "0s"
},
{
"op": "remove",
"path": "/type.googleapis.com~1envoy.config.listener.v3.Listener/inbound:IP_REDACTED:80/filterChains/0/filters/0/typedConfig/commonHttpProtocolOptions/idleTimeout",
"value": "7200s"
},
{
"op": "add",
"path": "/type.googleapis.com~1envoy.config.listener.v3.Listener/inbound:IP_REDACTED:80/filterChains/0/filters/0/typedConfig/commonHttpProtocolOptions/idleTimeout",
"value": "0s"
},
{
"op": "add",
"path": "/type.googleapis.com~1envoy.config.listener.v3.Listener/inbound:IP_REDACTED:80/filterChains/0/filters/0/typedConfig/requestHeadersTimeout",
"value": "0s"
},
{
"op": "add",
"path": "/type.googleapis.com~1envoy.config.listener.v3.Listener/inbound:IP_REDACTED:80/filterChains/0/filters/0/typedConfig/routeConfig/virtualHosts/0/routes/0/route/idleTimeout",
"value": "1800s"
},
{
"op": "remove",
"path": "/type.googleapis.com~1envoy.config.listener.v3.Listener/inbound:IP_REDACTED:80/filterChains/0/filters/0/typedConfig/routeConfig/virtualHosts/0/routes/0/route/timeout",
"value": "0s"
},
{
"op": "add",
"path": "/type.googleapis.com~1envoy.config.listener.v3.Listener/inbound:IP_REDACTED:80/filterChains/0/filters/0/typedConfig/routeConfig/virtualHosts/0/routes/0/route/timeout",
"value": "15s"
},
{
"op": "add",
"path": "/type.googleapis.com~1envoy.config.listener.v3.Listener/outbound:IP_REDACTED:3000/filterChains/0/filters/0/typedConfig/idleTimeout",
Expand Down Expand Up @@ -125,7 +185,7 @@
},
"localhost:8080": {
"altStatName": "localhost_8080",
"connectTimeout": "10s",
"connectTimeout": "5s",
"loadAssignment": {
"clusterName": "localhost:8080",
"endpoints": [
Expand All @@ -151,7 +211,9 @@
"envoy.extensions.upstreams.http.v3.HttpProtocolOptions": {
"@type": "type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions",
"commonHttpProtocolOptions": {
"idleTimeout": "7200s"
"idleTimeout": "3600s",
"maxConnectionDuration": "0s",
"maxStreamDuration": "0s"
},
"explicitHttpConfig": {
"httpProtocolOptions": {}
Expand Down Expand Up @@ -276,7 +338,7 @@
"typedConfig": {
"@type": "type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager",
"commonHttpProtocolOptions": {
"idleTimeout": "7200s"
"idleTimeout": "0s"
},
"forwardClientCertDetails": "SANITIZE_SET",
"httpFilters": [
Expand All @@ -287,6 +349,7 @@
}
}
],
"requestHeadersTimeout": "0s",
"routeConfig": {
"name": "inbound:test-server",
"requestHeadersToRemove": [
Expand All @@ -306,7 +369,8 @@
},
"route": {
"cluster": "localhost:8080",
"timeout": "0s"
"idleTimeout": "1800s",
"timeout": "15s"
}
}
]
Expand Down

0 comments on commit 39d928f

Please sign in to comment.