@@ -567,26 +567,27 @@ func buildMetricsServer(m *metricshandler.MetricsHandler, durationObserver prome
567567 mux := http .NewServeMux ()
568568
569569 // Add metricsPath
570- metricsHandler : = promhttp .InstrumentHandlerDuration (durationObserver , m )
570+ var metricsHandler http. Handler = promhttp .InstrumentHandlerDuration (durationObserver , m )
571571
572572 // Add Authentication/Authorization via Kubernetes API
573573 if authFilter {
574+ unavailable := http .HandlerFunc (func (w http.ResponseWriter , _ * http.Request ) {
575+ http .Error (w , "auth filter unavailable" , http .StatusServiceUnavailable )
576+ })
577+
574578 client , err := rest .HTTPClientFor (kubeConfig )
575579 if err != nil {
576580 klog .ErrorS (err , "failed to create HTTP client from config" )
577- }
578-
579- metricsFilter , err := filters .WithAuthenticationAndAuthorization (kubeConfig , client )
580- if err != nil {
581+ metricsHandler = unavailable
582+ } else if metricsFilter , err := filters .WithAuthenticationAndAuthorization (kubeConfig , client ); err != nil {
581583 klog .ErrorS (err , "failed to create auth handler" )
582- }
583-
584- handler , err := metricsFilter (klog .Background (), metricsHandler )
585- if err != nil {
584+ metricsHandler = unavailable
585+ } else if handler , err := metricsFilter (klog .Background (), metricsHandler ); err != nil {
586586 klog .ErrorS (err , "failed to apply metrics filter" )
587+ metricsHandler = unavailable
588+ } else {
589+ metricsHandler = handler
587590 }
588- metricsHandler = handler .(http.HandlerFunc )
589-
590591 }
591592
592593 mux .Handle (metricsPath , metricsHandler )
0 commit comments