Carte PINE A64, Node.js, Balena, PM2 et ResinOS (Partie 1) …

L’équipe de Resin.io a mis à disposition son système ResinOS pour favoriser la gestion de flottes de périphériques IoT et la mise en oeuvre du CI/CD vers ces dernières.


Je pars d’une carte PINE A64 avec 2 Go de RAM :



Et au préalable, je vais charger la dernière version Ubuntu 18.04 en ARM 64 Bits spécifiquement pour cette carte :

et avec une carte SD, j’utilise Etcher pour charger cette image Ubuntu 18.04 :


Si on ne dispose du connecteur wifi, il faut utiliser une passerelle vers son réseau wifi (ou sa connection 4G dans mon cas) via le connecteur Ethernet de la carte :


Je me connecte en SSH vers cette carte :

J’y installe le moteur Docker CE :


Le moteur Docker est fonctionnel et je me rends alors vers la plateforme Resin.io pour charger ResinOS (mais comme la carte n’est pas officiellement prise en charge, ce sera sous la forme d’une image Docker) :


Le principe de fonctionnement pour le chargement d’une application (en outre ici le démonstrateur FranceConnect Agent codé avec Node.js) suit ce principe (même si Docker est remplacé par Balena) :

Je charge donc l’image de ResinOS sur la carte et via le fichier de configuration fourni par la plateforme, je lance cette image via le moteur Docker local :


qui est active :

La carte apparait alors active sur la tableau de bord de Resin.io :



Comme pour toute flotte de périphériques IoT, on peut la géolocaliser via le tableau de bord :

On voit alors que c’est le moteur Balena et non Docker qui est embarqué au sein de ResinOS (qui tourne sous la forme d’une image Docker dans le cas de cette carte) :

Pour rappel, Balena est issu du projet Moby de Docker et spécifiquement dédié au contexte IoT :


Je peux donc lancer via Balena une image que j’avais chargée sur le Docker Hub du démonstrateur FranceConnect Agent mais pour les machines ARM 64 Bits :


et selon ce Dockerfile :

Je fais donc tourner cette application sur le port HTTP 80 et j’utilise l’endpoint public fourni par Resin.io pour m’y connecter :


Test habituel qui fonctionne (comme d’habitude) 😉 …




A noter que le moteur Balena peut être aussi installé directement sur la carte PINE A64 :

Sans ResinOS, je pouvais également lancer cette image du démonstrateur FranceConnect Agent également localement sur la carte :



et via le service serveo.net, je pouvais rendre public l’URL du démonstrateur :


et l’endpoint public fourni par ce service en ligne :

Autrement de manière plus classique, il est possible d’utiliser le célèbre NGROK pour le rendre public :



via des paquets multi-plateformes :

Enfin, si je n’ai pas envie d’utiliser des containers mais plutôt nativement vpar exemple un moteur Node.js et PM2 de Keymetrics, on obtient le même résultat. Je clone le dépôt du démonstrateur sur github :


J’installe PM2 de Keymetrics et son module de monitoring :



et je teste alors son mode cluster pour lancer plusieurs processus en parallèle (en lieu et place ici de containers) …


et plusieurs processus sont mis en load-balancing avec un seul port en sortie :

Localement via la carte, j’ai accès encore une fois au démonstrateur :

et je réutilise NGROK pour rendre ce démonstrateur accessible sur Internet via l’endpoint public fourni en sortie :


et via PM2 j’ai différentes métriques de monitoring accessible sur un tableau de bord de Keymetrics :


ou localement sur la carte :



et je peux basculer dans des métriques plus avancées dans une logique d’APM via PM2 Plus :


Pour finir, la communauté Raspberry Pi a fourni le module Raspberry Pi 3 Compute pour un usage industriel :

avec un support physique officiel :

Mais dans l’optique du moteur Balena, un nouveau support est né pour ce module et disponible au nom de Balena Fin :


Et l’équipe de Resin.io fournit déjà une image officielle de ResinOS qui lui est dédiée …

L’équipe de Resin.io propose de nouvelles fonctionnalités autour de son système de gestion de flotte d’objets connectés comme la possibilité de gérer plusieurs périphériques différents en une seule application :

d’intégrer des microservices notamment au travers du projet open source Flogo :

ou de générer des tableaux de bord très personnalisés via des partenaires comme Losant :

Des évolutions à suivre dans le contexte du développement de l’Edge Computing (amené à dépasser en chiffre d’affaires celui du Cloud cette année et qui amènerait au retour de DC de proximité selon certaines analyses) et de l’explosion des objets connectés !

Liens :
