mirror of
https://github.com/k3s-io/k3s.git
synced 2024-06-07 19:41:36 +00:00
5749f66aa3
* Add disable flags to control components Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com> * golint Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com> * more fixes Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com> * fixes to disable flags Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com> * Add comments to functions Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com> * Fix joining problem Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com> * more fixes Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com> * golint Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com> * fix ticker Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com> * fix role labels Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com> * more fixes Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com>
77 lines
1.6 KiB
Go
77 lines
1.6 KiB
Go
package etcd
|
|
|
|
import (
|
|
"net/url"
|
|
|
|
"github.com/pkg/errors"
|
|
"github.com/rancher/k3s/pkg/agent/loadbalancer"
|
|
)
|
|
|
|
type Proxy interface {
|
|
Update(addresses []string)
|
|
ETCDURL() string
|
|
ETCDAddresses() []string
|
|
ETCDServerURL() string
|
|
}
|
|
|
|
// NewETCDProxy initializes a new proxy structure that contain a load balancer
|
|
// which listens on port 2379 and proxy between etcd cluster members
|
|
func NewETCDProxy(enabled bool, dataDir, etcdURL string) (Proxy, error) {
|
|
e := &etcdproxy{
|
|
dataDir: dataDir,
|
|
initialETCDURL: etcdURL,
|
|
etcdURL: etcdURL,
|
|
}
|
|
|
|
if enabled {
|
|
lb, err := loadbalancer.New(dataDir, loadbalancer.ETCDServerServiceName, etcdURL, 2379)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
e.etcdLB = lb
|
|
e.etcdLBURL = lb.LoadBalancerServerURL()
|
|
}
|
|
|
|
u, err := url.Parse(e.initialETCDURL)
|
|
if err != nil {
|
|
return nil, errors.Wrap(err, "failed to parse etcd client URL")
|
|
}
|
|
e.fallbackETCDAddress = u.Host
|
|
e.etcdPort = u.Port()
|
|
|
|
return e, nil
|
|
}
|
|
|
|
type etcdproxy struct {
|
|
dataDir string
|
|
etcdLBURL string
|
|
|
|
initialETCDURL string
|
|
etcdURL string
|
|
etcdPort string
|
|
fallbackETCDAddress string
|
|
etcdAddresses []string
|
|
etcdLB *loadbalancer.LoadBalancer
|
|
}
|
|
|
|
func (e *etcdproxy) Update(addresses []string) {
|
|
if e.etcdLB != nil {
|
|
e.etcdLB.Update(addresses)
|
|
}
|
|
}
|
|
|
|
func (e *etcdproxy) ETCDURL() string {
|
|
return e.etcdURL
|
|
}
|
|
|
|
func (e *etcdproxy) ETCDAddresses() []string {
|
|
if len(e.etcdAddresses) > 0 {
|
|
return e.etcdAddresses
|
|
}
|
|
return []string{e.fallbackETCDAddress}
|
|
}
|
|
|
|
func (e *etcdproxy) ETCDServerURL() string {
|
|
return e.etcdURL
|
|
}
|