mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
etcdmain, embed: --auto-peer-tls and --auto-tls for v2 proxy
Fixes #7930
This commit is contained in:
parent
5d6c6ad20e
commit
d5a0d4d696
@ -20,6 +20,7 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/coreos/etcd/etcdserver"
|
"github.com/coreos/etcd/etcdserver"
|
||||||
@ -393,6 +394,34 @@ func (cfg Config) defaultClientHost() bool {
|
|||||||
return len(cfg.ACUrls) == 1 && cfg.ACUrls[0].String() == DefaultAdvertiseClientURLs
|
return len(cfg.ACUrls) == 1 && cfg.ACUrls[0].String() == DefaultAdvertiseClientURLs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (cfg *Config) ClientSelfCert() (err error) {
|
||||||
|
if cfg.ClientAutoTLS && cfg.ClientTLSInfo.Empty() {
|
||||||
|
chosts := make([]string, len(cfg.LCUrls))
|
||||||
|
for i, u := range cfg.LCUrls {
|
||||||
|
chosts[i] = u.Host
|
||||||
|
}
|
||||||
|
cfg.ClientTLSInfo, err = transport.SelfCert(filepath.Join(cfg.Dir, "fixtures", "client"), chosts)
|
||||||
|
return err
|
||||||
|
} else if cfg.ClientAutoTLS {
|
||||||
|
plog.Warningf("ignoring client auto TLS since certs given")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cfg *Config) PeerSelfCert() (err error) {
|
||||||
|
if cfg.PeerAutoTLS && cfg.PeerTLSInfo.Empty() {
|
||||||
|
phosts := make([]string, len(cfg.LPUrls))
|
||||||
|
for i, u := range cfg.LPUrls {
|
||||||
|
phosts[i] = u.Host
|
||||||
|
}
|
||||||
|
cfg.PeerTLSInfo, err = transport.SelfCert(filepath.Join(cfg.Dir, "fixtures", "peer"), phosts)
|
||||||
|
return err
|
||||||
|
} else if cfg.PeerAutoTLS {
|
||||||
|
plog.Warningf("ignoring peer auto TLS since certs given")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// UpdateDefaultClusterFromName updates cluster advertise URLs with, if available, default host,
|
// UpdateDefaultClusterFromName updates cluster advertise URLs with, if available, default host,
|
||||||
// if advertise URLs are default values(localhost:2379,2380) AND if listen URL is 0.0.0.0.
|
// if advertise URLs are default values(localhost:2379,2380) AND if listen URL is 0.0.0.0.
|
||||||
// e.g. advertise peer URL localhost:2380 or listen peer URL 0.0.0.0:2380
|
// e.g. advertise peer URL localhost:2380 or listen peer URL 0.0.0.0:2380
|
||||||
|
@ -22,7 +22,6 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"path/filepath"
|
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -248,19 +247,9 @@ func (e *Etcd) Close() {
|
|||||||
func (e *Etcd) Err() <-chan error { return e.errc }
|
func (e *Etcd) Err() <-chan error { return e.errc }
|
||||||
|
|
||||||
func startPeerListeners(cfg *Config) (peers []*peerListener, err error) {
|
func startPeerListeners(cfg *Config) (peers []*peerListener, err error) {
|
||||||
if cfg.PeerAutoTLS && cfg.PeerTLSInfo.Empty() {
|
if err = cfg.PeerSelfCert(); err != nil {
|
||||||
phosts := make([]string, len(cfg.LPUrls))
|
plog.Fatalf("could not get certs (%v)", err)
|
||||||
for i, u := range cfg.LPUrls {
|
|
||||||
phosts[i] = u.Host
|
|
||||||
}
|
|
||||||
cfg.PeerTLSInfo, err = transport.SelfCert(filepath.Join(cfg.Dir, "fixtures", "peer"), phosts)
|
|
||||||
if err != nil {
|
|
||||||
plog.Fatalf("could not get certs (%v)", err)
|
|
||||||
}
|
|
||||||
} else if cfg.PeerAutoTLS {
|
|
||||||
plog.Warningf("ignoring peer auto TLS since certs given")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if !cfg.PeerTLSInfo.Empty() {
|
if !cfg.PeerTLSInfo.Empty() {
|
||||||
plog.Infof("peerTLS: %s", cfg.PeerTLSInfo)
|
plog.Infof("peerTLS: %s", cfg.PeerTLSInfo)
|
||||||
}
|
}
|
||||||
@ -302,19 +291,9 @@ func startPeerListeners(cfg *Config) (peers []*peerListener, err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func startClientListeners(cfg *Config) (sctxs map[string]*serveCtx, err error) {
|
func startClientListeners(cfg *Config) (sctxs map[string]*serveCtx, err error) {
|
||||||
if cfg.ClientAutoTLS && cfg.ClientTLSInfo.Empty() {
|
if err = cfg.ClientSelfCert(); err != nil {
|
||||||
chosts := make([]string, len(cfg.LCUrls))
|
plog.Fatalf("could not get certs (%v)", err)
|
||||||
for i, u := range cfg.LCUrls {
|
|
||||||
chosts[i] = u.Host
|
|
||||||
}
|
|
||||||
cfg.ClientTLSInfo, err = transport.SelfCert(filepath.Join(cfg.Dir, "fixtures", "client"), chosts)
|
|
||||||
if err != nil {
|
|
||||||
plog.Fatalf("could not get certs (%v)", err)
|
|
||||||
}
|
|
||||||
} else if cfg.ClientAutoTLS {
|
|
||||||
plog.Warningf("ignoring client auto TLS since certs given")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if cfg.EnablePprof {
|
if cfg.EnablePprof {
|
||||||
plog.Infof("pprof is enabled under %s", debugutil.HTTPPrefixPProf)
|
plog.Infof("pprof is enabled under %s", debugutil.HTTPPrefixPProf)
|
||||||
}
|
}
|
||||||
|
@ -205,6 +205,8 @@ func startProxy(cfg *config) error {
|
|||||||
// for both client and peer connections.
|
// for both client and peer connections.
|
||||||
clientTLSInfo = cfg.PeerTLSInfo
|
clientTLSInfo = cfg.PeerTLSInfo
|
||||||
}
|
}
|
||||||
|
clientTLSInfo.InsecureSkipVerify = cfg.ClientAutoTLS
|
||||||
|
cfg.PeerTLSInfo.InsecureSkipVerify = cfg.PeerAutoTLS
|
||||||
|
|
||||||
pt, err := transport.NewTimeoutTransport(clientTLSInfo, time.Duration(cfg.ProxyDialTimeoutMs)*time.Millisecond, time.Duration(cfg.ProxyReadTimeoutMs)*time.Millisecond, time.Duration(cfg.ProxyWriteTimeoutMs)*time.Millisecond)
|
pt, err := transport.NewTimeoutTransport(clientTLSInfo, time.Duration(cfg.ProxyDialTimeoutMs)*time.Millisecond, time.Duration(cfg.ProxyReadTimeoutMs)*time.Millisecond, time.Duration(cfg.ProxyWriteTimeoutMs)*time.Millisecond)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -212,6 +214,9 @@ func startProxy(cfg *config) error {
|
|||||||
}
|
}
|
||||||
pt.MaxIdleConnsPerHost = httpproxy.DefaultMaxIdleConnsPerHost
|
pt.MaxIdleConnsPerHost = httpproxy.DefaultMaxIdleConnsPerHost
|
||||||
|
|
||||||
|
if err = cfg.PeerSelfCert(); err != nil {
|
||||||
|
plog.Fatalf("could not get certs (%v)", err)
|
||||||
|
}
|
||||||
tr, err := transport.NewTimeoutTransport(cfg.PeerTLSInfo, time.Duration(cfg.ProxyDialTimeoutMs)*time.Millisecond, time.Duration(cfg.ProxyReadTimeoutMs)*time.Millisecond, time.Duration(cfg.ProxyWriteTimeoutMs)*time.Millisecond)
|
tr, err := transport.NewTimeoutTransport(cfg.PeerTLSInfo, time.Duration(cfg.ProxyDialTimeoutMs)*time.Millisecond, time.Duration(cfg.ProxyReadTimeoutMs)*time.Millisecond, time.Duration(cfg.ProxyWriteTimeoutMs)*time.Millisecond)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
Loading…
x
Reference in New Issue
Block a user