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.
This commit is contained in:
Zac Blazic 2017-02-14 01:40:27 +02:00
parent 74df54276b
commit 60043c3457
No known key found for this signature in database
GPG Key ID: D32D3DA37D26129E
1 changed files with 13 additions and 0 deletions

View File

@ -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 {