From 50a697719f5ed72d963b70339fd4e78123a67fa2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Hahn?= Date: Wed, 30 Oct 2019 19:33:48 -0300 Subject: [PATCH] Adding etcd auth --- cluster/etcd_service_discovery.go | 13 +++++++++++-- docs/configuration.rst | 8 ++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/cluster/etcd_service_discovery.go b/cluster/etcd_service_discovery.go index 5935e925..c49a4f53 100644 --- a/cluster/etcd_service_discovery.go +++ b/cluster/etcd_service_discovery.go @@ -48,6 +48,8 @@ type etcdServiceDiscovery struct { serverMapByType map[string]map[string]*Server serverMapByID sync.Map etcdEndpoints []string + etcdUser string + etcdPass string etcdPrefix string etcdDialTimeout time.Duration running bool @@ -94,6 +96,8 @@ func NewEtcdServiceDiscovery( func (sd *etcdServiceDiscovery) configure() { sd.etcdEndpoints = sd.config.GetStringSlice("pitaya.cluster.sd.etcd.endpoints") + sd.etcdUser = sd.config.GetString("pitaya.cluster.sd.etcd.user") + sd.etcdPass = sd.config.GetString("pitaya.cluster.sd.etcd.pass") sd.etcdDialTimeout = sd.config.GetDuration("pitaya.cluster.sd.etcd.dialtimeout") sd.etcdPrefix = sd.config.GetString("pitaya.cluster.sd.etcd.prefix") sd.heartbeatTTL = sd.config.GetDuration("pitaya.cluster.sd.etcd.heartbeat.ttl") @@ -330,10 +334,15 @@ func (sd *etcdServiceDiscovery) Init() error { var cli *clientv3.Client var err error if sd.cli == nil { - cli, err = clientv3.New(clientv3.Config{ + config := clientv3.Config{ Endpoints: sd.etcdEndpoints, DialTimeout: sd.etcdDialTimeout, - }) + } + if sd.etcdUser != "" && sd.etcdPass != "" { + config.Username = sd.etcdUser + config.Password = sd.etcdPass + } + cli, err = clientv3.New(config) if err != nil { return err } diff --git a/docs/configuration.rst b/docs/configuration.rst index d8efcab5..5bb4066a 100644 --- a/docs/configuration.rst +++ b/docs/configuration.rst @@ -27,6 +27,14 @@ These configuration values configure service discovery for the default etcd serv - localhost:2379 - string - List of comma separated etcd endpoints + * - pitaya.cluster.sd.etcd.user + - + - string + - Username to connect to etcd + * - pitaya.cluster.sd.etcd.pass + - + - string + - Password to connect to etcd * - pitaya.cluster.sd.etcd.heartbeat.ttl - 60s - time.Time