From 76e321a43409e5d03ffc96ea29858937b6d6cbe7 Mon Sep 17 00:00:00 2001 From: Tom Elliot Date: Wed, 27 Sep 2023 14:26:02 -0400 Subject: [PATCH 1/5] Add ListenerConfig for metrics --- pkg/metrics/server/server.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pkg/metrics/server/server.go b/pkg/metrics/server/server.go index e10c5c2103..becebadf88 100644 --- a/pkg/metrics/server/server.go +++ b/pkg/metrics/server/server.go @@ -101,6 +101,10 @@ type Options struct { // TLSOpts is used to allow configuring the TLS config used for the server. // This also allows providing a certificate via GetCertificate. TLSOpts []func(*tls.Config) + + // ListenConfig contains options for listening to an address on the metric server. + // Note: This does not work with SecureServing=true + ListenConfig net.ListenConfig } // Filter is a func that is added around metrics and extra handlers on the metrics server. @@ -249,7 +253,7 @@ func (s *defaultServer) Start(ctx context.Context) error { func (s *defaultServer) createListener(ctx context.Context, log logr.Logger) (net.Listener, error) { if !s.options.SecureServing { - return net.Listen("tcp", s.options.BindAddress) + return s.options.ListenConfig.Listen(context.Background(), "tcp", s.options.BindAddress) } cfg := &tls.Config{ //nolint:gosec From 7390b98092f764cd22f5951a300df6f83cef5339 Mon Sep 17 00:00:00 2001 From: Tom Elliot Date: Sun, 8 Oct 2023 22:26:58 -0400 Subject: [PATCH 2/5] Address feedback on backwards compatibility and full cross feature functionality. --- pkg/metrics/server/server.go | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/pkg/metrics/server/server.go b/pkg/metrics/server/server.go index becebadf88..92f2b49015 100644 --- a/pkg/metrics/server/server.go +++ b/pkg/metrics/server/server.go @@ -103,8 +103,7 @@ type Options struct { TLSOpts []func(*tls.Config) // ListenConfig contains options for listening to an address on the metric server. - // Note: This does not work with SecureServing=true - ListenConfig net.ListenConfig + ListenConfig *net.ListenConfig } // Filter is a func that is added around metrics and extra handlers on the metrics server. @@ -253,7 +252,11 @@ func (s *defaultServer) Start(ctx context.Context) error { func (s *defaultServer) createListener(ctx context.Context, log logr.Logger) (net.Listener, error) { if !s.options.SecureServing { - return s.options.ListenConfig.Listen(context.Background(), "tcp", s.options.BindAddress) + if s.options.ListenConfig == nil { + return net.Listen("tcp", s.options.BindAddress) + } else { + return s.options.ListenConfig.Listen(context.Background(), "tcp", s.options.BindAddress) + } } cfg := &tls.Config{ //nolint:gosec @@ -306,7 +309,16 @@ func (s *defaultServer) createListener(ctx context.Context, log logr.Logger) (ne cfg.Certificates = []tls.Certificate{keyPair} } - return tls.Listen("tcp", s.options.BindAddress, cfg) + var l net.Listener + var err error + + if s.options.ListenConfig == nil { + l, err = net.Listen("tcp", s.options.BindAddress) + } else { + l, err = s.options.ListenConfig.Listen(context.Background(), "tcp", s.options.BindAddress) + } + + return tls.NewListener(l, cfg), err } func (s *defaultServer) GetBindAddr() string { From 75d2ced8fbb5e1087da86462926a3f55840eced3 Mon Sep 17 00:00:00 2001 From: Tom Elliot Date: Thu, 19 Oct 2023 16:22:02 -0400 Subject: [PATCH 3/5] Address feedback --- pkg/metrics/server/server.go | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/pkg/metrics/server/server.go b/pkg/metrics/server/server.go index 92f2b49015..bdd0e2f845 100644 --- a/pkg/metrics/server/server.go +++ b/pkg/metrics/server/server.go @@ -103,7 +103,7 @@ type Options struct { TLSOpts []func(*tls.Config) // ListenConfig contains options for listening to an address on the metric server. - ListenConfig *net.ListenConfig + ListenConfig net.ListenConfig } // Filter is a func that is added around metrics and extra handlers on the metrics server. @@ -252,11 +252,7 @@ func (s *defaultServer) Start(ctx context.Context) error { func (s *defaultServer) createListener(ctx context.Context, log logr.Logger) (net.Listener, error) { if !s.options.SecureServing { - if s.options.ListenConfig == nil { - return net.Listen("tcp", s.options.BindAddress) - } else { - return s.options.ListenConfig.Listen(context.Background(), "tcp", s.options.BindAddress) - } + return s.options.ListenConfig.Listen(ctx, "tcp", s.options.BindAddress) } cfg := &tls.Config{ //nolint:gosec @@ -309,14 +305,7 @@ func (s *defaultServer) createListener(ctx context.Context, log logr.Logger) (ne cfg.Certificates = []tls.Certificate{keyPair} } - var l net.Listener - var err error - - if s.options.ListenConfig == nil { - l, err = net.Listen("tcp", s.options.BindAddress) - } else { - l, err = s.options.ListenConfig.Listen(context.Background(), "tcp", s.options.BindAddress) - } + l, err := s.options.ListenConfig.Listen(ctx, "tcp", s.options.BindAddress) return tls.NewListener(l, cfg), err } From f068f9bf5d9870d7def6dd89d7fabacc3d7b3c12 Mon Sep 17 00:00:00 2001 From: Tom Elliot Date: Tue, 16 Jan 2024 15:36:11 -0500 Subject: [PATCH 4/5] Add error handling --- pkg/metrics/server/server.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkg/metrics/server/server.go b/pkg/metrics/server/server.go index bdd0e2f845..45f442cfbe 100644 --- a/pkg/metrics/server/server.go +++ b/pkg/metrics/server/server.go @@ -306,6 +306,9 @@ func (s *defaultServer) createListener(ctx context.Context, log logr.Logger) (ne } l, err := s.options.ListenConfig.Listen(ctx, "tcp", s.options.BindAddress) + if err != nil { + return nil, err + } return tls.NewListener(l, cfg), err } From 11fe5c6fdb8af1604141bfefa43af6b81f2be772 Mon Sep 17 00:00:00 2001 From: Tom Elliot Date: Mon, 22 Jan 2024 00:57:22 -0500 Subject: [PATCH 5/5] Update pkg/metrics/server/server.go MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Stefan Büringer <4662360+sbueringer@users.noreply.github.com> --- pkg/metrics/server/server.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/metrics/server/server.go b/pkg/metrics/server/server.go index 45f442cfbe..934189664e 100644 --- a/pkg/metrics/server/server.go +++ b/pkg/metrics/server/server.go @@ -310,7 +310,7 @@ func (s *defaultServer) createListener(ctx context.Context, log logr.Logger) (ne return nil, err } - return tls.NewListener(l, cfg), err + return tls.NewListener(l, cfg), nil } func (s *defaultServer) GetBindAddr() string {