main: graceful shutdown

Signed-off-by: Mathis Raguin <mathis@cri.epita.fr>
This commit is contained in:
Mathis Raguin 2020-07-24 17:59:17 +02:00
parent 56ce7ed701
commit e38b7aaefe
No known key found for this signature in database
GPG Key ID: 381F9DC4C20A59B4
1 changed files with 21 additions and 12 deletions

33
main.go
View File

@ -148,39 +148,48 @@ func main() {
// Run MetricsHandler // Run MetricsHandler
{ {
g.Add(func() error { g.Add(func() error {
err = m.Run(ctx) klog.Errorf("metricshandler error: %v", m.Run(ctx))
klog.Errorf("metricshandler error: %v", err) return ctx.Err()
return err
}, func(error) { }, func(error) {
ctx.Done() //cancel()
}) })
} }
telemetryMux := buildTelemetryServer(ksmMetricsRegistry) telemetryMux := buildTelemetryServer(ksmMetricsRegistry)
telemetryServer := http.Server{Handler: telemetryMux}
telemetryListenAddress := net.JoinHostPort(opts.TelemetryHost, strconv.Itoa(opts.TelemetryPort))
telemetryLn, err := net.Listen("tcp", telemetryListenAddress)
if err != nil {
klog.Fatalf("Failed to create Telemetry Listener: %v", err)
}
metricsMux := buildMetricsServer(kubeClient, storeBuilder, m, opts) metricsMux := buildMetricsServer(kubeClient, storeBuilder, m, opts)
metricsServer := http.Server{Handler: metricsMux}
metricsServerListenAddress := net.JoinHostPort(opts.Host, strconv.Itoa(opts.Port))
metricsServerLn, err := net.Listen("tcp", metricsServerListenAddress)
if err != nil {
klog.Fatalf("Failed to create MetricsServer Listener: %v", err)
}
// Run Telemetry server // Run Telemetry server
{ {
g.Add(func() error { g.Add(func() error {
listenAddress := net.JoinHostPort(opts.TelemetryHost, strconv.Itoa(opts.TelemetryPort)) klog.Infof("Starting kube-state-metrics self metrics server: %s", telemetryListenAddress)
klog.Infof("Starting kube-state-metrics self metrics server: %s", listenAddress) err = telemetryServer.Serve(telemetryLn)
err = http.ListenAndServe(listenAddress, telemetryMux)
klog.Errorf("kube-state-metrics self metrics server error: %v", err) klog.Errorf("kube-state-metrics self metrics server error: %v", err)
return err return err
}, func(error) { }, func(error) {
ctx.Done() telemetryServer.Shutdown(ctx)
}) })
} }
// Run Metrics server // Run Metrics server
{ {
g.Add(func() error { g.Add(func() error {
listenAddress := net.JoinHostPort(opts.Host, strconv.Itoa(opts.Port)) klog.Infof("Starting metrics server: %s", metricsServerListenAddress)
klog.Infof("Starting metrics server: %s", listenAddress) err = metricsServer.Serve(metricsServerLn)
err = http.ListenAndServe(listenAddress, metricsMux)
klog.Errorf("metrics server error: %v", err) klog.Errorf("metrics server error: %v", err)
return err return err
}, func(error) { }, func(error) {
ctx.Done() metricsServer.Shutdown(ctx)
}) })
} }