Skip to content

Commit 6d9e4e7

Browse files
committed
Draft: demo for csi-lib metrics feature
This PR demonstrates csi-lib metrics feature in cert-manager/csi-lib#73 Signed-off-by: Jing Liu <[email protected]>
1 parent 5b1fd9b commit 6d9e4e7

File tree

3 files changed

+37
-5
lines changed

3 files changed

+37
-5
lines changed

cmd/app/app.go

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,21 @@ import (
2424
"encoding/pem"
2525
"fmt"
2626
"net/http"
27+
"time"
2728

29+
"github.com/cert-manager/cert-manager/pkg/client/informers/externalversions"
2830
"github.com/cert-manager/csi-lib/driver"
2931
"github.com/cert-manager/csi-lib/manager"
3032
"github.com/cert-manager/csi-lib/manager/util"
3133
"github.com/cert-manager/csi-lib/metadata"
34+
csimetrics "github.com/cert-manager/csi-lib/metrics"
3235
"github.com/cert-manager/csi-lib/storage"
36+
"github.com/prometheus/client_golang/prometheus"
3337
"github.com/spf13/cobra"
3438
"golang.org/x/sync/errgroup"
3539
"k8s.io/utils/clock"
3640
ctrl "sigs.k8s.io/controller-runtime"
41+
ctrlmetrics "sigs.k8s.io/controller-runtime/pkg/metrics"
3742
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
3843

3944
"github.com/cert-manager/csi-driver/cmd/app/options"
@@ -80,8 +85,19 @@ func NewCommand(ctx context.Context) *cobra.Command {
8085
clientForMeta = util.ClientForMetadataTokenRequestEmptyAud(opts.RestConfig)
8186
}
8287

88+
// DRAFT: demo for csi-lib metrics feature
89+
certRequestInformerFactory := externalversions.NewSharedInformerFactory(opts.CMClient, 5*time.Second)
90+
certRequestInformer := certRequestInformerFactory.Certmanager().V1().CertificateRequests()
91+
metricsHandler := csimetrics.New(
92+
opts.NodeID,
93+
&opts.Logr,
94+
ctrlmetrics.Registry.(*prometheus.Registry),
95+
store,
96+
certRequestInformer.Lister(),
97+
)
98+
8399
mngrlog := opts.Logr.WithName("manager")
84-
d, err := driver.New(opts.Endpoint, opts.Logr.WithName("driver"), driver.Options{
100+
d, err := driver.New(ctx, opts.Endpoint, opts.Logr.WithName("driver"), driver.Options{
85101
DriverName: opts.DriverName,
86102
DriverVersion: version.AppVersion,
87103
NodeID: opts.NodeID,
@@ -97,6 +113,7 @@ func NewCommand(ctx context.Context) *cobra.Command {
97113
GenerateRequest: requestgen.RequestForMetadata,
98114
SignRequest: signRequest,
99115
WriteKeypair: writer.WriteKeypair,
116+
Metrics: metricsHandler,
100117
}),
101118
})
102119
if err != nil {
@@ -163,6 +180,13 @@ func NewCommand(ctx context.Context) *cobra.Command {
163180
g.Go(func() error {
164181
return metricsServer.Start(gCTX)
165182
})
183+
184+
// DRAFT: demo for csi-lib metrics feature
185+
g.Go(func() error {
186+
certRequestInformerFactory.Start(gCTX.Done())
187+
certRequestInformerFactory.WaitForCacheSync(gCTX.Done())
188+
return nil
189+
})
166190
}
167191
return g.Wait()
168192
},

go.mod

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ module github.com/cert-manager/csi-driver
22

33
go 1.25.0
44

5+
// DRAFT. DO NOT MERGE.
6+
replace github.com/cert-manager/csi-lib v0.9.0 => github.com/7ing/csi-lib v0.2.2-0.20251014210759-b5a8ccd7df02
7+
58
require (
69
github.com/cert-manager/cert-manager v1.19.1
710
github.com/cert-manager/csi-lib v0.9.0
@@ -31,7 +34,7 @@ require (
3134
github.com/beorn7/perks v1.0.1 // indirect
3235
github.com/blang/semver/v4 v4.0.0 // indirect
3336
github.com/cespare/xxhash/v2 v2.3.0 // indirect
34-
github.com/container-storage-interface/spec v1.10.0 // indirect
37+
github.com/container-storage-interface/spec v1.11.0 // indirect
3538
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
3639
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
3740
github.com/emicklei/go-restful/v3 v3.13.0 // indirect
@@ -60,7 +63,7 @@ require (
6063
github.com/inconshreveable/mousetrap v1.1.0 // indirect
6164
github.com/josharian/intern v1.0.0 // indirect
6265
github.com/json-iterator/go v1.1.12 // indirect
63-
github.com/kubernetes-csi/csi-lib-utils v0.19.0 // indirect
66+
github.com/kubernetes-csi/csi-lib-utils v0.22.0 // indirect
6467
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect
6568
github.com/mailru/easyjson v0.9.0 // indirect
6669
github.com/moby/spdystream v0.5.0 // indirect
@@ -100,14 +103,14 @@ require (
100103
golang.org/x/tools v0.36.0 // indirect
101104
gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect
102105
google.golang.org/genproto/googleapis/rpc v0.0.0-20250929231259-57b25ae835d4 // indirect
103-
google.golang.org/grpc v1.75.1 // indirect
106+
google.golang.org/grpc v1.76.0 // indirect
104107
google.golang.org/protobuf v1.36.9 // indirect
105108
gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
106109
gopkg.in/inf.v0 v0.9.1 // indirect
107110
gopkg.in/yaml.v3 v3.0.1 // indirect
108111
k8s.io/apiextensions-apiserver v0.34.1 // indirect
109112
k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect
110-
k8s.io/mount-utils v0.31.2 // indirect
113+
k8s.io/mount-utils v0.34.1 // indirect
111114
sigs.k8s.io/gateway-api v1.4.0 // indirect
112115
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect
113116
sigs.k8s.io/kustomize/api v0.20.1 // indirect

go.sum

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
github.com/7ing/csi-lib v0.2.2-0.20251014210759-b5a8ccd7df02/go.mod h1:Q+j/XlvtYITZjacuwruKqIH12UQhJXbmyiivQUw4CdQ=
12
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0=
23
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
34
github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358 h1:mFRzDkZVAjdal+s7s0MwaRv9igoPqLRdzOLzw/8Xvq8=
@@ -20,6 +21,7 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF
2021
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
2122
github.com/container-storage-interface/spec v1.10.0 h1:YkzWPV39x+ZMTa6Ax2czJLLwpryrQ+dPesB34mrRMXA=
2223
github.com/container-storage-interface/spec v1.10.0/go.mod h1:DtUvaQszPml1YJfIK7c00mlv6/g4wNMLanLgiUbKFRI=
24+
github.com/container-storage-interface/spec v1.11.0/go.mod h1:DtUvaQszPml1YJfIK7c00mlv6/g4wNMLanLgiUbKFRI=
2325
github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs=
2426
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
2527
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
@@ -125,6 +127,7 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
125127
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
126128
github.com/kubernetes-csi/csi-lib-utils v0.19.0 h1:3sT8mL9+St2acyrEtuR7CQ5L78GR4lgsb+sfon9tGfA=
127129
github.com/kubernetes-csi/csi-lib-utils v0.19.0/go.mod h1:lBuMKvoyd8c3EG+itmnVWApLDHnLkU7ibxxZSPuOw0M=
130+
github.com/kubernetes-csi/csi-lib-utils v0.22.0/go.mod h1:f+PalKyS4Ujsjb9+m6Rj0W6c28y3nfea3paQ/VqjI28=
128131
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
129132
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
130133
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0=
@@ -292,6 +295,7 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250929231259-57b25ae835d4 h1:
292295
google.golang.org/genproto/googleapis/rpc v0.0.0-20250929231259-57b25ae835d4/go.mod h1:HSkG/KdJWusxU1F6CNrwNDjBMgisKxGnc5dAZfT0mjQ=
293296
google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI=
294297
google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ=
298+
google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c=
295299
google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw=
296300
google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU=
297301
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
@@ -324,6 +328,7 @@ k8s.io/kubectl v0.34.1 h1:1qP1oqT5Xc93K+H8J7ecpBjaz511gan89KO9Vbsh/OI=
324328
k8s.io/kubectl v0.34.1/go.mod h1:JRYlhJpGPyk3dEmJ+BuBiOB9/dAvnrALJEiY/C5qa6A=
325329
k8s.io/mount-utils v0.31.2 h1:Q0ygX92Lj9d1wcObAzj+JZ4oE7CNKZrqSOn1XcIS+y4=
326330
k8s.io/mount-utils v0.31.2/go.mod h1:HV/VYBUGqYUj4vt82YltzpWvgv8FPg0G9ItyInT3NPU=
331+
k8s.io/mount-utils v0.34.1/go.mod h1:MIjjYlqJ0ziYQg0MO09kc9S96GIcMkhF/ay9MncF0GA=
327332
k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 h1:SjGebBtkBqHFOli+05xYbK8YF1Dzkbzn+gDM4X9T4Ck=
328333
k8s.io/utils v0.0.0-20251002143259-bc988d571ff4/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
329334
sigs.k8s.io/controller-runtime v0.22.3 h1:I7mfqz/a/WdmDCEnXmSPm8/b/yRTy6JsKKENTijTq8Y=

0 commit comments

Comments
 (0)