From 6eb62506e05d7181caf552e50d9b78609aea1943 Mon Sep 17 00:00:00 2001 From: David Eads Date: Fri, 23 Aug 2019 15:02:26 -0400 Subject: [PATCH] allow an apiserver to only serve http1 --- staging/src/k8s.io/apiserver/pkg/server/config.go | 5 ++++- .../k8s.io/apiserver/pkg/server/secure_serving.go | 13 ++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/staging/src/k8s.io/apiserver/pkg/server/config.go b/staging/src/k8s.io/apiserver/pkg/server/config.go index 37bd8ba4254..f3e5f6e0407 100644 --- a/staging/src/k8s.io/apiserver/pkg/server/config.go +++ b/staging/src/k8s.io/apiserver/pkg/server/config.go @@ -29,7 +29,7 @@ import ( "sync/atomic" "time" - "github.com/evanphx/json-patch" + jsonpatch "github.com/evanphx/json-patch" "github.com/go-openapi/spec" "github.com/pborman/uuid" @@ -247,6 +247,9 @@ type SecureServingInfo struct { // HTTP2MaxStreamsPerConnection is the limit that the api server imposes on each client. // A value of zero means to use the default provided by golang's HTTP/2 support. HTTP2MaxStreamsPerConnection int + + // DisableHTTP2 indicates that http2 should not be enabled. + DisableHTTP2 bool } type AuthenticationInfo struct { diff --git a/staging/src/k8s.io/apiserver/pkg/server/secure_serving.go b/staging/src/k8s.io/apiserver/pkg/server/secure_serving.go index a08df1af287..031f4b045ad 100644 --- a/staging/src/k8s.io/apiserver/pkg/server/secure_serving.go +++ b/staging/src/k8s.io/apiserver/pkg/server/secure_serving.go @@ -60,6 +60,11 @@ func (s *SecureServingInfo) Serve(handler http.Handler, shutdownTimeout time.Dur }, } + if s.DisableHTTP2 { + klog.Info("Forcing use of http/1.1 only") + secureServer.TLSConfig.NextProtos = []string{"http/1.1"} + } + if s.MinTLSVersion > 0 { secureServer.TLSConfig.MinVersion = s.MinTLSVersion } @@ -108,9 +113,11 @@ func (s *SecureServingInfo) Serve(handler http.Handler, shutdownTimeout time.Dur // increase the connection buffer size from the 1MB default to handle the specified number of concurrent streams http2Options.MaxUploadBufferPerConnection = http2Options.MaxUploadBufferPerStream * int32(http2Options.MaxConcurrentStreams) - // apply settings to the server - if err := http2.ConfigureServer(secureServer, http2Options); err != nil { - return nil, fmt.Errorf("error configuring http2: %v", err) + if !s.DisableHTTP2 { + // apply settings to the server + if err := http2.ConfigureServer(secureServer, http2Options); err != nil { + return nil, fmt.Errorf("error configuring http2: %v", err) + } } klog.Infof("Serving securely on %s", secureServer.Addr)