From 80e3960f9157a4e52e62ef0bda51c3aeae8a065c Mon Sep 17 00:00:00 2001 From: Tim Ramlot <42113979+inteon@users.noreply.github.com> Date: Thu, 2 Nov 2023 13:29:05 +0100 Subject: [PATCH] Use controller-runtime manager instead of errorgroup. Signed-off-by: Tim Ramlot <42113979+inteon@users.noreply.github.com> --- cmd/cainjector/LICENSES | 1 - cmd/cainjector/app/controller.go | 31 ++++++++++++++++--------------- cmd/cainjector/go.mod | 1 - cmd/cainjector/go.sum | 2 -- 4 files changed, 16 insertions(+), 19 deletions(-) diff --git a/cmd/cainjector/LICENSES b/cmd/cainjector/LICENSES index 9120f3b9c..c201b2230 100644 --- a/cmd/cainjector/LICENSES +++ b/cmd/cainjector/LICENSES @@ -40,7 +40,6 @@ go.uber.org/zap,https://github.com/uber-go/zap/blob/v1.25.0/LICENSE.txt,MIT golang.org/x/exp,https://cs.opensource.google/go/x/exp/+/92128663:LICENSE,BSD-3-Clause golang.org/x/net,https://cs.opensource.google/go/x/net/+/v0.17.0:LICENSE,BSD-3-Clause golang.org/x/oauth2,https://cs.opensource.google/go/x/oauth2/+/v0.12.0:LICENSE,BSD-3-Clause -golang.org/x/sync/errgroup,https://cs.opensource.google/go/x/sync/+/v0.3.0:LICENSE,BSD-3-Clause golang.org/x/sys/unix,https://cs.opensource.google/go/x/sys/+/v0.13.0:LICENSE,BSD-3-Clause golang.org/x/term,https://cs.opensource.google/go/x/term/+/v0.13.0:LICENSE,BSD-3-Clause golang.org/x/text,https://cs.opensource.google/go/x/text/+/v0.13.0:LICENSE,BSD-3-Clause diff --git a/cmd/cainjector/app/controller.go b/cmd/cainjector/app/controller.go index 299cb9b7d..dd7d9f271 100644 --- a/cmd/cainjector/app/controller.go +++ b/cmd/cainjector/app/controller.go @@ -23,7 +23,6 @@ import ( "net/http" "time" - "golang.org/x/sync/errgroup" apiext "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/types" @@ -32,6 +31,7 @@ import ( ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/cache" "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/manager" metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server" config "github.com/cert-manager/cert-manager/internal/apis/config/cainjector" @@ -76,8 +76,6 @@ func Run(opts *config.CAInjectorConfiguration, ctx context.Context) error { return fmt.Errorf("error creating manager: %v", err) } - g, gctx := errgroup.WithContext(ctx) - // if a PprofAddr is provided, start the pprof listener if opts.EnablePprof { pprofListener, err := net.Listen("tcp", opts.PprofAddress) @@ -92,23 +90,23 @@ func Run(opts *config.CAInjectorConfiguration, ctx context.Context) error { server := &http.Server{ Handler: profilerMux, } - g.Go(func() error { - <-gctx.Done() + + mgr.Add(manager.RunnableFunc(func(ctx context.Context) error { + <-ctx.Done() + // allow a timeout for graceful shutdown - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + shutdownCtx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() - if err := server.Shutdown(ctx); err != nil { - return err - } - return nil - }) - g.Go(func() error { + return server.Shutdown(shutdownCtx) + })) + + mgr.Add(manager.RunnableFunc(func(ctx context.Context) error { if err := server.Serve(pprofListener); err != http.ErrServerClosed { return err } return nil - }) + })) } // If cainjector has been configured to watch Certificate CRDs (true by default) @@ -152,13 +150,16 @@ func Run(opts *config.CAInjectorConfiguration, ctx context.Context) error { cainjector.CustomResourceDefinitionName: opts.EnableInjectableConfig.CustomResourceDefinitions, }, } - err = cainjector.RegisterAllInjectors(gctx, mgr, setupOptions) + + err = cainjector.RegisterAllInjectors(ctx, mgr, setupOptions) if err != nil { log.Error(err, "failed to register controllers", err) return err } - if err = mgr.Start(gctx); err != nil { + + if err = mgr.Start(ctx); err != nil { return fmt.Errorf("error running manager: %v", err) } + return nil } diff --git a/cmd/cainjector/go.mod b/cmd/cainjector/go.mod index 7803600f3..3e6a75321 100644 --- a/cmd/cainjector/go.mod +++ b/cmd/cainjector/go.mod @@ -12,7 +12,6 @@ require ( github.com/cert-manager/cert-manager v0.0.0-00010101000000-000000000000 github.com/spf13/cobra v1.7.0 github.com/spf13/pflag v1.0.5 - golang.org/x/sync v0.3.0 k8s.io/apiextensions-apiserver v0.28.1 k8s.io/apimachinery v0.28.1 k8s.io/client-go v0.28.1 diff --git a/cmd/cainjector/go.sum b/cmd/cainjector/go.sum index 5689669c1..b469386a7 100644 --- a/cmd/cainjector/go.sum +++ b/cmd/cainjector/go.sum @@ -164,8 +164,6 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= -golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=