ZYLK optimise ses services IoT grâce à APISIX

May 26, 2023

Case Study

Aperçu

Alfonso González est un développeur en IA et IoT chez ZYLK, un leader dans l'optimisation des solutions open source et la transformation numérique en Espagne. Alfonso a partagé son expérience sur la manière dont ZYLK a utilisé APISIX pour les communications MQTT et a mis en œuvre la cybersécurité dans cette implémentation. Il a déclaré : "Sécurisé, fiable et performant, APISIX est probablement la meilleure passerelle pour les API."

Défis

  • Problèmes liés au routage MQTT, au réseau K8S et à la communication HTTP.
  • La gestion et la maintenance de chaque point d'accès et routage étaient complexes, entraînant des coûts importants en temps et en efforts.
  • L'intégration de nouveaux utilisateurs sur le réseau était difficile, car ils devaient se familiariser avec l'architecture complète avant d'accéder à un service ou à un point d'accès.

Résultats

  • ZYLK a résolu ses problèmes de communication HTTP et MQTT en implémentant APISIX.
  • ZYLK a utilisé APISIX comme proxy TCP pour créer une route de flux sécurisée entre un Raspberry Pi et le système de file d'attente RabbitMQ dans le cloud, garantissant la confidentialité et l'intégrité de la transmission des données.
  • ZYLK a constaté des améliorations significatives de son infrastructure, plus conviviale, entraînant des économies substantielles en temps et en efforts, et finalement une productivité accrue.

Informations contextuelles

ZYLK est un cabinet de conseil en informatique expérimenté, spécialisé dans le Big Data, les sites et portails Liferay, et l'intelligence artificielle depuis plus de 15 ans. L'entreprise est un pionnier dans l'optimisation des solutions open source et la transformation numérique pour divers clients, y compris des entreprises privées, des administrations publiques et des organismes gouvernementaux en Espagne et en Europe depuis 2004.

ZYLK s'appuie exclusivement sur des logiciels open source pour fournir des solutions, car ils estiment que les logiciels open source offrent de nombreux avantages par rapport aux alternatives propriétaires, tels que le rapport coût-efficacité, la flexibilité, la transparence et le soutien communautaire. Avant d'implémenter APISIX, l'équipe devait gérer leurs points de communication un par un et référencer directement chaque point d'accès depuis le client. Cela entraînait des coûts importants en temps et en efforts pour gérer et maintenir chaque point d'accès et routage.

Les principaux points douloureux du processus précédent incluaient l'intégration de nouveaux utilisateurs sur le réseau, qui devaient se familiariser avec l'architecture complète avant d'accéder à un service ou à un point d'accès. De plus, l'équipe a rencontré des problèmes de routage MQTT, des problèmes liés au réseau K8S et des problèmes de communication HTTP.

Sélection technique

ZYLK travaille exclusivement avec des logiciels open source, y compris de nombreux projets Apache. Par conséquent, une solution Apache semblait intéressante à essayer lors de la recherche d'une passerelle API. Après avoir cherché une solution à leurs problèmes pendant environ six mois et l'avoir comparée à Kong Gateway et HAProxy, ZYLK a finalement choisi d'implémenter APISIX. Les raisons sont les suivantes :

1. APISIX est plus simple et dispose de plugins de sécurité plus complets avec un tableau de bord convivial.

APISIX fournit une interface simple et facile à utiliser avec un ensemble complet de plugins de sécurité, ce qui facilite la gestion et la sécurisation de la passerelle API. Le tableau de bord convivial permet également une configuration et une gestion plus faciles de la passerelle API.

2. APISIX prend en charge plusieurs protocoles, pas seulement HTTP.

APISIX prend en charge un large éventail de protocoles, ce qui en fait un outil polyvalent pour gérer différents types de trafic API. Cette flexibilité permet aux utilisateurs de gérer tout leur trafic API en un seul endroit, simplifiant ainsi leur infrastructure et réduisant la complexité.

3. APISIX a la capacité de rediriger les messages MQTT entrants avec mTLS entre le client et le serveur.

Le support de la messagerie MQTT et du chiffrement mTLS par APISIX offre une couche de sécurité supplémentaire pour la communication entre les clients et les serveurs. Avec cette fonctionnalité, les messages MQTT entrants peuvent être redirigés de manière sécurisée via APISIX, garantissant qu'ils sont chiffrés et authentifiés avant d'atteindre leur destination. Cela améliore la sécurité globale du système et protège les informations sensibles contre tout accès ou altération non autorisé.

APISIX s'est avéré être un ajout précieux aux solutions de ZYLK, offrant une manière plus simple et plus sécurisée de gérer leurs besoins en matière de passerelle API.

Introduction à l'architecture

1. Dispositifs industriels : Les automates programmables (PLC) enregistrent les données des machines de contrôle climatique (dans des bâtiments distants)

Tout d'abord, l'accent est mis sur les dispositifs industriels tels que les automates programmables (PLC), qui sont utilisés pour enregistrer les données générées par les machines de contrôle climatique. Le système de contrôle climatique est situé dans un bâtiment distant, considéré comme l'infrastructure de calcul en périphérie. Les données générées par ces dispositifs doivent être stockées dans les serveurs cloud. Le cloud est divisé en deux parties qui partagent des données entre elles, et les données sont connectées par des protocoles industriels.

2. Protocoles industriels : Modbus et BACnet sont utilisés pour lire les données des automates programmables (PLC)

Pour lire directement les données des automates programmables (PLC), des modules sur BACnet sont utilisés. ZYLK prévoit de traduire ces modules et les informations BACnet en TCP pour faciliter la gestion. Une fois les données dans un format approprié, elles sont envoyées aux serveurs cloud via MQTT. Bien que MQTT soit simple à utiliser pour les dispositifs IoT, son utilisation dans le cloud a posé certains défis à ZYLK, notamment en ce qui concerne la mise en œuvre de mesures de cybersécurité.

3. Communication MQTT : La conversion TCP est effectuée et les données sont envoyées à un serveur cloud via MQTT

ZYLK utilise APISIX comme solution pour les communications MQTT sécurisées dans leur cas d'utilisation. Les données générées par les machines de climatisation industrielle sont collectées par les automates programmables (PLC) et traduites en langage TCP par une passerelle TCP pour Modbus, puis envoyées à un Raspberry Pi. Les données doivent être envoyées via le protocole MQTT pour atteindre un système de file d'attente, qui pourrait être Mosquitto ou RabbitMQ, et ZYLK utilise APISIX pour y parvenir.

edge-infrastructure

L'objectif de stocker ces données est d'avoir des enregistrements historiques du fonctionnement des machines, qui sont utilisés pour construire des modèles d'apprentissage automatique dans le cloud. ZYLK utilise des modèles NTL pour entraîner et alimenter ces données. L'infrastructure en périphérie est construite à l'aide d'un diagramme simple, avec les machines de climatisation industrielle générant des données à gauche et collectées par les automates programmables (PLC).

Le Raspberry Pi envoyait des messages MQTT de manière non sécurisée, ce qui posait un problème pour ZYLK, car ils avaient besoin que les messages soient sécurisés, au moins d'APISIX vers l'extérieur, car le Raspberry Pi est situé dans un bâtiment distant. ZYLK ne se souciait pas autant de la sécurité une fois que les messages atteignaient APISIX, car le système de file d'attente, RabbitMQ, était situé sur leur propre serveur. Cependant, sécuriser la première partie de la communication était crucial pour garantir la cybersécurité et les messages chiffrés.

4. Modèles ML : Une fois dans le cloud, les données sont stockées et utilisées pour entraîner et alimenter des modèles LSTM

cloud-edge-infrastructure

Enfin, dans le cloud, il y a un cluster Kubernetes avec la base de données NIFI. Les données générées par les dispositifs industriels sont stockées dans le cloud et utilisées pour entraîner et alimenter des modèles LSTM.

Processus d'implémentation

Étape 1 : Activer le plugin

ZYLK décrit les étapes qu'ils ont suivies pour activer APISIX en tant que proxy TCP et créer une route de flux d'APISIX vers le système de file d'attente RabbitMQ. Tout d'abord, ils ont activé le plugin de proxy MQTT en décommentant quelques lignes dans le fichier de configuration et en permettant au port spécifié de fonctionner comme un processus de flux pour les messages TCP. Il est important de noter qu'en configurant cela, ils pouvaient toujours utiliser toutes les autres fonctionnalités d'APISIX et travailler avec les API REST et le protocole HTTP sans aucun problème.

enable-the-plugin

Étape 2 : Créer la route de flux

Ensuite, ZYLK a créé la route de flux en utilisant un objet spécial dans APISIX qui est similaire aux routes mais n'apparaît pas sur le tableau de bord. Ils ont utilisé une commande simple pour spécifier le plugin qu'ils utilisaient, le nom et la version du protocole MQTT, et le SNI (server name indication) pour correspondre à leur certificat pour une communication sécurisée. Ils ont spécifié le nœud en amont hébergeant le service RabbitMQ ou tout autre système de file d'attente qu'ils préféraient utiliser. Activer APISIX en tant que proxy TCP et configurer les routes en amont a permis à ZYLK d'envoyer de manière sécurisée des messages MQTT du Raspberry Pi au système de file d'attente RabbitMQ dans le cloud. Cela a assuré la cybersécurité et les messages chiffrés nécessaires pour leur cas d'utilisation. La possibilité d'utiliser d'autres fonctionnalités d'APISIX et de travailler avec les API REST et le protocole HTTP a rendu la solution flexible et adaptable à leurs besoins. ZYLK a testé avec succès leur solution avec le broker Mosquitto et a constaté qu'elle fonctionnait parfaitement.

create-the-stream-route

Étape 3 : Signer et charger les certificats

Après avoir créé la route de flux, l'étape suivante consistait à créer et signer des certificats et à les charger dans l'instance APISIX. Ils ont utilisé un script Python pour créer des objets SSL avec le certificat, la clé et le SNI, en veillant à ce que le SNI corresponde à celui spécifié dans la route de flux.

sign-and-load-certificates

ZYLK souligne l'importance de s'assurer que le SNI est correct. Une fois les certificats chargés, le TLS mutuel a été établi entre le client et le serveur, les deux montrant leurs certificats. Avec cette configuration, ZYLK avait une communication sécurisée d'APISIX vers l'extérieur. Ils pouvaient également chiffrer la communication entre APISIX et leur nœud en amont si nécessaire, mais ont choisi de la laisser non chiffrée. ZYLK a utilisé APISIX pour d'autres utilisations et a constaté que le plugin leur offrait des fonctionnalités supplémentaires. Ils ont redirigé le trafic entrant vers les brokers MQTT, en utilisant un ID client pour diviser les messages en différents sujets si nécessaire. Et l'authentification MQTT était également possible.

L'utilisation d'APISIX et de MQTT a permis à ZYLK de résoudre des problèmes uniques et d'étendre leurs capacités au-delà des problèmes typiques liés à HTTP. En créant un canal de communication sécurisé, ils ont pu stocker et analyser les données générées par les équipements industriels et les utiliser pour entraîner des modèles d'apprentissage automatique pour la maintenance prédictive.

Réalisations après l'utilisation d'APISIX

ZYLK recommande vivement APISIX et est très disposé à le recommander à ses partenaires commerciaux. En décrivant APISIX à un ami, Alfonso González dirait : "APISIX est un service de passerelle API Apache qui fournit de nombreuses fonctionnalités pour le routage, y compris l'authentification, la limitation de débit et la traçabilité." Alfonso estime qu'APISIX est la meilleure passerelle pour les API.

Le cas d'utilisation de ZYLK impliquait des dispositifs industriels, des protocoles industriels, la communication MQTT et des modèles ML. Les avantages que ZYLK a tirés de l'utilisation d'APISIX incluent :

1. Envoi sécurisé de messages MQTT avec APISIX dans des environnements industriels

Les dispositifs industriels tels que les automates programmables (PLC) enregistrent les données des machines de contrôle climatique, qui sont traduites en TCP et envoyées aux serveurs cloud via MQTT. APISIX a été utilisé pour envoyer de manière sécurisée des messages MQTT du Raspberry Pi au système de file d'attente RabbitMQ dans le cloud, garantissant la cybersécurité et les messages chiffrés nécessaires pour leur cas d'utilisation.

2. Activation de la communication sécurisée avec le plugin de proxy MQTT et le TLS mutuel

ZYLK a activé le plugin de proxy MQTT et créé une route de flux en utilisant un objet spécial dans APISIX. Ils ont également signé et chargé des certificats avec un script Python, en veillant à ce que le SNI corresponde à celui spécifié dans la route de flux. En établissant un TLS mutuel entre le client et le serveur, ZYLK a pu avoir une communication sécurisée d'APISIX vers l'extérieur.

3. Expansion des capacités avec APISIX

L'implémentation réussie d'APISIX et de MQTT par ZYLK leur a permis de résoudre des problèmes uniques et d'étendre leurs capacités au-delà des problèmes typiques liés à HTTP. Ils ont pu stocker et analyser les données générées par les équipements industriels et les utiliser pour entraîner des modèles d'apprentissage automatique pour la maintenance prédictive.

ZYLK s'engage à rester à la pointe de son industrie et à fournir à ses clients les meilleures solutions possibles. Alors qu'ils continuent à relever les défis de l'avenir, ils trouveront sans aucun doute de nouvelles manières innovantes d'exploiter des technologies comme APISIX pour atteindre leurs objectifs.

Résumé

Avant d'implémenter APISIX, ZYLK devait gérer ses communications point par point, ce qui était chronophage et inefficace. Ils ont rencontré plusieurs problèmes liés au routage MQTT, au réseau K8S et à la communication HTTP.

Après avoir recherché diverses solutions de passerelle API, ZYLK a finalement choisi d'implémenter APISIX en raison de ses fonctionnalités de sécurité complètes, de son tableau de bord convivial et de sa simplicité. Avec APISIX, ZYLK a pu exposer de manière sécurisée un port du routeur pour les communications de messagerie MQTT et le routage interne des API. Ils ont également pu rediriger les messages MQTT entrants avec mTLS entre le client et le serveur. ZYLK a également constaté des améliorations significatives de son infrastructure, entraînant des économies de temps et d'efforts.

En termes d'objectifs futurs, ZYLK considère la cybersécurité, la convergence IT et OT, et l'apprentissage profond explicable comme les plus grands défis à venir pour leur industrie. Au cours des six prochains mois, l'équipe prévoit de continuer à travailler sur des projets de R&D et à développer son propre service IoT.

Tags: