From f89128a2d9e6589705b96221c6a92b18481de185 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Mon, 22 Feb 2021 13:42:00 +0000 Subject: [PATCH 1/4] use registry interface MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- ocis-pkg/registry/registry.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ocis-pkg/registry/registry.go b/ocis-pkg/registry/registry.go index 102599802b7..c88274f6294 100644 --- a/ocis-pkg/registry/registry.go +++ b/ocis-pkg/registry/registry.go @@ -18,7 +18,7 @@ var ( // GetRegistry returns a configured micro registry based on Micro env vars. // It defaults to mDNS, so mind that systems with mDNS disabled by default (i.e SUSE) will have a hard time // and it needs to explicitly use etcd. Os awareness for providing a working registry out of the box should be done. -func GetRegistry() *registry.Registry { +func GetRegistry() registry.Registry { addresses := strings.Split(os.Getenv(registryAddressEnv), ",") var r registry.Registry @@ -31,5 +31,5 @@ func GetRegistry() *registry.Registry { r = mdnsr.NewRegistry() } - return &r + return r } From 8a8aa2dc523e490c3262bf1b64b68e3a3dd18fc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Mon, 22 Feb 2021 15:08:50 +0000 Subject: [PATCH 2/4] use micre v3 registry interface MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- accounts/pkg/command/version.go | 2 +- idp/pkg/command/version.go | 2 +- ocis-pkg/service/grpc/service.go | 2 +- ocis-pkg/service/http/service.go | 2 +- ocis/pkg/command/root.go | 2 +- ocis/pkg/command/version.go | 2 +- ocs/pkg/command/version.go | 2 +- proxy/pkg/command/version.go | 2 +- settings/pkg/command/version.go | 2 +- storage/pkg/service/external/external.go | 6 +++--- store/pkg/command/version.go | 2 +- thumbnails/pkg/command/version.go | 2 +- webdav/pkg/command/version.go | 2 +- 13 files changed, 15 insertions(+), 15 deletions(-) diff --git a/accounts/pkg/command/version.go b/accounts/pkg/command/version.go index f5d222840bf..1ceb6340820 100644 --- a/accounts/pkg/command/version.go +++ b/accounts/pkg/command/version.go @@ -19,7 +19,7 @@ func PrintVersion(cfg *config.Config) *cli.Command { Usage: "Print the versions of the running instances", Flags: flagset.ListAccountsWithConfig(cfg), Action: func(c *cli.Context) error { - reg := *registry.GetRegistry() + reg := registry.GetRegistry() services, err := reg.GetService(cfg.GRPC.Namespace + "." + cfg.Server.Name) if err != nil { fmt.Println(fmt.Errorf("could not get accounts services from the registry: %v", err)) diff --git a/idp/pkg/command/version.go b/idp/pkg/command/version.go index 5be8ea3d468..10a32c5c59a 100644 --- a/idp/pkg/command/version.go +++ b/idp/pkg/command/version.go @@ -19,7 +19,7 @@ func PrintVersion(cfg *config.Config) *cli.Command { Usage: "Print the versions of the running instances", Flags: flagset.ListIDPWithConfig(cfg), Action: func(c *cli.Context) error { - reg := *registry.GetRegistry() + reg := registry.GetRegistry() services, err := reg.GetService(cfg.Service.Namespace + "." + cfg.Service.Name) if err != nil { fmt.Println(fmt.Errorf("could not get idp services from the registry: %v", err)) diff --git a/ocis-pkg/service/grpc/service.go b/ocis-pkg/service/grpc/service.go index 407a04d8bb4..c5c731e4e5a 100644 --- a/ocis-pkg/service/grpc/service.go +++ b/ocis-pkg/service/grpc/service.go @@ -39,7 +39,7 @@ func NewService(opts ...Option) Service { micro.Version(sopts.Version), micro.Context(sopts.Context), micro.Flags(sopts.Flags...), - micro.Registry(*registry.GetRegistry()), + micro.Registry(registry.GetRegistry()), micro.RegisterTTL(time.Second * 30), micro.RegisterInterval(time.Second * 10), micro.WrapHandler(prometheus.NewHandlerWrapper()), diff --git a/ocis-pkg/service/http/service.go b/ocis-pkg/service/http/service.go index a2af36913dc..82b941ddc6f 100644 --- a/ocis-pkg/service/http/service.go +++ b/ocis-pkg/service/http/service.go @@ -32,7 +32,7 @@ func NewService(opts ...Option) Service { micro.Version(sopts.Version), micro.Context(sopts.Context), micro.Flags(sopts.Flags...), - micro.Registry(*registry.GetRegistry()), + micro.Registry(registry.GetRegistry()), micro.RegisterTTL(time.Second * 30), micro.RegisterInterval(time.Second * 10), } diff --git a/ocis/pkg/command/root.go b/ocis/pkg/command/root.go index 25d234cc458..54fbf4beb1a 100644 --- a/ocis/pkg/command/root.go +++ b/ocis/pkg/command/root.go @@ -44,7 +44,7 @@ func Execute() error { ) } - //r := *registry.GetRegistry() + //r := registry.GetRegistry() //opts := micro.Options{ // Registry: r, diff --git a/ocis/pkg/command/version.go b/ocis/pkg/command/version.go index a361225b6d4..48626e950d1 100644 --- a/ocis/pkg/command/version.go +++ b/ocis/pkg/command/version.go @@ -19,7 +19,7 @@ func VersionCommand(cfg *config.Config) *cli.Command { Usage: "Lists running services with version", Category: "Runtime", Action: func(c *cli.Context) error { - reg := *registry.GetRegistry() + reg := registry.GetRegistry() serviceList, err := reg.ListServices() if err != nil { fmt.Println(fmt.Errorf("could not list services: %v", err)) diff --git a/ocs/pkg/command/version.go b/ocs/pkg/command/version.go index b61419f920c..23ef9662927 100644 --- a/ocs/pkg/command/version.go +++ b/ocs/pkg/command/version.go @@ -19,7 +19,7 @@ func PrintVersion(cfg *config.Config) *cli.Command { Usage: "Print the versions of the running instances", Flags: flagset.ListOcsWithConfig(cfg), Action: func(c *cli.Context) error { - reg := *registry.GetRegistry() + reg := registry.GetRegistry() services, err := reg.GetService(cfg.Service.Namespace + "." + cfg.Service.Name) if err != nil { fmt.Println(fmt.Errorf("could not get ocs services from the registry: %v", err)) diff --git a/proxy/pkg/command/version.go b/proxy/pkg/command/version.go index f655589f2bf..e76dcc6a965 100644 --- a/proxy/pkg/command/version.go +++ b/proxy/pkg/command/version.go @@ -19,7 +19,7 @@ func PrintVersion(cfg *config.Config) *cli.Command { Usage: "Print the versions of the running instances", Flags: flagset.ListProxyWithConfig(cfg), Action: func(c *cli.Context) error { - reg := *registry.GetRegistry() + reg := registry.GetRegistry() services, err := reg.GetService(cfg.Service.Namespace + "." + cfg.Service.Name) if err != nil { fmt.Println(fmt.Errorf("could not get proxy services from the registry: %v", err)) diff --git a/settings/pkg/command/version.go b/settings/pkg/command/version.go index 3d3f15e726a..81df847f1c5 100644 --- a/settings/pkg/command/version.go +++ b/settings/pkg/command/version.go @@ -19,7 +19,7 @@ func PrintVersion(cfg *config.Config) *cli.Command { Usage: "Print the versions of the running instances", Flags: flagset.ListSettingsWithConfig(cfg), Action: func(c *cli.Context) error { - reg := *registry.GetRegistry() + reg := registry.GetRegistry() services, err := reg.GetService(cfg.GRPC.Namespace + "." + cfg.Service.Name) if err != nil { fmt.Println(fmt.Errorf("could not get settings services from the registry: %v", err)) diff --git a/storage/pkg/service/external/external.go b/storage/pkg/service/external/external.go index 34dcca193d6..570fc527190 100644 --- a/storage/pkg/service/external/external.go +++ b/storage/pkg/service/external/external.go @@ -19,14 +19,14 @@ func RegisterGRPCEndpoint(ctx context.Context, serviceID, uuid, addr string, log Address: addr, Metadata: make(map[string]string), } + r := oregistry.GetRegistry() + node.Metadata["broker"] = broker.String() - node.Metadata["registry"] = registry.String() + node.Metadata["registry"] = r.String() node.Metadata["server"] = "grpc" node.Metadata["transport"] = "grpc" node.Metadata["protocol"] = "grpc" - r := *oregistry.GetRegistry() - service := ®istry.Service{ Name: serviceID, Version: "", diff --git a/store/pkg/command/version.go b/store/pkg/command/version.go index ff23342650e..8e89bc107e8 100644 --- a/store/pkg/command/version.go +++ b/store/pkg/command/version.go @@ -19,7 +19,7 @@ func PrintVersion(cfg *config.Config) *cli.Command { Usage: "Print the versions of the running instances", Flags: flagset.ListStoreWithConfig(cfg), Action: func(c *cli.Context) error { - reg := *registry.GetRegistry() + reg := registry.GetRegistry() services, err := reg.GetService(cfg.Service.Namespace + "." + cfg.Service.Name) if err != nil { fmt.Println(fmt.Errorf("could not get store services from the registry: %v", err)) diff --git a/thumbnails/pkg/command/version.go b/thumbnails/pkg/command/version.go index 3a17e44b7f1..16a7bbf86f7 100644 --- a/thumbnails/pkg/command/version.go +++ b/thumbnails/pkg/command/version.go @@ -19,7 +19,7 @@ func PrintVersion(cfg *config.Config) *cli.Command { Usage: "Print the versions of the running instances", Flags: flagset.ListThumbnailsWithConfig(cfg), Action: func(c *cli.Context) error { - reg := *registry.GetRegistry() + reg := registry.GetRegistry() services, err := reg.GetService(cfg.Server.Namespace + "." + cfg.Server.Name) if err != nil { fmt.Println(fmt.Errorf("could not get thumbnails services from the registry: %v", err)) diff --git a/webdav/pkg/command/version.go b/webdav/pkg/command/version.go index a77dbe3fb5e..d60735d60e1 100644 --- a/webdav/pkg/command/version.go +++ b/webdav/pkg/command/version.go @@ -19,7 +19,7 @@ func PrintVersion(cfg *config.Config) *cli.Command { Usage: "Print the versions of the running instances", Flags: flagset.ListWebdavWithConfig(cfg), Action: func(c *cli.Context) error { - reg := *registry.GetRegistry() + reg := registry.GetRegistry() services, err := reg.GetService(cfg.Service.Namespace + "." + cfg.Service.Name) if err != nil { fmt.Println(fmt.Errorf("could not get webdav services from the registry: %v", err)) From fd703ec7402c013b914a2327fc349899cd1be5b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Mon, 22 Feb 2021 15:20:22 +0000 Subject: [PATCH 3/4] add initial nats and kubernetes registry support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- ocis-pkg/registry/registry.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ocis-pkg/registry/registry.go b/ocis-pkg/registry/registry.go index c88274f6294..ad8d8ec1898 100644 --- a/ocis-pkg/registry/registry.go +++ b/ocis-pkg/registry/registry.go @@ -5,7 +5,9 @@ import ( "strings" etcdr "github.com/asim/go-micro/plugins/registry/etcd/v3" + kubernetesr "github.com/asim/go-micro/plugins/registry/kubernetes/v3" mdnsr "github.com/asim/go-micro/plugins/registry/mdns/v3" + natsr "github.com/asim/go-micro/plugins/registry/nats/v3" "github.com/asim/go-micro/v3/registry" ) @@ -23,6 +25,14 @@ func GetRegistry() registry.Registry { var r registry.Registry switch os.Getenv(registryEnv) { + case "nats": + r = natsr.NewRegistry( + registry.Addrs(addresses...), + ) + case "kubernetes": + r = kubernetesr.NewRegistry( + registry.Addrs(addresses...), + ) case "etcd": r = etcdr.NewRegistry( registry.Addrs(addresses...), From deb20ffa900209f03d5f993d28f7197622f5b1a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Mon, 22 Feb 2021 15:26:36 +0000 Subject: [PATCH 4/4] add changelog MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- changelog/unreleased/use-registry-interface.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 changelog/unreleased/use-registry-interface.md diff --git a/changelog/unreleased/use-registry-interface.md b/changelog/unreleased/use-registry-interface.md new file mode 100644 index 00000000000..8e69dc1fc67 --- /dev/null +++ b/changelog/unreleased/use-registry-interface.md @@ -0,0 +1,6 @@ +Enhancement: Add initial nats and kubernetes registry support + +We added initial support to use nats and kubernetes as a service registry using `MICRO_REGISTRY=nats` and `MICRO_REGISTRY=kubernetes` respectively. +Multiple nodes can be given with `MICRO_REGISTRY_ADDRESS=1.2.3.4,5.6.7.8,9.10.11.12`. + +https://github.com/owncloud/ocis/pull/1697