diff --git a/cmd/cdi-controller/controller.go b/cmd/cdi-controller/controller.go index 37487ddf67..3c790827f9 100644 --- a/cmd/cdi-controller/controller.go +++ b/cmd/cdi-controller/controller.go @@ -145,7 +145,14 @@ func start(ctx context.Context, cfg *rest.Config) { klog.Fatalf("Error building extClient: %s", err.Error()) } - mgr, err := manager.New(config.GetConfigOrDie(), manager.Options{}) + opts := manager.Options{ + LeaderElection: true, + LeaderElectionNamespace: namespace, + LeaderElectionID: "cdi-controller-leader-election-helper", + LeaderElectionResourceLock: "leases", + } + + mgr, err := manager.New(config.GetConfigOrDie(), opts) if err != nil { klog.Errorf("Unable to setup controller manager: %v", err) os.Exit(1) diff --git a/cmd/cdi-operator/operator.go b/cmd/cdi-operator/operator.go index e6d24a0939..dad21c6261 100644 --- a/cmd/cdi-operator/operator.go +++ b/cmd/cdi-operator/operator.go @@ -71,7 +71,7 @@ func main() { LeaderElection: true, LeaderElectionNamespace: namespace, LeaderElectionID: "cdi-operator-leader-election-helper", - LeaderElectionResourceLock: "configmaps", + LeaderElectionResourceLock: "configmapsleases", } // Create a new Manager to provide shared dependencies and start components diff --git a/pkg/operator/resources/namespaced/controller.go b/pkg/operator/resources/namespaced/controller.go index 174af7d5d6..e577f4d890 100644 --- a/pkg/operator/resources/namespaced/controller.go +++ b/pkg/operator/resources/namespaced/controller.go @@ -116,6 +116,17 @@ func createControllerRole() *rbacv1.Role { "delete", }, }, + { + APIGroups: []string{ + "coordination.k8s.io", + }, + Resources: []string{ + "leases", + }, + Verbs: []string{ + "*", + }, + }, } return utils.ResourceBuilder.CreateRole(controllerResourceName, rules) } diff --git a/pkg/operator/resources/operator/operator.go b/pkg/operator/resources/operator/operator.go index 0da9442933..fe89466365 100644 --- a/pkg/operator/resources/operator/operator.go +++ b/pkg/operator/resources/operator/operator.go @@ -237,6 +237,17 @@ func getNamespacedPolicyRules() []rbacv1.PolicyRule { "patch", }, }, + { + APIGroups: []string{ + "coordination.k8s.io", + }, + Resources: []string{ + "leases", + }, + Verbs: []string{ + "*", + }, + }, } return rules }