This is an automated email from the ASF dual-hosted git repository.

xianjin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-uniffle.git


The following commit(s) were added to refs/heads/master by this push:
     new a6365cb8 [#645][Improvement]  feat(operator): support manager 
parameter configuration (#670)
a6365cb8 is described below

commit a6365cb8d2fdeda078a687ea165b76c7f3e017a8
Author: Yu Zhao <[email protected]>
AuthorDate: Sun Mar 5 20:12:21 2023 +0800

    [#645][Improvement]  feat(operator): support manager parameter 
configuration (#670)
    
    ### What changes were proposed in this pull request?
     Support Operator Manager parameter configuration.
    
    ### Why are the changes needed?
     1.  It is possible to customize parameters and modify the required 
configuration parameters.
     2. Hope to make reasonable use of Kubernetes services.
    
    Closes #645
    
    ### Does this PR introduce _any_ user-facing change?
    Because in real-world scenarios, it may be necessary to adjust some 
parameters, such as Namespace.
    
    ### How was this patch tested?
    Manually verified.
    
![image](https://user-images.githubusercontent.com/45311215/221807077-9b07f00d-e88e-4cea-894c-935f4096a1e7.png)
---
 deploy/kubernetes/operator/cmd/controller/main.go  |  5 +----
 .../operator/pkg/controller/config/config.go       | 25 ++++++++++++++++++++--
 2 files changed, 24 insertions(+), 6 deletions(-)

diff --git a/deploy/kubernetes/operator/cmd/controller/main.go 
b/deploy/kubernetes/operator/cmd/controller/main.go
index edebc133..357f6108 100644
--- a/deploy/kubernetes/operator/cmd/controller/main.go
+++ b/deploy/kubernetes/operator/cmd/controller/main.go
@@ -37,10 +37,7 @@ func main() {
        klog.Infof("run config: %+v", cfg)
 
        // create a manager for leader election.
-       mgr, err := ctrl.NewManager(cfg.RESTConfig, ctrl.Options{
-               LeaderElection:   true,
-               LeaderElectionID: cfg.LeaderElectionID(),
-       })
+       mgr, err := ctrl.NewManager(cfg.RESTConfig, cfg.ManagerOptions)
        if err != nil {
                klog.Fatal(err)
        }
diff --git a/deploy/kubernetes/operator/pkg/controller/config/config.go 
b/deploy/kubernetes/operator/pkg/controller/config/config.go
index 73f19f5a..3839fc16 100644
--- a/deploy/kubernetes/operator/pkg/controller/config/config.go
+++ b/deploy/kubernetes/operator/pkg/controller/config/config.go
@@ -19,18 +19,30 @@ package config
 
 import (
        "flag"
+       "time"
+
+       "k8s.io/utils/pointer"
+
+       ctrl "sigs.k8s.io/controller-runtime"
 
        
"github.com/apache/incubator-uniffle/deploy/kubernetes/operator/pkg/constants"
        
"github.com/apache/incubator-uniffle/deploy/kubernetes/operator/pkg/utils"
 )
 
 const (
-       flagWorkers = "workers"
+       flagWorkers                    = "workers"
+       managerLeaderElection          = "leader-election"
+       managerLeaderElectionID        = "leader-election-id"
+       managerLeaderElectionNamespace = "leader-election-namespace"
+       managerSyncPeriod              = "sync-period"
+       managerRetryPeriod             = "retry-period"
+       managerNamespace               = "namespace"
 )
 
 // Config contains all configurations.
 type Config struct {
-       Workers int
+       Workers        int
+       ManagerOptions ctrl.Options
        utils.GenericConfig
 }
 
@@ -41,7 +53,16 @@ func (c *Config) LeaderElectionID() string {
 
 // AddFlags adds all configurations to the global flags.
 func (c *Config) AddFlags() {
+       c.ManagerOptions.SyncPeriod = pointer.Duration(time.Hour * 10)
+       c.ManagerOptions.RetryPeriod = pointer.Duration(time.Second * 2)
        flag.IntVar(&c.Workers, flagWorkers, 1, "Concurrency of the rss 
controller.")
+       flag.BoolVar(&c.ManagerOptions.LeaderElection, managerLeaderElection, 
true, "LeaderElection determines whether or not to use leader election when 
starting the manager.")
+       flag.StringVar(&c.ManagerOptions.LeaderElectionID, 
managerLeaderElectionID, c.LeaderElectionID(), "LeaderElectionID determines the 
name of the resource that leader election will use for holding the leader 
lock.")
+       flag.StringVar(&c.ManagerOptions.LeaderElectionNamespace, 
managerLeaderElectionNamespace, "kube-system", "LeaderElectionNamespace 
determines the namespace in which the leader election resource will be 
created.")
+       flag.StringVar(&c.ManagerOptions.Namespace, managerNamespace, "", 
"Namespace if specified restricts the manager's cache to watch objects in the 
desired namespace Defaults to all namespaces.")
+       flag.DurationVar(c.ManagerOptions.SyncPeriod, managerSyncPeriod, 
time.Hour*10, "SyncPeriod determines the minimum frequency at which watched 
resources are reconciled.")
+       flag.DurationVar(c.ManagerOptions.RetryPeriod, managerRetryPeriod, 
time.Second*2, "RetryPeriod is the duration the LeaderElector clients should 
wait between tries of actions.")
+
        c.GenericConfig.AddFlags()
 }
 

Reply via email to