Subscribe Find out first about new and important news
  • Share via email
  • Subscribe to blog alert

Release of new MongoDB based device registry in Eclipse Hono

Eclipse Hono as described in its official site, is an IoT connectivity platform that provides a unified API for connecting large number of IoT devices to a backend irrespective of the various communication protocols used by the devices. Hono offers out of the box support for devices communicating via protocols such as AMQP, COAP, HTTP and MQTT. Eclipse Hono comprises of several microservices, which are packaged as Docker containers and deployed in a container-orchestration system like Kubernetes.

The device registry is one among those components, where Hono keeps track of all its tenants, devices and device credentials. It is crucial to Hono as the protocol adapters uses the device registry to verify if a tenant and device are registered and enabled. In addition to that, the protocol adapters use the device registry to authenticate devices before accepting any telemetry, event or command response messages. The device registry also implements HTTP based device management APIs to manage the storage of tenants, devices and credentials information.

Until version 1.3.0, Hono offered only one device registry implementation, which used the underlying local file system to persist the data. This file based device registry served well its purpose as a demo device registry. However, it is not intended to use in production environments, as the components cannot easily be scaled out horizontally. Hence, the users had to implement their own device registry to use Hono in production setups. With the release of Hono 1.3.0, this has been take care of and you do not need to implement your own device registry to use Hono in production environments.

New MongoDB based device registry

Now Hono offers one more device registry implementation, which uses a MongoDB database to persist the data. Unlike the file based counterpart, this MongoDB based device registry is intended to be used in production and as well as in demo setups. It stores tenants, devices and credentials information in separate collections in the underlying MongoDB database. MongoDB supports scaling out horizontally using techniques such as sharding and data distribution. There by this registry can leverage the MongoDB’s scalability to scale out itself without any difficulties.

In addition, you can easily secure the HTTP endpoints in the MongoDB device registry using basic authentication mechanism. It means that the clients need to authenticate with the MongoDB based device registry by supplying a user name and password in order to manage tenants, devices and credentials. You can turn on or off the authentication mechanism by setting the configuration property hono.registry.http.authenticationRequired to true or false. For more information on how to configure the MongoDB based device registry, please take a look at MongoDB based Device Registry configuration.

Install Eclipse Hono with MongoDB device registry using helm chart

The Eclipse IoT packages repository hosts helm charts, which you can use to install Hono in a Kubernetes cluster. By default, Hono’s helm chart deploys the file based device registry. I will show you how to install Hono with the MongoDB based device registry using Hono’s helm chart. I assume that you already have a running Kubernetes cluster.

The first step is to add the eclipse IoT packages chart repository using the below command. This command adds the repository using the name eclipse-iot.

$ helm repo add eclipse-iot https://eclipse.org/packages/charts

Now use the below command to deploy Hono with the MongoDB based device registry to the namespace hono.

$ helm install --set deviceRegistryExample.type=mongodb,mongodb.createInstance=true --dependency-update -n hono eclipse-hono eclipse-iot/hono

As you can see above, I have set the value for the property deviceRegistryExample.type to mongodb. This configures the chart to deploy the MongoDB based registry instead of the default file based registry.

In the above command, I have set the property mongodb.createInstance to true. The default value is false and if it is set to true, then the chart deploys a new MongoDB database instance as a separate micro service and uses that database instance to store the device registry data. If you prefer to use an already existing MongoDB database instance and not to create a new instance, then set mongodb.createInstance to false. In that case, make use of the below MongoDB connection configuration properties to point to the already existing MongoDB database.

mongodb: host: # The host name or IP address of the MongoDB instance. port: # The port that the MongoDB instance is listening on. dbName: # The name of the MongoDB database to be used by the device registry application. username: # The user name to use for authenticating to the MongoDB instance. password: # The password to use for authenticating to the MongoDB instance.

With the above steps, by now you should have already installed Hono with the MongoDB based device registry in the given Kubernetes cluster. You can also verify the installation. For more information on how to verify the installation, please refer to the README page of Hono’s helm chart.

More on Eclipse

Visit the official website of Eclipse Hono.

Check out Eclipse IoT on GitHub.

Take a look at this introduction, to learn what Eclipse Hono is all about.