From c115b5aec273291595d017d2b2cd72473557454f Mon Sep 17 00:00:00 2001 From: ksubrmnn Date: Tue, 5 Feb 2019 10:49:22 -0800 Subject: [PATCH] Add WinDSR and WinOverlay feature flags --- pkg/proxy/winkernel/BUILD | 2 ++ pkg/proxy/winkernel/proxier.go | 8 ++++++++ .../k8s.io/apiserver/pkg/features/kube_features.go | 14 ++++++++++++++ 3 files changed, 24 insertions(+) diff --git a/pkg/proxy/winkernel/BUILD b/pkg/proxy/winkernel/BUILD index 3c8c31a02b..c91644282e 100644 --- a/pkg/proxy/winkernel/BUILD +++ b/pkg/proxy/winkernel/BUILD @@ -24,6 +24,8 @@ go_library( "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/features:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//vendor/github.com/Microsoft/hcsshim:go_default_library", "//vendor/github.com/Microsoft/hcsshim/hcn:go_default_library", diff --git a/pkg/proxy/winkernel/proxier.go b/pkg/proxy/winkernel/proxier.go index e4e15f399e..b7e671219e 100644 --- a/pkg/proxy/winkernel/proxier.go +++ b/pkg/proxy/winkernel/proxier.go @@ -38,6 +38,8 @@ import ( "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/wait" + genericfeatures "k8s.io/apiserver/pkg/features" + utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/client-go/tools/record" apiservice "k8s.io/kubernetes/pkg/api/v1/service" "k8s.io/kubernetes/pkg/apis/core/v1/helper" @@ -531,6 +533,9 @@ func NewProxier( } klog.V(1).Infof("Hns Network loaded with info = %v", hnsNetworkInfo) isDSR := config.EnableDSR + if isDSR && !utilfeature.DefaultFeatureGate.Enabled(genericfeatures.WinDSR) { + return nil, fmt.Errorf("WinDSR feature gate not enabled") + } err = hcn.DSRSupported() if isDSR && err != nil { return nil, err @@ -539,6 +544,9 @@ func NewProxier( var sourceVip string var hostMac string if hnsNetworkInfo.networkType == "Overlay" { + if !utilfeature.DefaultFeatureGate.Enabled(genericfeatures.WinOverlay) { + return nil, fmt.Errorf("WinOverlay feature gate not enabled") + } err = hcn.RemoteSubnetSupported() if err != nil { return nil, err diff --git a/staging/src/k8s.io/apiserver/pkg/features/kube_features.go b/staging/src/k8s.io/apiserver/pkg/features/kube_features.go index 32a58fbad4..e99045896f 100644 --- a/staging/src/k8s.io/apiserver/pkg/features/kube_features.go +++ b/staging/src/k8s.io/apiserver/pkg/features/kube_features.go @@ -88,6 +88,18 @@ const ( // // Server-side apply. Merging happens on the server. ServerSideApply utilfeature.Feature = "ServerSideApply" + + // owner: @ksubrmnn + // alpha: v1.14 + // + // Allows kube-proxy to run in Overlay mode for Windows + WinOverlay utilfeature.Feature = "WinOverlay" + + // owner: @ksubrmnn + // alpha: v1.14 + // + // Allows kube-proxy to create DSR loadbalancers for Windows + WinDSR utilfeature.Feature = "WinDSR" ) func init() { @@ -106,4 +118,6 @@ var defaultKubernetesFeatureGates = map[utilfeature.Feature]utilfeature.FeatureS APIListChunking: {Default: true, PreRelease: utilfeature.Beta}, DryRun: {Default: true, PreRelease: utilfeature.Beta}, ServerSideApply: {Default: false, PreRelease: utilfeature.Alpha}, + WinOverlay: {Default: false, PreRelease: utilfeature.Alpha}, + WinDSR: {Default: false, PreRelease: utilfeature.Alpha}, }