Skip to content

Commit

Permalink
fix 1589-disable hpa controller
Browse files Browse the repository at this point in the history
Signed-off-by: Poor12 <shentiecheng@huawei.com>
  • Loading branch information
Poor12 committed Apr 6, 2022
1 parent 9cbe962 commit 83be916
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 10 deletions.
5 changes: 4 additions & 1 deletion cmd/agent/app/agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"github.com/spf13/cobra"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/client-go/dynamic"
kubeclientset "k8s.io/client-go/kubernetes"
restclient "k8s.io/client-go/rest"
Expand Down Expand Up @@ -90,6 +91,8 @@ func NewAgentCommand(ctx context.Context) *cobra.Command {

var controllers = make(controllerscontext.Initializers)

var controllersDisabledByDefault = sets.NewString()

func init() {
controllers["clusterStatus"] = startClusterStatusController
controllers["execution"] = startExecutionController
Expand Down Expand Up @@ -192,7 +195,7 @@ func setupControllers(mgr controllerruntime.Manager, opts *options.Options, stop
StopChan: stopChan,
}

if err := controllers.StartControllers(controllerContext); err != nil {
if err := controllers.StartControllers(controllerContext, controllersDisabledByDefault); err != nil {
return fmt.Errorf("error starting controllers: %w", err)
}

Expand Down
10 changes: 8 additions & 2 deletions cmd/controller-manager/app/controllermanager.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (

"github.com/spf13/cobra"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/client-go/discovery"
"k8s.io/client-go/dynamic"
kubeclientset "k8s.io/client-go/kubernetes"
Expand Down Expand Up @@ -79,7 +80,7 @@ func NewControllerManagerCommand(ctx context.Context) *cobra.Command {
// and update the flag usage.
genericFlagSet.AddGoFlagSet(flag.CommandLine)
genericFlagSet.Lookup("kubeconfig").Usage = "Path to karmada control plane kubeconfig file."
opts.AddFlags(genericFlagSet, controllers.ControllerNames())
opts.AddFlags(genericFlagSet, controllers.ControllerNames(), controllersDisabledByDefault.List())

// Set klog flags
logsFlagSet := fss.FlagSet("logs")
Expand Down Expand Up @@ -146,6 +147,11 @@ func Run(ctx context.Context, opts *options.Options) error {

var controllers = make(controllerscontext.Initializers)

// controllersDisabledByDefault is the set of controllers which is disabled by default
var controllersDisabledByDefault = sets.NewString(
"hpa",
)

func init() {
controllers["cluster"] = startClusterController
controllers["clusterStatus"] = startClusterStatusController
Expand Down Expand Up @@ -483,7 +489,7 @@ func setupControllers(mgr controllerruntime.Manager, opts *options.Options, stop
ResourceInterpreter: resourceInterpreter,
}

if err := controllers.StartControllers(controllerContext); err != nil {
if err := controllers.StartControllers(controllerContext, controllersDisabledByDefault); err != nil {
klog.Fatalf("error starting controllers: %v", err)
}

Expand Down
6 changes: 3 additions & 3 deletions cmd/controller-manager/app/options/options.go
Original file line number Diff line number Diff line change
Expand Up @@ -115,10 +115,10 @@ func NewOptions() *Options {
}

// AddFlags adds flags to the specified FlagSet.
func (o *Options) AddFlags(flags *pflag.FlagSet, allControllers []string) {
func (o *Options) AddFlags(flags *pflag.FlagSet, allControllers, disabledByDefaultControllers []string) {
flags.StringSliceVar(&o.Controllers, "controllers", []string{"*"}, fmt.Sprintf(
"A list of controllers to enable. '*' enables all on-by-default controllers, 'foo' enables the controller named 'foo', '-foo' disables the controller named 'foo'. All controllers: %s.",
strings.Join(allControllers, ", "),
"A list of controllers to enable. '*' enables all on-by-default controllers, 'foo' enables the controller named 'foo', '-foo' disables the controller named 'foo'. \nAll controllers: %s.\nDisabled-by-default controllers: %s",
strings.Join(allControllers, ", "), strings.Join(disabledByDefaultControllers, ", "),
))
flags.StringVar(&o.BindAddress, "bind-address", defaultBindAddress,
"The IP address on which to listen for the --secure-port port.")
Expand Down
14 changes: 10 additions & 4 deletions pkg/controllers/context/context.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ type Context struct {
}

// IsControllerEnabled check if a specified controller enabled or not.
func (c Context) IsControllerEnabled(name string) bool {
func (c Context) IsControllerEnabled(name string, disabledByDefaultControllers sets.String) bool {
hasStar := false
for _, ctrl := range c.Opts.Controllers {
if ctrl == name {
Expand All @@ -80,7 +80,13 @@ func (c Context) IsControllerEnabled(name string) bool {
hasStar = true
}
}
return hasStar
// if we get here, there was no explicit choice
if !hasStar {
// nothing on by default
return false
}

return !disabledByDefaultControllers.Has(name)
}

// InitFunc is used to launch a particular controller.
Expand All @@ -97,9 +103,9 @@ func (i Initializers) ControllerNames() []string {
}

// StartControllers starts a set of controllers with a specified ControllerContext
func (i Initializers) StartControllers(ctx Context) error {
func (i Initializers) StartControllers(ctx Context, controllersDisabledByDefault sets.String) error {
for controllerName, initFn := range i {
if !ctx.IsControllerEnabled(controllerName) {
if !ctx.IsControllerEnabled(controllerName, controllersDisabledByDefault) {
klog.Warningf("%q is disabled", controllerName)
continue
}
Expand Down

0 comments on commit 83be916

Please sign in to comment.