From ba02ea4120303c18908d5a60b3be40d66ab97f18 Mon Sep 17 00:00:00 2001 From: Richard Wall Date: Fri, 4 Sep 2020 16:50:42 +0100 Subject: [PATCH] Revert "Refactor the cainjector to only have 1 leader election" Signed-off-by: Richard Wall --- cmd/cainjector/app/start.go | 50 ++++++++++++++++++++++++++++++++----- 1 file changed, 44 insertions(+), 6 deletions(-) diff --git a/cmd/cainjector/app/start.go b/cmd/cainjector/app/start.go index 17291532b..0abf63c05 100644 --- a/cmd/cainjector/app/start.go +++ b/cmd/cainjector/app/start.go @@ -98,6 +98,20 @@ servers and webhook servers.`, } func (o InjectorControllerOptions) RunInjectorController(stopCh <-chan struct{}) { + eitherStopCh := make(chan struct{}) + go func() { + defer close(eitherStopCh) + o.runCertificateBasedInjector(stopCh) + }() + go func() { + defer close(eitherStopCh) + o.runSecretBasedInjector(stopCh) + }() + + <-eitherStopCh +} + +func (o InjectorControllerOptions) runCertificateBasedInjector(stopCh <-chan struct{}) { mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{ Scheme: api.Scheme, Namespace: o.Namespace, @@ -112,13 +126,10 @@ func (o InjectorControllerOptions) RunInjectorController(stopCh <-chan struct{}) os.Exit(1) } - err = cainjector.RegisterCertificateBased(mgr) - if err != nil { - o.log.Error(err, "error registering controllers") - } - err = cainjector.RegisterSecretBased(mgr) - if err != nil { + // TODO(directxman12): enabled controllers for separate injectors? + if err := cainjector.RegisterCertificateBased(mgr); err != nil { o.log.Error(err, "error registering controllers") + os.Exit(1) } if err := mgr.Start(stopCh); err != nil { @@ -126,3 +137,30 @@ func (o InjectorControllerOptions) RunInjectorController(stopCh <-chan struct{}) os.Exit(1) } } + +func (o InjectorControllerOptions) runSecretBasedInjector(stopCh <-chan struct{}) { + mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{ + Scheme: api.Scheme, + Namespace: o.Namespace, + LeaderElection: o.LeaderElect, + LeaderElectionNamespace: o.LeaderElectionNamespace, + LeaderElectionID: "cert-manager-cainjector-leader-election-core", + MetricsBindAddress: "0", + }) + + if err != nil { + o.log.Error(err, "error creating core-only manager") + os.Exit(1) + } + + // TODO(directxman12): enabled controllers for separate injectors? + if err := cainjector.RegisterSecretBased(mgr); err != nil { + o.log.Error(err, "error registering core-only controllers") + os.Exit(1) + } + + if err := mgr.Start(stopCh); err != nil { + o.log.Error(err, "error running core-only manager") + os.Exit(1) + } +}