@@ -27,12 +27,14 @@ import (
27
27
"syscall"
28
28
"time"
29
29
30
+ "github.com/go-logr/logr"
30
31
"github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/logging"
31
32
"github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/recovery"
32
33
"github.com/linode/linode-cosi-driver/pkg/endpoint"
33
34
"github.com/linode/linode-cosi-driver/pkg/envflag"
34
35
"github.com/linode/linode-cosi-driver/pkg/grpc/handlers"
35
36
grpclogger "github.com/linode/linode-cosi-driver/pkg/grpc/logger"
37
+ "github.com/linode/linode-cosi-driver/pkg/kubereader/tracedkubereader"
36
38
"github.com/linode/linode-cosi-driver/pkg/linodeclient"
37
39
"github.com/linode/linode-cosi-driver/pkg/linodeclient/tracedclient"
38
40
maxprocslogger "github.com/linode/linode-cosi-driver/pkg/maxprocs/logger"
@@ -47,7 +49,11 @@ import (
47
49
semconv "go.opentelemetry.io/otel/semconv/v1.21.0"
48
50
"go.uber.org/automaxprocs/maxprocs"
49
51
"google.golang.org/grpc"
52
+ v1 "k8s.io/api/core/v1"
50
53
cosi "sigs.k8s.io/container-object-storage-interface-spec"
54
+ "sigs.k8s.io/controller-runtime/pkg/client"
55
+ "sigs.k8s.io/controller-runtime/pkg/client/config"
56
+ ctrlLog "sigs.k8s.io/controller-runtime/pkg/log"
51
57
)
52
58
53
59
const (
@@ -67,12 +73,26 @@ func main() {
67
73
68
74
// TODO: any logger settup must be done here, before first log call.
69
75
log := slog .Default ()
76
+ ctrlLog .SetLogger (logr .FromSlogHandler (log .Handler ()))
77
+
78
+ kubeclient , err := client .New (config .GetConfigOrDie (), client.Options {
79
+ Cache : & client.CacheOptions {
80
+ DisableFor : []client.Object {
81
+ & v1.Secret {},
82
+ },
83
+ },
84
+ })
85
+ if err != nil {
86
+ slog .Error ("initializing kube client failed" , "error" , err )
87
+ os .Exit (1 )
88
+ }
70
89
71
90
if err := run (context .Background (), log , mainOptions {
72
91
cosiEndpoint : cosiEndpoint ,
73
92
linodeToken : linodeToken ,
74
93
linodeURL : linodeURL ,
75
94
linodeAPIVersion : linodeAPIVersion ,
95
+ kubeclient : kubeclient ,
76
96
},
77
97
); err != nil {
78
98
slog .Error ("critical failure" , "error" , err )
@@ -85,6 +105,7 @@ type mainOptions struct {
85
105
linodeToken string
86
106
linodeURL string
87
107
linodeAPIVersion string
108
+ kubeclient client.Client
88
109
}
89
110
90
111
func run (ctx context.Context , log * slog.Logger , opts mainOptions ) error {
@@ -112,7 +133,7 @@ func run(ctx context.Context, log *slog.Logger, opts mainOptions) error {
112
133
// initialize Linode client
113
134
client , err := linodeclient .NewLinodeClient (
114
135
opts .linodeToken ,
115
- fmt . Sprintf ( "LinodeCOSI/%s" , version .Version ),
136
+ version .UserAgent ( ),
116
137
opts .linodeURL ,
117
138
opts .linodeAPIVersion )
118
139
if err != nil {
@@ -121,10 +142,13 @@ func run(ctx context.Context, log *slog.Logger, opts mainOptions) error {
121
142
122
143
client .SetLogger (restylogger .Wrap (log ))
123
144
145
+ podName := os .Getenv (envK8sPodName )
146
+
124
147
// create provisioner server
125
148
prvSrv , err := provisioner .New (
126
149
log ,
127
- tracedclient .NewClientWithTracing (client , os .Getenv (envK8sPodName )),
150
+ tracedclient .NewClientWithTracing (client , podName ),
151
+ tracedkubereader .NewKubeReaderWithTracing (opts .kubeclient , podName ),
128
152
)
129
153
if err != nil {
130
154
return fmt .Errorf ("failed to create provisioner server: %w" , err )
0 commit comments