diff --git a/features/features.go b/features/features.go index 7b9d050e..afb67f50 100644 --- a/features/features.go +++ b/features/features.go @@ -141,9 +141,3 @@ var ( // should use AddFeaturesToExistingFeatureGates followed by ReplaceFeatureGates. featureGates = &atomic.Value{} ) - -// defaultKubernetesFeatureGates consists of all known Kubernetes-specific feature keys. -// -// To add a new feature, define a key for it above and add it here. The features will be -// available throughout Kubernetes binaries. -var defaultKubernetesFeatureGates = map[Feature]FeatureSpec{} diff --git a/features/known_features.go b/features/known_features.go new file mode 100644 index 00000000..329eed72 --- /dev/null +++ b/features/known_features.go @@ -0,0 +1,49 @@ +/* +Copyright 2024 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package features + +const ( + // Every feature gate should add method here following this template: + // + // // owner: @username + // // alpha: v1.4 + // MyFeature featuregate.Feature = "MyFeature" + // + // Feature gates should be listed in alphabetical, case-sensitive + // (upper before any lower case character) order. This reduces the risk + // of code conflicts because changes are more likely to be scattered + // across the file. + + // owner: @p0lyn0mial + // beta: v1.30 + // + // Allow the client to get a stream of individual items instead of chunking from the server. + // + // NOTE: + // The feature is disabled in Beta by default because + // it will only be turned on for selected control plane component(s). + WatchListClient Feature = "WatchListClient" +) + +// defaultKubernetesFeatureGates consists of all known Kubernetes-specific feature keys. +// +// To add a new feature, define a key for it above and add it here. +// After registering with the binary, the features are, by default, controllable using environment variables. +// For more details, please see envVarFeatureGates implementation. +var defaultKubernetesFeatureGates = map[Feature]FeatureSpec{ + WatchListClient: {Default: false, PreRelease: Beta}, +} diff --git a/go.mod b/go.mod index 5bf3719f..9d8e9c70 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( golang.org/x/term v0.15.0 golang.org/x/time v0.3.0 google.golang.org/protobuf v1.31.0 - k8s.io/api v0.0.0-20240111211838-39c80441f814 + k8s.io/api v0.0.0-20240114225744-c9c2aecc731b k8s.io/apimachinery v0.0.0-20240111211623-02a41040d88d k8s.io/klog/v2 v2.120.0 k8s.io/kube-openapi v0.0.0-20231113174909-778a5567bc1e @@ -61,6 +61,6 @@ require ( ) replace ( - k8s.io/api => k8s.io/api v0.0.0-20240111211838-39c80441f814 + k8s.io/api => k8s.io/api v0.0.0-20240114225744-c9c2aecc731b k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20240111211623-02a41040d88d ) diff --git a/go.sum b/go.sum index d0f3b2c2..4b652db2 100644 --- a/go.sum +++ b/go.sum @@ -157,8 +157,8 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.0.0-20240111211838-39c80441f814 h1:w+YEku14/5m9DIMFpUc18gIT7kd/1XnNpuRkel34p34= -k8s.io/api v0.0.0-20240111211838-39c80441f814/go.mod h1:gd8eHKGEAgKEJvMyjMHG88jdPdPbUS/GKULUOrS7+EU= +k8s.io/api v0.0.0-20240114225744-c9c2aecc731b h1:P4NQ7C/VCZXHN3HQh5/Xd5eNqwzh9o22d8GMzU2r2IU= +k8s.io/api v0.0.0-20240114225744-c9c2aecc731b/go.mod h1:gd8eHKGEAgKEJvMyjMHG88jdPdPbUS/GKULUOrS7+EU= k8s.io/apimachinery v0.0.0-20240111211623-02a41040d88d h1:3/zPMR6GopaaAWJTZvob/eJ3uujM6vYgB5Hf7y1gg3s= k8s.io/apimachinery v0.0.0-20240111211623-02a41040d88d/go.mod h1:TZi5dqCSETF0//y9r5QGBxc7W2udb08uXh6atA++S6Q= k8s.io/klog/v2 v2.120.0 h1:z+q5mfovBj1fKFxiRzsa2DsJLPIVMk/KFL81LMOfK+8=