mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-18 08:09:58 +00:00
kube-controller-manager: enable WatchListClient
This commit is contained in:
parent
be00cded2d
commit
825091693d
@ -25,6 +25,7 @@ import (
|
|||||||
utilerrors "k8s.io/apimachinery/pkg/util/errors"
|
utilerrors "k8s.io/apimachinery/pkg/util/errors"
|
||||||
apiserveroptions "k8s.io/apiserver/pkg/server/options"
|
apiserveroptions "k8s.io/apiserver/pkg/server/options"
|
||||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||||
|
clientgofeaturegate "k8s.io/client-go/features"
|
||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
clientgokubescheme "k8s.io/client-go/kubernetes/scheme"
|
clientgokubescheme "k8s.io/client-go/kubernetes/scheme"
|
||||||
restclient "k8s.io/client-go/rest"
|
restclient "k8s.io/client-go/rest"
|
||||||
@ -33,10 +34,12 @@ import (
|
|||||||
cpnames "k8s.io/cloud-provider/names"
|
cpnames "k8s.io/cloud-provider/names"
|
||||||
cpoptions "k8s.io/cloud-provider/options"
|
cpoptions "k8s.io/cloud-provider/options"
|
||||||
cliflag "k8s.io/component-base/cli/flag"
|
cliflag "k8s.io/component-base/cli/flag"
|
||||||
|
"k8s.io/component-base/featuregate"
|
||||||
"k8s.io/component-base/logs"
|
"k8s.io/component-base/logs"
|
||||||
logsapi "k8s.io/component-base/logs/api/v1"
|
logsapi "k8s.io/component-base/logs/api/v1"
|
||||||
"k8s.io/component-base/metrics"
|
"k8s.io/component-base/metrics"
|
||||||
cmoptions "k8s.io/controller-manager/options"
|
cmoptions "k8s.io/controller-manager/options"
|
||||||
|
"k8s.io/klog/v2"
|
||||||
kubectrlmgrconfigv1alpha1 "k8s.io/kube-controller-manager/config/v1alpha1"
|
kubectrlmgrconfigv1alpha1 "k8s.io/kube-controller-manager/config/v1alpha1"
|
||||||
kubecontrollerconfig "k8s.io/kubernetes/cmd/kube-controller-manager/app/config"
|
kubecontrollerconfig "k8s.io/kubernetes/cmd/kube-controller-manager/app/config"
|
||||||
"k8s.io/kubernetes/cmd/kube-controller-manager/names"
|
"k8s.io/kubernetes/cmd/kube-controller-manager/names"
|
||||||
@ -273,6 +276,16 @@ func (s *KubeControllerManagerOptions) Flags(allControllers []string, disabledBy
|
|||||||
fs := fss.FlagSet("misc")
|
fs := fss.FlagSet("misc")
|
||||||
fs.StringVar(&s.Master, "master", s.Master, "The address of the Kubernetes API server (overrides any value in kubeconfig).")
|
fs.StringVar(&s.Master, "master", s.Master, "The address of the Kubernetes API server (overrides any value in kubeconfig).")
|
||||||
fs.StringVar(&s.Generic.ClientConnection.Kubeconfig, "kubeconfig", s.Generic.ClientConnection.Kubeconfig, "Path to kubeconfig file with authorization and master location information (the master location can be overridden by the master flag).")
|
fs.StringVar(&s.Generic.ClientConnection.Kubeconfig, "kubeconfig", s.Generic.ClientConnection.Kubeconfig, "Path to kubeconfig file with authorization and master location information (the master location can be overridden by the master flag).")
|
||||||
|
|
||||||
|
if !utilfeature.DefaultFeatureGate.Enabled(featuregate.Feature(clientgofeaturegate.WatchListClient)) {
|
||||||
|
if err := utilfeature.DefaultMutableFeatureGate.OverrideDefault(featuregate.Feature(clientgofeaturegate.WatchListClient), true); err != nil {
|
||||||
|
// it turns out that there are some integration tests that start multiple control plane components which
|
||||||
|
// share global DefaultFeatureGate/DefaultMutableFeatureGate variables.
|
||||||
|
// in those cases, the above call will fail (FG already registered and cannot be overridden), and the error will be logged.
|
||||||
|
klog.Errorf("unable to set %s feature gate, err: %v", clientgofeaturegate.WatchListClient, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
utilfeature.DefaultMutableFeatureGate.AddFlag(fss.FlagSet("generic"))
|
utilfeature.DefaultMutableFeatureGate.AddFlag(fss.FlagSet("generic"))
|
||||||
|
|
||||||
return fss
|
return fss
|
||||||
|
@ -1353,8 +1353,8 @@ func TestWatchListClientFlagChange(t *testing.T) {
|
|||||||
|
|
||||||
func assertWatchListClientFeatureDefaultValue(t *testing.T) {
|
func assertWatchListClientFeatureDefaultValue(t *testing.T) {
|
||||||
watchListClientDefaultValue := clientgofeaturegate.FeatureGates().Enabled(clientgofeaturegate.WatchListClient)
|
watchListClientDefaultValue := clientgofeaturegate.FeatureGates().Enabled(clientgofeaturegate.WatchListClient)
|
||||||
if watchListClientDefaultValue {
|
if !watchListClientDefaultValue {
|
||||||
t.Fatalf("expected %q feature gate to be disabled for KCM", clientgofeaturegate.WatchListClient)
|
t.Fatalf("expected %q feature gate to be enabled for KCM", clientgofeaturegate.WatchListClient)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1365,7 +1365,7 @@ func assertWatchListCommandLineDefaultValue(t *testing.T, fs *pflag.FlagSet) {
|
|||||||
t.Fatalf("didn't find %q flag", fgFlagName)
|
t.Fatalf("didn't find %q flag", fgFlagName)
|
||||||
}
|
}
|
||||||
|
|
||||||
expectedWatchListClientString := "WatchListClient=true|false (BETA - default=false)"
|
expectedWatchListClientString := "WatchListClient=true|false (BETA - default=true)"
|
||||||
if !strings.Contains(fg.Usage, expectedWatchListClientString) {
|
if !strings.Contains(fg.Usage, expectedWatchListClientString) {
|
||||||
t.Fatalf("%q flag doesn't contain the expected usage for %v feature gate.\nExpected = %v\nUsage = %v", fgFlagName, clientgofeaturegate.WatchListClient, expectedWatchListClientString, fg.Usage)
|
t.Fatalf("%q flag doesn't contain the expected usage for %v feature gate.\nExpected = %v\nUsage = %v", fgFlagName, clientgofeaturegate.WatchListClient, expectedWatchListClientString, fg.Usage)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user