Skip to content

Commit

Permalink
add resourcelock, leaderelection for cluster-policy-controller
Browse files Browse the repository at this point in the history
  • Loading branch information
sallyom committed Sep 25, 2019
1 parent 76900b0 commit cd240eb
Showing 1 changed file with 43 additions and 29 deletions.
72 changes: 43 additions & 29 deletions pkg/cmd/openshift-controller-manager/controller_manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,40 +74,54 @@ func RunOpenShiftControllerManager(config *openshiftcontrolplanev1.OpenShiftCont
controllerContext.StartInformers(ctx.Done())
}

eventBroadcaster := record.NewBroadcaster()
eventBroadcaster.StartLogging(klog.Infof)
eventBroadcaster.StartRecordingToSink(&v1core.EventSinkImpl{Interface: kubeClient.CoreV1().Events("")})
eventRecorder := eventBroadcaster.NewRecorder(legacyscheme.Scheme, v1.EventSource{Component: "openshift-controller-manager"})
id, err := os.Hostname()
if err != nil {
return err
}
rl, err := resourcelock.New(
"configmaps",
"openshift-controller-manager",
"openshift-master-controllers", // this matches what ansible used to set
kubeClient.CoreV1(),
kubeClient.CoordinationV1(),
resourcelock.ResourceLockConfig{
Identity: id,
EventRecorder: eventRecorder,
})
if err != nil {
return err
}
go leaderelection.RunOrDie(context.Background(),
leaderelection.LeaderElectionConfig{
Lock: rl,
LeaseDuration: config.LeaderElection.LeaseDuration.Duration,
RenewDeadline: config.LeaderElection.RenewDeadline.Duration,
RetryPeriod: config.LeaderElection.RetryPeriod.Duration,
Callbacks: leaderelection.LeaderCallbacks{
OnStartedLeading: originControllerManager,
OnStoppedLeading: func() {
klog.Fatalf("leaderelection lost")
components := []string{"openshift-controller-manager", "cluster-policy-controller"}
for _, c := range components {
var name, ns string
eventBroadcaster := record.NewBroadcaster()
eventBroadcaster.StartLogging(klog.Infof)
eventBroadcaster.StartRecordingToSink(&v1core.EventSinkImpl{Interface: kubeClient.CoreV1().Events("")})
var eventRecorder record.EventRecorder
switch c {
case "openshift-controller-manager":
name = "openshift-master-controllers"
ns = c
eventRecorder = eventBroadcaster.NewRecorder(legacyscheme.Scheme, v1.EventSource{Component: c})
case "cluster-policy-controller":
name = c
ns = "openshift-kube-controller-manager"
eventRecorder = eventBroadcaster.NewRecorder(legacyscheme.Scheme, v1.EventSource{Component: c})
}
rl, err := resourcelock.New(
"configmaps",
ns,
name,
kubeClient.CoreV1(),
kubeClient.CoordinationV1(),
resourcelock.ResourceLockConfig{
Identity: id,
EventRecorder: eventRecorder,
})
if err != nil {
return err
}
go leaderelection.RunOrDie(context.Background(),
leaderelection.LeaderElectionConfig{
Lock: rl,
LeaseDuration: config.LeaderElection.LeaseDuration.Duration,
RenewDeadline: config.LeaderElection.RenewDeadline.Duration,
RetryPeriod: config.LeaderElection.RetryPeriod.Duration,
Callbacks: leaderelection.LeaderCallbacks{
OnStartedLeading: originControllerManager,
OnStoppedLeading: func() {
klog.Fatalf("leaderelection lost")
},
},
},
})
})
}

return nil
}
Expand Down

0 comments on commit cd240eb

Please sign in to comment.