diff --git a/CHANGELOG.md b/CHANGELOG.md index a7ee34587840..b4fd16acc8ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ BUG FIXES: + * consul/connect: Fixed a bug where gateway proxy connection default timeout not set [[GH-9851](https://github.com/hashicorp/nomad/pull/9851)] * scheduler: Fixed a bug where shared ports were not persisted during inplace updates for service jobs. [[GH-9830](https://github.com/hashicorp/nomad/issues/9830)] ## 1.0.2 (January 14, 2020) diff --git a/api/services.go b/api/services.go index 59e92f6794e7..f7e54011deeb 100644 --- a/api/services.go +++ b/api/services.go @@ -335,6 +335,8 @@ type ConsulGatewayBindAddress struct { } var ( + // defaultConnectTimeout is the default amount of time a connect gateway will + // wait for a response from an upstream service (same as consul) defaultGatewayConnectTimeout = 5 * time.Second ) diff --git a/nomad/job_endpoint_hook_connect.go b/nomad/job_endpoint_hook_connect.go index d429360dfcf5..40f7eeeb0a11 100644 --- a/nomad/job_endpoint_hook_connect.go +++ b/nomad/job_endpoint_hook_connect.go @@ -12,6 +12,12 @@ import ( "github.com/pkg/errors" ) +const ( + // defaultConnectTimeout is the default amount of time a connect gateway will + // wait for a response from an upstream service (same as consul) + defaultConnectTimeout = 5 * time.Second +) + var ( // connectSidecarResources returns the set of resources used by default for // the Consul Connect sidecar task @@ -324,6 +330,11 @@ func gatewayProxyForBridge(gateway *structs.ConsulGateway) *structs.ConsulGatewa proxy.Config = gateway.Proxy.Config } + // set default connect timeout if not set + if proxy.ConnectTimeout == nil { + proxy.ConnectTimeout = helper.TimeToPtr(defaultConnectTimeout) + } + // magically set the fields where Nomad knows what to do proxy.EnvoyGatewayNoDefaultBind = true proxy.EnvoyGatewayBindTaggedAddresses = false diff --git a/nomad/job_endpoint_hook_connect_test.go b/nomad/job_endpoint_hook_connect_test.go index 09c12f8c1abc..53252c2acf4c 100644 --- a/nomad/job_endpoint_hook_connect_test.go +++ b/nomad/job_endpoint_hook_connect_test.go @@ -492,6 +492,7 @@ func TestJobEndpointConnect_gatewayProxyForBridge(t *testing.T) { }, }) require.Equal(t, &structs.ConsulGatewayProxy{ + ConnectTimeout: helper.TimeToPtr(defaultConnectTimeout), EnvoyGatewayNoDefaultBind: true, EnvoyGatewayBindTaggedAddresses: false, EnvoyGatewayBindAddresses: map[string]*structs.ConsulGatewayBindAddress{ diff --git a/vendor/github.com/hashicorp/nomad/api/services.go b/vendor/github.com/hashicorp/nomad/api/services.go index 59e92f6794e7..f7e54011deeb 100644 --- a/vendor/github.com/hashicorp/nomad/api/services.go +++ b/vendor/github.com/hashicorp/nomad/api/services.go @@ -335,6 +335,8 @@ type ConsulGatewayBindAddress struct { } var ( + // defaultConnectTimeout is the default amount of time a connect gateway will + // wait for a response from an upstream service (same as consul) defaultGatewayConnectTimeout = 5 * time.Second )