@@ -669,12 +669,19 @@ func embedConfig(cfg config.Config, logger zerolog.Logger) (*embed.Config, error
669669
670670 clientPort := cfg .EtcdServer .ClientPort
671671 peerPort := cfg .EtcdServer .PeerPort
672+
673+ wildcard , err := utils .GetBindAddr ()
674+ if err != nil {
675+ return nil , fmt .Errorf ("failed to detect bind address: %w" , err )
676+ }
677+
672678 c .ListenClientUrls = []url.URL {
673- {Scheme : "https" , Host : fmt . Sprintf ( "0.0.0.0:%d" , clientPort )},
679+ {Scheme : "https" , Host : net . JoinHostPort ( wildcard , strconv . Itoa ( clientPort ) )},
674680 }
675681 c .ListenPeerUrls = []url.URL {
676- {Scheme : "https" , Host : fmt . Sprintf ( "0.0.0.0:%d" , peerPort )},
682+ {Scheme : "https" , Host : net . JoinHostPort ( wildcard , strconv . Itoa ( peerPort ) )},
677683 }
684+
678685 clientURLs := make ([]url.URL , len (cfg .PeerAddresses ))
679686 peerURLs := make ([]url.URL , len (cfg .PeerAddresses ))
680687 for i , address := range cfg .PeerAddresses {
@@ -714,22 +721,25 @@ func initializationConfig(cfg config.Config, logger zerolog.Logger) (*embed.Conf
714721 // Only bind/advertise localhost for initialization
715722 clientPort := cfg .EtcdServer .ClientPort
716723 peerPort := cfg .EtcdServer .PeerPort
724+ loopback := "127.0.0.1"
725+
717726 c .ListenClientUrls = []url.URL {
718- {Scheme : "http" , Host : fmt . Sprintf ( "127.0.0.1:%d" , clientPort )},
727+ {Scheme : "http" , Host : net . JoinHostPort ( loopback , strconv . Itoa ( clientPort ) )},
719728 }
720729 c .AdvertiseClientUrls = []url.URL {
721- {Scheme : "http" , Host : fmt . Sprintf ( "127.0.0.1:%d" , clientPort )},
730+ {Scheme : "http" , Host : net . JoinHostPort ( loopback , strconv . Itoa ( clientPort ) )},
722731 }
732+
723733 c .ListenPeerUrls = []url.URL {
724- {Scheme : "http" , Host : fmt . Sprintf ( "127.0.0.1:%d" , peerPort )},
734+ {Scheme : "http" , Host : net . JoinHostPort ( loopback , strconv . Itoa ( peerPort ) )},
725735 }
726736 c .AdvertisePeerUrls = []url.URL {
727- {Scheme : "http" , Host : fmt . Sprintf ( "127.0.0.1:%d" , peerPort )},
737+ {Scheme : "http" , Host : net . JoinHostPort ( loopback , strconv . Itoa ( peerPort ) )},
728738 }
729739 c .InitialCluster = fmt .Sprintf (
730- "%s=http://127.0.0.1:%d " ,
740+ "%s=http://%s " ,
731741 cfg .HostID ,
732- cfg .EtcdServer .PeerPort ,
742+ net . JoinHostPort ( loopback , strconv . Itoa ( cfg .EtcdServer .PeerPort )) ,
733743 )
734744 c .QuotaBackendBytes = quotaBackendBytes
735745
0 commit comments