mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-10-31 10:18:13 +00:00 
			
		
		
		
	Merge pull request #128824 from yongruilin/flagz-controller-manager
feat: Add flagz endpoint for kube-controller-manager
This commit is contained in:
		| @@ -22,11 +22,15 @@ import ( | |||||||
| 	restclient "k8s.io/client-go/rest" | 	restclient "k8s.io/client-go/rest" | ||||||
| 	"k8s.io/client-go/tools/record" | 	"k8s.io/client-go/tools/record" | ||||||
| 	basecompatibility "k8s.io/component-base/compatibility" | 	basecompatibility "k8s.io/component-base/compatibility" | ||||||
|  | 	"k8s.io/component-base/zpages/flagz" | ||||||
| 	kubectrlmgrconfig "k8s.io/kubernetes/pkg/controller/apis/config" | 	kubectrlmgrconfig "k8s.io/kubernetes/pkg/controller/apis/config" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // Config is the main context object for the controller manager. | // Config is the main context object for the controller manager. | ||||||
| type Config struct { | type Config struct { | ||||||
|  | 	// Flagz is the Reader interface to get flags for the flagz page. | ||||||
|  | 	Flagz flagz.Reader | ||||||
|  |  | ||||||
| 	ComponentConfig kubectrlmgrconfig.KubeControllerManagerConfiguration | 	ComponentConfig kubectrlmgrconfig.KubeControllerManagerConfiguration | ||||||
|  |  | ||||||
| 	SecureServing *apiserver.SecureServingInfo | 	SecureServing *apiserver.SecureServingInfo | ||||||
|   | |||||||
| @@ -66,6 +66,7 @@ import ( | |||||||
| 	utilversion "k8s.io/component-base/version" | 	utilversion "k8s.io/component-base/version" | ||||||
| 	"k8s.io/component-base/version/verflag" | 	"k8s.io/component-base/version/verflag" | ||||||
| 	zpagesfeatures "k8s.io/component-base/zpages/features" | 	zpagesfeatures "k8s.io/component-base/zpages/features" | ||||||
|  | 	"k8s.io/component-base/zpages/flagz" | ||||||
| 	"k8s.io/component-base/zpages/statusz" | 	"k8s.io/component-base/zpages/statusz" | ||||||
| 	genericcontrollermanager "k8s.io/controller-manager/app" | 	genericcontrollermanager "k8s.io/controller-manager/app" | ||||||
| 	"k8s.io/controller-manager/controller" | 	"k8s.io/controller-manager/controller" | ||||||
| @@ -156,6 +157,7 @@ controller, and serviceaccounts controller.`, | |||||||
|  |  | ||||||
| 	fs := cmd.Flags() | 	fs := cmd.Flags() | ||||||
| 	namedFlagSets := s.Flags(KnownControllers(), ControllersDisabledByDefault(), ControllerAliases()) | 	namedFlagSets := s.Flags(KnownControllers(), ControllersDisabledByDefault(), ControllerAliases()) | ||||||
|  | 	s.ParsedFlags = &namedFlagSets | ||||||
| 	verflag.AddFlags(namedFlagSets.FlagSet("global")) | 	verflag.AddFlags(namedFlagSets.FlagSet("global")) | ||||||
| 	globalflag.AddGlobalFlags(namedFlagSets.FlagSet("global"), cmd.Name(), logs.SkipLoggingConfigurationFlags()) | 	globalflag.AddGlobalFlags(namedFlagSets.FlagSet("global"), cmd.Name(), logs.SkipLoggingConfigurationFlags()) | ||||||
| 	for _, f := range namedFlagSets.FlagSets { | 	for _, f := range namedFlagSets.FlagSets { | ||||||
| @@ -213,6 +215,11 @@ func Run(ctx context.Context, c *config.CompletedConfig) error { | |||||||
| 	if c.SecureServing != nil { | 	if c.SecureServing != nil { | ||||||
| 		unsecuredMux = genericcontrollermanager.NewBaseHandler(&c.ComponentConfig.Generic.Debugging, healthzHandler) | 		unsecuredMux = genericcontrollermanager.NewBaseHandler(&c.ComponentConfig.Generic.Debugging, healthzHandler) | ||||||
| 		slis.SLIMetricsWithReset{}.Install(unsecuredMux) | 		slis.SLIMetricsWithReset{}.Install(unsecuredMux) | ||||||
|  | 		if utilfeature.DefaultFeatureGate.Enabled(zpagesfeatures.ComponentFlagz) { | ||||||
|  | 			if c.Flagz != nil { | ||||||
|  | 				flagz.Install(unsecuredMux, kubeControllerManager, c.Flagz) | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  |  | ||||||
| 		if utilfeature.DefaultFeatureGate.Enabled(zpagesfeatures.ComponentStatusz) { | 		if utilfeature.DefaultFeatureGate.Enabled(zpagesfeatures.ComponentStatusz) { | ||||||
| 			statusz.Install(unsecuredMux, kubeControllerManager, statusz.NewRegistry(c.ComponentGlobalsRegistry.EffectiveVersionFor(basecompatibility.DefaultKubeComponent))) | 			statusz.Install(unsecuredMux, kubeControllerManager, statusz.NewRegistry(c.ComponentGlobalsRegistry.EffectiveVersionFor(basecompatibility.DefaultKubeComponent))) | ||||||
|   | |||||||
| @@ -42,6 +42,7 @@ import ( | |||||||
| 	"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" | ||||||
|  | 	"k8s.io/component-base/zpages/flagz" | ||||||
| 	cmoptions "k8s.io/controller-manager/options" | 	cmoptions "k8s.io/controller-manager/options" | ||||||
| 	"k8s.io/klog/v2" | 	"k8s.io/klog/v2" | ||||||
| 	kubectrlmgrconfigv1alpha1 "k8s.io/kube-controller-manager/config/v1alpha1" | 	kubectrlmgrconfigv1alpha1 "k8s.io/kube-controller-manager/config/v1alpha1" | ||||||
| @@ -108,6 +109,9 @@ type KubeControllerManagerOptions struct { | |||||||
|  |  | ||||||
| 	// ComponentGlobalsRegistry is the registry where the effective versions and feature gates for all components are stored. | 	// ComponentGlobalsRegistry is the registry where the effective versions and feature gates for all components are stored. | ||||||
| 	ComponentGlobalsRegistry basecompatibility.ComponentGlobalsRegistry | 	ComponentGlobalsRegistry basecompatibility.ComponentGlobalsRegistry | ||||||
|  |  | ||||||
|  | 	// Parsedflags holds the parsed CLI flags. | ||||||
|  | 	ParsedFlags *cliflag.NamedFlagSets | ||||||
| } | } | ||||||
|  |  | ||||||
| // NewKubeControllerManagerOptions creates a new KubeControllerManagerOptions with a default config. | // NewKubeControllerManagerOptions creates a new KubeControllerManagerOptions with a default config. | ||||||
| @@ -510,5 +514,11 @@ func (s KubeControllerManagerOptions) Config(allControllers []string, disabledBy | |||||||
| 	} | 	} | ||||||
| 	s.Metrics.Apply() | 	s.Metrics.Apply() | ||||||
|  |  | ||||||
|  | 	if s.ParsedFlags != nil { | ||||||
|  | 		c.Flagz = flagz.NamedFlagSetsReader{ | ||||||
|  | 			FlagSets: *s.ParsedFlags, | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	return c, nil | 	return c, nil | ||||||
| } | } | ||||||
|   | |||||||
| @@ -102,6 +102,7 @@ func StartTestServer(ctx context.Context, customFlags []string) (result TestServ | |||||||
| 		fs.AddFlagSet(f) | 		fs.AddFlagSet(f) | ||||||
| 	} | 	} | ||||||
| 	fs.Parse(customFlags) | 	fs.Parse(customFlags) | ||||||
|  | 	s.ParsedFlags = &namedFlagSets | ||||||
|  |  | ||||||
| 	if s.SecureServing.BindPort != 0 { | 	if s.SecureServing.BindPort != 0 { | ||||||
| 		s.SecureServing.Listener, s.SecureServing.BindPort, err = createListenerOnFreePort() | 		s.SecureServing.Listener, s.SecureServing.BindPort, err = createListenerOnFreePort() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Kubernetes Prow Robot
					Kubernetes Prow Robot