From 60043c3457ee2eec0286c3a7c1c08e94b972798e Mon Sep 17 00:00:00 2001 From: Zac Blazic Date: Tue, 14 Feb 2017 01:40:27 +0200 Subject: [PATCH] Add idle timeout to api load balancer Defaults to 5 minutes, but can be adjusted by editing the cluster spec and performing a cluster update. --- pkg/model/api_loadbalancer.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pkg/model/api_loadbalancer.go b/pkg/model/api_loadbalancer.go index dfb148001b..1607c341d4 100644 --- a/pkg/model/api_loadbalancer.go +++ b/pkg/model/api_loadbalancer.go @@ -18,11 +18,15 @@ package model import ( "fmt" + "time" + "k8s.io/kops/pkg/apis/kops" "k8s.io/kops/upup/pkg/fi" "k8s.io/kops/upup/pkg/fi/cloudup/awstasks" ) +const LoadBalancerDefaultIdleTimeout = 5 * time.Minute + // APILoadBalancerBuilder builds a LoadBalancer for accessing the API type APILoadBalancerBuilder struct { *KopsModelContext @@ -79,6 +83,11 @@ func (b *APILoadBalancerBuilder) Build(c *fi.ModelBuilderContext) error { elbSubnets = append(elbSubnets, b.LinkToSubnet(subnet)) } + idleTimeout := LoadBalancerDefaultIdleTimeout + if lbSpec.IdleTimeoutSeconds != nil { + idleTimeout = time.Second * time.Duration(*lbSpec.IdleTimeoutSeconds) + } + elb = &awstasks.LoadBalancer{ Name: s("api." + b.ClusterName()), ID: s(elbID), @@ -98,6 +107,10 @@ func (b *APILoadBalancerBuilder) Build(c *fi.ModelBuilderContext) error { HealthyThreshold: i64(2), UnhealthyThreshold: i64(2), }, + + ConnectionSettings: &awstasks.LoadBalancerConnectionSettings{ + IdleTimeout: i64(int64(idleTimeout.Seconds())), + }, } switch lbSpec.Type {