Etcd3-based Discovery Provider
A new ECF discovery provider has been created, based upon the etcd3 server/service. Etcd3 is the most recent version of the etcd protocol, and is implemented by gRPC. See the etcd github project here for specifics about the etcd project. etcd is often used as part of Kubernetes.
Getting and Using Etcd3 Discovery Provider
A Etcd3 Discovery Provider is available at Maven Central here
Etcd3 Discovery Provider Configuration Properties
As with other discovery providers, the ECF Etcd3 Discovery Provider is configured via system properties so that it can be configured and run automatically at startup. Here is a table of the Etcd3 Discovery Provider configuration properties and their default values:
|Property Name||Description||Type||Default value|
|ecf.discovery.etcd3.protocol||Etcd Server URL protocol. Example: 'http' in constructed Etcd3 Server URL 'http://127.0.0.1:2379'||String||http|
|ecf.discovery.etcd3.hostname||Etcd3 Server URL hostname. Example: '127.0.0.1' in constructed Etcd Server URL 'http://127.0.0.1:2379'||String||127.0.0.1|
|ecf.discovery.etcd3.port||Etcd3 Server URL port. Example: '2379' in constructed Etcd Server URL 'http://127.0.0.1:2379'||String||2379|
|ecf.discovery.etcd3.keyPrefix||Etcd3 Server keyPrefix.||String||org.eclipse.ecf.provider.etcd3.EtcdDiscoveryContainer|
|ecf.discovery.etcd3.usePlaintext||Whether Etcd3 server is using/allowing plain text.||String||false|
|ecf.discovery.etcd3.ttl||Etcd3 time-to-live (in seconds). This is the time that the etcd3 key->value entries will live on the etcd3 server||String||30 seconds|
|ecf.discovery.etcd3.disabled||Whether the default discovery provider is disabled on startup. Note that if disabled discovery will not occur automatically upon framework startup, and will have to be started in some other way. See the start method in this class a code example of how to start the etcd3 discovery.||String||false|
|ecf.discovery.etcd3.retry||Whether the gRPC etcd client will retry failed calls.||String||false|
Note that these values and defaults are also defined in the source code in the org.eclipse.ecf.provider.etcd3.container.Etcd3DiscoveryContainerConfig class available at githhub here.