// NewRegistry creates a kubernetes registry func NewRegistry(opts ...registry.Option) registry.Registry { var options registry.Options for _, o := range opts { o(&options) } // get first host var host string if len(options.Addrs) > 0 && len(options.Addrs[0]) > 0 { host = options.Addrs[0] } if options.Timeout == 0 { options.Timeout = time.Second * 1 } // if no hosts setup, assume InCluster var c client.Kubernetes if len(host) == 0 { c = client.NewClientInCluster() } else { c = client.NewClientByHost(host) } return &kregistry{ client: c, timeout: options.Timeout, } }
func NewRegistry(opts ...registry.Option) registry.Registry { config := clientv3.Config{ Endpoints: []string{"127.0.0.1:2379"}, } var options registry.Options for _, o := range opts { o(&options) } if options.Timeout == 0 { options.Timeout = 5 * time.Second } if options.Secure || options.TLSConfig != nil { tlsConfig := options.TLSConfig if tlsConfig == nil { tlsConfig = &tls.Config{ InsecureSkipVerify: true, } } config.TLS = tlsConfig } var cAddrs []string for _, addr := range options.Addrs { if len(addr) == 0 { continue } cAddrs = append(cAddrs, addr) } // if we got addrs then we'll update if len(cAddrs) > 0 { config.Endpoints = cAddrs } cli, _ := clientv3.New(config) e := &etcdv3Registry{ client: cli, options: options, register: make(map[string]uint64), leases: make(map[string]clientv3.LeaseID), } return e }
func NewRegistry(opts ...registry.Option) registry.Registry { var options registry.Options for _, o := range opts { o(&options) } if options.Timeout == 0 { options.Timeout = 5 } var cAddrs []string for _, addr := range options.Addrs { if len(addr) == 0 { continue } cAddrs = append(cAddrs, addr) } if len(cAddrs) == 0 { cAddrs = []string{"127.0.0.1:2181"} } // connect to zookeeper c, _, err := zk.Connect(cAddrs, time.Second*options.Timeout) if err != nil { log.Fatal(err) } // create our prefix path if err := createPath(prefix, []byte{}, c); err != nil { log.Fatal(err) } return &zookeeperRegistry{ client: c, options: options, register: make(map[string]uint64), } }
func NewRegistry(opts ...registry.Option) registry.Registry { config := etcd.Config{ Endpoints: []string{"http://127.0.0.1:2379"}, } var options registry.Options for _, o := range opts { o(&options) } if options.Timeout == 0 { options.Timeout = etcd.DefaultRequestTimeout } if options.Secure || options.TLSConfig != nil { tlsConfig := options.TLSConfig if tlsConfig == nil { tlsConfig = &tls.Config{ InsecureSkipVerify: true, } } // for InsecureSkipVerify t := &http.Transport{ Proxy: http.ProxyFromEnvironment, Dial: (&net.Dialer{ Timeout: 30 * time.Second, KeepAlive: 30 * time.Second, }).Dial, TLSHandshakeTimeout: 10 * time.Second, TLSClientConfig: tlsConfig, } runtime.SetFinalizer(&t, func(tr **http.Transport) { (*tr).CloseIdleConnections() }) config.Transport = t // default secure address config.Endpoints = []string{"https://127.0.0.1:2379"} } var cAddrs []string for _, addr := range options.Addrs { if len(addr) == 0 { continue } if options.Secure { // replace http:// with https:// if its there addr = strings.Replace(addr, "http://", "https://", 1) // has the prefix? no... ok add it if !strings.HasPrefix(addr, "https://") { addr = "https://" + addr } } cAddrs = append(cAddrs, addr) } // if we got addrs then we'll update if len(cAddrs) > 0 { config.Endpoints = cAddrs } c, _ := etcd.New(config) e := &etcdRegistry{ client: etcd.NewKeysAPI(c), options: options, } return e }