@@ -53,8 +53,8 @@ import (
5353 _ "k8s.io/component-base/metrics/prometheus/workqueue" // register work queues in the default legacy registry
5454 csitrans "k8s.io/csi-translation-lib"
5555 klog "k8s.io/klog/v2"
56- "sigs.k8s.io/sig-storage-lib-external-provisioner/v9 /controller"
57- libmetrics "sigs.k8s.io/sig-storage-lib-external-provisioner/v9 /controller/metrics"
56+ "sigs.k8s.io/sig-storage-lib-external-provisioner/v10 /controller"
57+ libmetrics "sigs.k8s.io/sig-storage-lib-external-provisioner/v10 /controller/metrics"
5858
5959 "github.com/kubernetes-csi/csi-lib-utils/leaderelection"
6060 "github.com/kubernetes-csi/csi-lib-utils/metrics"
@@ -553,34 +553,20 @@ func main() {
553553 csiProvisioner = capacity .NewProvisionWrapper (csiProvisioner , capacityController )
554554 }
555555
556- provisionController = controller .NewProvisionController (
557- clientset ,
558- provisionerName ,
559- csiProvisioner ,
560- provisionerOptions ... ,
561- )
562-
563- csiClaimController := ctrl .NewCloningProtectionController (
564- clientset ,
565- claimLister ,
566- claimInformer ,
567- claimQueue ,
568- controllerCapabilities ,
569- )
570-
571- // Start HTTP server, regardless whether we are the leader or not.
572556 if addr != "" {
573- // To collect metrics data from the metric handler itself, we
574- // let it register itself and then collect from that registry.
557+ // Start HTTP server, regardless whether we are the leader or not.
558+ // Register provisioner metrics manually to be able to add multiplexer in front of it
559+ m := libmetrics .New ("controller" )
575560 reg := prometheus .NewRegistry ()
576561 reg .MustRegister ([]prometheus.Collector {
577- libmetrics .PersistentVolumeClaimProvisionTotal ,
578- libmetrics .PersistentVolumeClaimProvisionFailedTotal ,
579- libmetrics .PersistentVolumeClaimProvisionDurationSeconds ,
580- libmetrics .PersistentVolumeDeleteTotal ,
581- libmetrics .PersistentVolumeDeleteFailedTotal ,
582- libmetrics .PersistentVolumeDeleteDurationSeconds ,
562+ m .PersistentVolumeClaimProvisionTotal ,
563+ m .PersistentVolumeClaimProvisionFailedTotal ,
564+ m .PersistentVolumeClaimProvisionDurationSeconds ,
565+ m .PersistentVolumeDeleteTotal ,
566+ m .PersistentVolumeDeleteFailedTotal ,
567+ m .PersistentVolumeDeleteDurationSeconds ,
583568 }... )
569+ provisionerOptions = append (provisionerOptions , controller .MetricsInstance (m ))
584570 gatherers = append (gatherers , reg )
585571
586572 // This is similar to k8s.io/component-base/metrics HandlerWithReset
@@ -611,6 +597,23 @@ func main() {
611597 }()
612598 }
613599
600+ logger := klog .FromContext (ctx )
601+ provisionController = controller .NewProvisionController (
602+ logger ,
603+ clientset ,
604+ provisionerName ,
605+ csiProvisioner ,
606+ provisionerOptions ... ,
607+ )
608+
609+ csiClaimController := ctrl .NewCloningProtectionController (
610+ clientset ,
611+ claimLister ,
612+ claimInformer ,
613+ claimQueue ,
614+ controllerCapabilities ,
615+ )
616+
614617 run := func (ctx context.Context ) {
615618 factory .Start (ctx .Done ())
616619 if factoryForNamespace != nil {
0 commit comments