Skip to content

Commit

Permalink
✨ Add ListenerConfig for metrics server options (#2519)
Browse files Browse the repository at this point in the history
* Add ListenerConfig for metrics

* Address feedback on backwards compatibility and full cross feature functionality.

* Address feedback

* Add error handling

* Update pkg/metrics/server/server.go

Co-authored-by: Stefan Büringer <4662360+sbueringer@users.noreply.github.com>

---------

Co-authored-by: Stefan Büringer <4662360+sbueringer@users.noreply.github.com>
  • Loading branch information
tomelliot16 and sbueringer committed Jan 31, 2024
1 parent 8475c55 commit 73519a9
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions pkg/metrics/server/server.go
Expand Up @@ -101,6 +101,9 @@ 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.
ListenConfig net.ListenConfig
}

// Filter is a func that is added around metrics and extra handlers on the metrics server.
Expand Down Expand Up @@ -249,7 +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 {
return net.Listen("tcp", s.options.BindAddress)
return s.options.ListenConfig.Listen(ctx, "tcp", s.options.BindAddress)
}

cfg := &tls.Config{ //nolint:gosec
Expand Down Expand Up @@ -302,7 +305,12 @@ func (s *defaultServer) createListener(ctx context.Context, log logr.Logger) (ne
cfg.Certificates = []tls.Certificate{keyPair}
}

return tls.Listen("tcp", s.options.BindAddress, cfg)
l, err := s.options.ListenConfig.Listen(ctx, "tcp", s.options.BindAddress)
if err != nil {
return nil, err
}

return tls.NewListener(l, cfg), nil
}

func (s *defaultServer) GetBindAddr() string {
Expand Down

0 comments on commit 73519a9

Please sign in to comment.