From 7336eeab8a498e2f1df73fa95a1f16498745a7d6 Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Fri, 26 Jan 2018 10:44:41 -0500 Subject: [PATCH 1/2] Add deprecated stage of feature gates --- .../src/k8s.io/apiserver/pkg/util/feature/feature_gate.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/staging/src/k8s.io/apiserver/pkg/util/feature/feature_gate.go b/staging/src/k8s.io/apiserver/pkg/util/feature/feature_gate.go index 95ca0e77aaa..30687712489 100644 --- a/staging/src/k8s.io/apiserver/pkg/util/feature/feature_gate.go +++ b/staging/src/k8s.io/apiserver/pkg/util/feature/feature_gate.go @@ -67,6 +67,9 @@ const ( Alpha = prerelease("ALPHA") Beta = prerelease("BETA") GA = prerelease("") + + // Deprecated + Deprecated = prerelease("DEPRECATED") ) // FeatureGate parses and stores flag gates for known features from @@ -157,7 +160,7 @@ func (f *featureGate) Set(value string) error { } arr := strings.SplitN(s, "=", 2) k := Feature(strings.TrimSpace(arr[0])) - _, ok := known[k] + featureSpec, ok := known[k] if !ok { return fmt.Errorf("unrecognized key: %s", k) } @@ -170,6 +173,9 @@ func (f *featureGate) Set(value string) error { return fmt.Errorf("invalid value of %s: %s, err: %v", k, v, err) } enabled[k] = boolValue + if boolValue && featureSpec.PreRelease == Deprecated { + glog.Warningf("enabling deprecated feature gate %s", k) + } // Handle "special" features like "all alpha gates" if fn, found := f.special[k]; found { From ca843ed4ac6d23f41b48145c02ca36a0ed925fae Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Fri, 26 Jan 2018 10:44:53 -0500 Subject: [PATCH 2/2] Mark ServiceProxyAllowExternalIPs feature as deprecated --- pkg/features/kube_features.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index 9c82f4d7213..0139759d7c4 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -169,7 +169,7 @@ const ( ServiceNodeExclusion utilfeature.Feature = "ServiceNodeExclusion" // owner @brendandburns - // stable: v1.10 + // deprecated: v1.10 // // Enable the service proxy to contact external IP addresses. Note this feature is present // only for backward compatability, it will be removed in the 1.11 release. @@ -283,6 +283,6 @@ var defaultKubernetesFeatureGates = map[utilfeature.Feature]utilfeature.FeatureS // unintentionally on either side: apiextensionsfeatures.CustomResourceValidation: {Default: true, PreRelease: utilfeature.Beta}, - // backward compatability features that enable backwards compatability but should be removed soon. - ServiceProxyAllowExternalIPs: {Default: false, PreRelease: utilfeature.Beta}, + // features that enable backwards compatability but are scheduled to be removed + ServiceProxyAllowExternalIPs: {Default: false, PreRelease: utilfeature.Deprecated}, }