@@ -43,6 +43,7 @@ import (
4343 "github.com/cert-manager/csi-lib/metadata"
4444 "github.com/cert-manager/csi-lib/metrics"
4545 "github.com/cert-manager/csi-lib/storage"
46+ "github.com/go-logr/logr"
4647 "github.com/prometheus/client_golang/prometheus"
4748 "golang.org/x/sync/errgroup"
4849 "k8s.io/client-go/rest"
@@ -113,10 +114,16 @@ func main() {
113114 ctx , cancel := context .WithCancel (context .Background ())
114115 defer cancel ()
115116
116- metricsHandler , err := startMetricsServer (ctx , * nodeID , log , cmClient , store )
117- if err != nil {
118- panic ("failed to setup metrics server: " + err .Error ())
119- }
117+ certRequestInformerFactory := externalversions .NewSharedInformerFactory (cmClient , 5 * time .Second )
118+ certRequestInformer := certRequestInformerFactory .Certmanager ().V1 ().CertificateRequests ()
119+ metricsHandler := metrics .New (* nodeID , & log , prometheus .NewRegistry (), store , certRequestInformer .Lister ())
120+
121+ go func () {
122+ err := startMetricsServer (ctx , log , metricsHandler , certRequestInformerFactory )
123+ if err != nil {
124+ panic ("failed to setup metrics server: " + err .Error ())
125+ }
126+ }()
120127
121128 d , err := driver .New (ctx , * endpoint , log , driver.Options {
122129 DriverName : "csi.cert-manager.io" ,
@@ -367,32 +374,20 @@ func keyUsagesFromAttributes(usagesCSV string) []cmapi.KeyUsage {
367374 return keyUsages
368375}
369376
370- // startMetricsServer starts a server listening on port 6443 , until the supplied context is cancelled,
377+ // startMetricsServer starts a server listening on port 9402 , until the supplied context is cancelled,
371378// after which the server will gracefully shutdown (within 5 seconds).
372379func startMetricsServer (
373380 rootCtx context.Context ,
374- nodeId string ,
375381 logger logr.Logger ,
376- cmClient * cmclient. Clientset ,
377- metadataReader storage. MetadataReader ,
378- ) ( * metrics. Metrics , error ) {
382+ metricsHandler * metrics. Metrics ,
383+ certRequestInformerFactory externalversions. SharedInformerFactory ,
384+ ) error {
379385 g , ctx := errgroup .WithContext (rootCtx )
380- defer func () {
381- if err := g .Wait (); err != nil {
382- logger .Error (err , "fail to stop metric server" )
383- }
384- }()
385-
386- metricsHandler := metrics .New (& logger , prometheus .NewRegistry ())
387-
388- certRequestInformerFactory := externalversions .NewSharedInformerFactory (cmClient , 5 * time .Second )
389- certRequestInformer := certRequestInformerFactory .Certmanager ().V1 ().CertificateRequests ()
390- metricsHandler .SetupCertificateRequestCollector (nodeId , metadataReader , certRequestInformer .Lister ())
391386
392387 listenConfig := & net.ListenConfig {}
393- metricsLn , err := listenConfig .Listen (ctx , "tcp" , "127.0.0.1:6443 " )
388+ metricsLn , err := listenConfig .Listen (ctx , "tcp" , ":9402 " )
394389 if err != nil {
395- return nil , err
390+ return err
396391 }
397392 metricsServer := & http.Server {
398393 Addr : metricsLn .Addr ().String (),
@@ -423,5 +418,5 @@ func startMetricsServer(
423418 }
424419 return nil
425420 })
426- return metricsHandler , nil
421+ return g . Wait ()
427422}
0 commit comments