@@ -22,7 +22,6 @@ import (
22
22
"fmt"
23
23
"net"
24
24
"net/http"
25
- "os"
26
25
"time"
27
26
28
27
"k8s.io/klog/v2"
@@ -58,36 +57,37 @@ type healthProbe struct {
58
57
59
58
func (h * healthProbe ) checkProbe (w http.ResponseWriter , req * http.Request ) {
60
59
ctx , cancel := context .WithTimeout (req .Context (), * probeTimeout )
60
+ logger := klog .FromContext (ctx )
61
61
defer cancel ()
62
62
63
63
conn , err := connlib .Connect (ctx , * csiAddress , h .metricsManager , connlib .WithTimeout (* probeTimeout ))
64
64
if err != nil {
65
65
w .WriteHeader (http .StatusInternalServerError )
66
66
w .Write ([]byte (err .Error ()))
67
- klog . ErrorS (err , "Failed to establish connection to CSI driver" )
67
+ logger . Error (err , "Failed to establish connection to CSI driver" )
68
68
return
69
69
}
70
70
defer conn .Close ()
71
71
72
- klog .V (5 ).InfoS ("Sending probe request to CSI driver" , "driver" , h .driverName )
72
+ logger .V (5 ).Info ("Sending probe request to CSI driver" , "driver" , h .driverName )
73
73
ready , err := rpc .Probe (ctx , conn )
74
74
if err != nil {
75
75
w .WriteHeader (http .StatusInternalServerError )
76
76
w .Write ([]byte (err .Error ()))
77
- klog . ErrorS (err , "Health check failed" )
77
+ logger . Error (err , "Health check failed" )
78
78
return
79
79
}
80
80
81
81
if ! ready {
82
82
w .WriteHeader (http .StatusInternalServerError )
83
83
w .Write ([]byte ("driver responded but is not ready" ))
84
- klog . ErrorS (nil , "Driver responded but is not ready" )
84
+ logger . Error (nil , "Driver responded but is not ready" )
85
85
return
86
86
}
87
87
88
88
w .WriteHeader (http .StatusOK )
89
89
w .Write ([]byte (`ok` ))
90
- klog .V (5 ).InfoS ("Health check succeeded" )
90
+ logger .V (5 ).Info ("Health check succeeded" )
91
91
}
92
92
93
93
func main () {
@@ -97,18 +97,19 @@ func main() {
97
97
logsapi .AddGoFlags (c , flag .CommandLine )
98
98
logs .InitLogs ()
99
99
flag .Parse ()
100
+ logger := klog .Background ()
100
101
if err := logsapi .ValidateAndApply (c , fg ); err != nil {
101
- klog . ErrorS (err , "LoggingConfiguration is invalid" )
102
- os . Exit ( 1 )
102
+ logger . Error (err , "LoggingConfiguration is invalid" )
103
+ klog . FlushAndExit ( klog . ExitFlushTimeout , 1 )
103
104
}
104
105
105
106
if * healthzPort != defaultHealthzPort && * httpEndpoint != "" {
106
- klog . ErrorS (nil , "Only one of `--health-port` and `--http-endpoint` can be explicitly set" )
107
- os . Exit ( 1 )
107
+ logger . Error (nil , "Only one of `--health-port` and `--http-endpoint` can be explicitly set" )
108
+ klog . FlushAndExit ( klog . ExitFlushTimeout , 1 )
108
109
}
109
110
if * metricsAddress != "" && * httpEndpoint != "" {
110
- klog . ErrorS (nil , "Only one of `--metrics-address` and `--http-endpoint` can be explicitly set" )
111
- os . Exit ( 1 )
111
+ logger . Error (nil , "Only one of `--metrics-address` and `--http-endpoint` can be explicitly set" )
112
+ klog . FlushAndExit ( klog . ExitFlushTimeout , 1 )
112
113
}
113
114
var addr string
114
115
if * httpEndpoint != "" {
@@ -127,19 +128,19 @@ func main() {
127
128
if err != nil {
128
129
// connlib should retry forever so a returned error should mean
129
130
// the grpc client is misconfigured rather than an error on the network or CSI driver.
130
- klog . ErrorS (err , "Failed to establish connection to CSI driver" )
131
+ logger . Error (err , "Failed to establish connection to CSI driver" )
131
132
klog .FlushAndExit (klog .ExitFlushTimeout , 1 )
132
133
}
133
134
134
- klog . InfoS ("Calling CSI driver to discover driver name" )
135
+ logger . Info ("Calling CSI driver to discover driver name" )
135
136
csiDriverName , err := rpc .GetDriverName (context .Background (), csiConn )
136
137
csiConn .Close ()
137
138
if err != nil {
138
139
// The CSI driver does not support GetDriverName, which is serious enough to crash the probe.
139
- klog . ErrorS (err , "Failed to get CSI driver name" )
140
+ logger . Error (err , "Failed to get CSI driver name" )
140
141
klog .FlushAndExit (klog .ExitFlushTimeout , 1 )
141
142
}
142
- klog . InfoS ("CSI driver name" , "driver" , csiDriverName )
143
+ logger . Info ("CSI driver name" , "driver" , csiDriverName )
143
144
144
145
hp := & healthProbe {
145
146
driverName : csiDriverName ,
@@ -158,19 +159,19 @@ func main() {
158
159
metricsMux := http .NewServeMux ()
159
160
metricsManager .RegisterToServer (metricsMux , * metricsPath )
160
161
go func () {
161
- klog . InfoS ("Separate metrics ServeMux listening" , "address" , * metricsAddress )
162
+ logger . Info ("Separate metrics ServeMux listening" , "address" , * metricsAddress )
162
163
err := http .ListenAndServe (* metricsAddress , metricsMux )
163
164
if err != nil {
164
- klog . ErrorS (err , "Failed to start prometheus metrics endpoint on specified address and path" , "addr" , * metricsAddress , "path" , * metricsPath )
165
+ logger . Error (err , "Failed to start prometheus metrics endpoint on specified address and path" , "addr" , * metricsAddress , "path" , * metricsPath )
165
166
klog .FlushAndExit (klog .ExitFlushTimeout , 1 )
166
167
}
167
168
}()
168
169
}
169
170
170
171
mux .HandleFunc ("/healthz" , hp .checkProbe )
171
- klog . InfoS ("ServeMux listening" , "address" , addr )
172
+ logger . Info ("ServeMux listening" , "address" , addr )
172
173
err = http .ListenAndServe (addr , mux )
173
174
if err != nil {
174
- klog . ErrorS (err , "Failed to start http server" )
175
+ logger . Error (err , "Failed to start http server" )
175
176
}
176
177
}
0 commit comments