Présentation du runtime Azure IoT Edge et de son architecture
S’applique à : IoT Edge 1.5 IoT Edge 1.4
Important
IoT Edge 1.5 LTS et IoT Edge 1.4 LTS sont des versions prises en charge. IoT Edge 1.4 LTS sera en fin de vie le 12 novembre 2024. Si vous utilisez une version antérieure, consultez l’article Mettre à jour IoT Edge.
Le runtime IoT Edge est une collection de programmes qui transforme un appareil en appareil IoT Edge. Collectivement, les composants du runtime IoT Edge permettent aux appareils IoT Edge de recevoir du code à exécuter dans l’arête et de communiquer les résultats.
Le runtime IoT Edge est responsable des fonctions suivantes sur les appareils IoT Edge :
Installer et mettre à jour des charges de travail sur l’appareil.
Tenir à jour les normes de sécurité Azure IoT Edge sur l’appareil.
Garantir que les modules IoT Edge sont toujours en cours d’exécution.
Envoyer des rapports d’intégrité du module dans le cloud pour la supervision à distance.
Gérer la communication entre :
- Appareils en aval et appareils IoT Edge
- Modules sur un appareil IoT Edge
- Un appareil IoT Edge et le cloud
- Appareils IoT Edge
Les responsabilités du runtime IoT Edge se répartissent en deux catégories : communication et gestion des modules. Ces deux rôles sont remplis par deux composants qui font partie du runtime IoT Edge. L’agent IoT Edge déploie et surveille les modules, tandis que le hub IoT Edge est responsable de la communication.
L’agent IoT Edge et le hub IoT Edge sont tous deux des modules, comme n’importe quel autre module exécuté sur un appareil IoT Edge. Ils sont parfois appelés modules runtime.
Agent IoT Edge
L’agent IoT Edge est l’un des deux modules qui composent le runtime Azure IoT Edge. Il est responsable de l’instanciation des modules, vérifie qu’ils continuent à s’exécuter, et signale l’état des modules à IoT Hub. Ces données de configuration sont écrites en tant que propriété du jumeau de module de l’agent IoT Edge.
Le démon de sécurité IoT Edge démarre l’agent IoT Edge au démarrage de l’appareil. L’agent récupère son jumeau de module à partir d’IoT Hub et inspecte le manifeste de déploiement. Le manifeste de déploiement est un fichier JSON qui déclare les modules qui doivent être démarrés.
Chaque élément du manifeste de déploiement contient des informations sur un module, et est utilisé par l’agent IoT Edge pour contrôler le cycle de vie du module. Pour plus d’informations sur toutes les propriétés utilisées par l’agent IoT Edge pour contrôler les modules, consultez les propriétés des jumeaux de module de l’agent IoT Edge et du hub IoT Edge.
L’agent IoT Edge envoie la réponse d’exécution à IoT Hub. Voici une liste de réponses possibles :
- 200 - OK
- 400 - La configuration de déploiement a un format incorrect ou n’est pas valide.
- 417 - Aucune configuration de déploiement n’est définie pour l’appareil.
- 412 - La version de schéma dans la configuration de déploiement n’est pas valide.
- 406 - L’appareil IoT Edge est hors connexion ou n’envoie pas de rapports d’état.
- 500 - Une erreur s’est produite dans le runtime IoT Edge.
Pour plus d’informations sur la création de manifestes de déploiement, consultez Découvrir comment déployer des modules et établir des routes dans IoT Edge.
Sécurité
L’agent IoT Edge joue un rôle essentiel dans la sécurité d’un appareil IoT Edge. Par exemple, il effectue des actions telles que la vérification de l’image d’un module avant de le démarrer.
Pour plus d’informations sur le framework de sécurité Azure IoT Edge, consultez Gestionnaire de sécurité IoT Edge.
Hub IoT Edge
Le hub IoT Edge est l’autre module qui compose le runtime Azure IoT Edge. Il joue le rôle de proxy local pour IoT Hub en exposant les mêmes points de terminaison de protocole qu’IoT Hub. Cette cohérence signifie que les clients peuvent se connecter au runtime IoT Edge comme ils le feraient avec IoT Hub.
Le hub IoT Edge n’est pas une version complète d’IoT Hub s’exécutant localement. Le hub IoT Edge délègue silencieusement certaines tâches à l’IoT Hub. Par exemple, le hub IoT Edge télécharge automatiquement les informations d’autorisation à partir d’IoT Hub lors de sa première connexion pour permettre à un appareil de se connecter. Une fois la première connexion établie, les informations d’autorisation sont mises en cache localement par le hub IoT Edge. Les connexions ultérieures à partir de cet appareil sont autorisées sans avoir à télécharger à nouveau les informations d’autorisation à partir du cloud.
Communication cloud
Pour réduire la bande passante qu’utilise votre solution IoT Edge, le hub IoT Edge optimise le nombre de connexions au cloud. Le hub IoT Edge accepte des connexions logiques de modules ou d’appareils en aval, et les combine pour établir une connexion physique unique au cloud. Les détails de ce processus sont transparents pour le reste de la solution. Les clients pensent avoir leur propre connexion au cloud, alors qu’ils passent tous par la même connexion. Le hub IoT Edge peut utiliser le protocole AMQP ou MQTT pour communiquer en amont avec le cloud, indépendamment des protocoles utilisés par les appareils en aval. Toutefois, le hub IoT Edge ne permet actuellement que de combiner des connexions logiques en une seule connexion physique en utilisant AMQP comme protocole en amont et ses capacités de multiplexage. AMQP est le protocole en amont par défaut.
Le hub IoT Edge peut déterminer s’il est connecté à IoT Hub. Si la connexion est perdue, le hub IoT Edge enregistre localement les messages ou les mises à jour de jumeau. Une fois la connexion rétablie, il synchronise toutes les données. L’emplacement utilisé pour ce cache temporaire est déterminé par une propriété du jumeau de module du hub IoT Edge. La taille du cache n’est pas limitée et augmente tant que l’appareil a une capacité de stockage. Pour plus d’informations, voir Fonctionnalités hors connexion.
Communication locale
Le hub IoT Edge facilite la communication locale. Il permet la communication appareil-à-module et module-à-module en répartissant les messages pour que les appareils et les modules restent indépendants les uns des autres. Le hub IoT Edge prend en charge les fonctionnalités de routage des messages prises en charge par IoT Hub.
Utilisation du routage
Le mécanisme de répartition utilise les mêmes fonctionnalités de routage qu’IoT Hub pour spécifier la façon dont les messages sont transmis entre les appareils ou les modules. Les premiers appareils ou modules spécifient les entrées sur lesquelles ils acceptent des messages et les sorties vers lesquelles ils écrivent des messages. Un développeur de solutions peut ensuite acheminer des messages entre une source (par exemple, des sorties) et une destination (par exemple, des entrées) avec des filtres potentiels.
Le routage peut être utilisé par des appareils ou des modules créés avec les kits Azure IoT Device SDK à l’aide du protocole AMQP. Toutes les primitives IoT Hub de messagerie (par exemple : la télémétrie, les méthodes directes, C2D, les jumeaux) sont prises en charge, mais la communication sur les rubriques définies par l’utilisateur n’est pas prise en charge.
Pour plus d’informations sur les itinéraires, consultez Découvrir comment déployer des modules et établir des routes dans IoT Edge.
Fonctionnalités du mécanisme de répartiteur disponibles :
Fonctionnalités | Routage |
---|---|
Télémétrie D2C | ✔ |
Télémétrie locale | ✔ |
DirectMethods | ✔ |
Jumeau | ✔ |
C2D pour les appareils | ✔ |
Classement | ✔ |
Filtrage | ✔ |
Rubriques définies par l’utilisateur | |
Appareil-à-appareil | |
Diffusion locale |
Connexion au hub IoT Edge
Le hub IoT Edge accepte les connexions à partir de clients d’appareil ou de module, soit via le protocole MQTT, soit via le protocole AMQP.
Remarque
Le hub IoT Edge prend en charge les clients qui se connectent à l’aide de MQTT ou de AMQP. Il ne prend pas en charge les clients qui utilisent HTTP.
Lorsqu’un client se connecte au hub IoT Edge, voici ce qui se produit :
- Si le protocole TLS (Transport Layer Security) est utilisé (recommandé), un canal TLS est créé pour établir une communication chiffrée entre le client et le hub IoT Edge.
- Les informations d’authentification sont envoyées par le client au hub IoT Edge pour s’identifier.
- Le hub IoT Edge autorise ou rejette la connexion en fonction de sa stratégie d’autorisation.
Connexions sécurisées (TLS)
Par défaut, le hub IoT Edge n’accepte que les connexions sécurisées par le protocole TLS (Transport Layer Security), par exemple, les connexions chiffrées qu’un tiers ne peut pas déchiffrer.
Si un client se connecte sur le port 8883 (MQTTS) ou 5671 (AMQPS) au hub IoT Edge, un canal TLS doit être généré. Pendant l’établissement d’une liaison TLS, le hub IoT Edge envoie sa chaîne de certificats que le client doit valider. Pour valider la chaîne de certificats, le certificat racine du hub IoT Edge doit être installé en tant que certificat approuvé sur le client. Si le certificat racine n’est pas approuvé, la bibliothèque de client est rejetée par le hub IoT Edge avec une erreur de vérification du certificat.
Les étapes à suivre pour installer ce certificat racine du répartiteur sur les clients d’appareil sont décrites dans la documentation relative à la passerelle transparente et à la préparation d’un appareil en aval. Les modules peuvent utiliser le même certificat racine que le hub IoT Edge en utilisant l’API de démon IoT Edge.
Authentification
Le hub IoT Edge Hub accepte uniquement les connexions à partir d’appareils ou de modules qui ont une identité IoT Hub. Par exemple, ceux inscrits dans IoT Hub et qui ont l’une des trois méthodes d’authentification client prises en charge par IoT Hub pour prouver leur identité : authentification par clé symétrique, authentification auto-signée X.509 et authentification signée par une autorité de certification X.509. Ces identités IoT Hub peuvent être vérifiées localement par le hub IoT Edge afin que les connexions puissent toujours être effectuées en mode hors connexion.
Les modules IoT Edge prennent uniquement en charge l’authentification par clé symétrique pour le moment.
Autorisation
En vérifiant qu’un client appartient à son ensemble de clients approuvés définis dans IoT Hub. L’ensemble des clients approuvés est spécifié en configurant des relations parent/enfant ou appareil/module dans IoT Hub. Lorsqu’un module est créé dans IoT Edge, une relation de confiance est établie automatiquement entre ce module et son appareil IoT Edge. Il s’agit du seul modèle d’autorisation pris en charge par le mécanisme de répartition du routage.
Configuration distante
Le hub IoT Edge est entièrement contrôlé par le cloud. Il obtient sa configuration à partir d’IoT Hub par le biais de son jumeau de module. Le jumeau contient une propriété souhaitée appelée « routes » qui déclare la façon dont les messages sont passés au sein d’un déploiement. Pour plus d’informations sur les itinéraires, consultez Déclarer des itinéraires.
En outre, plusieurs configurations peuvent être définies en configurant des variables d’environnement sur le hub IoT Edge.
Télémétrie de qualité du runtime
IoT Edge collecte des données de télémétrie anonymes à partir du runtime hôte et des modules système pour améliorer la qualité du produit. Ces informations sont appelées « télémétrie de qualité du runtime ». Les données de télémétrie collectées sont régulièrement envoyées sous forme de messages appareil-à-cloud à IoT Hub à partir de l’agent IoT Edge. Ces messages n’apparaissent pas dans la télémétrie régulière du client et ne consomment aucun quota de messages.
L’agent IoT Edge et le hub génèrent des métriques que vous pouvez collecter pour comprendre les performances de l’appareil. Un sous-ensemble de ces métriques est collecté par l’agent IoT Edge dans le cadre de la télémétrie de qualité du runtime. Les métriques collectées pour la télémétrie de qualité du runtime sont marquées de la balise ms_telemetry
. Pour plus d’informations sur toutes les métriques disponibles, consultez Accéder aux métriques intégrées.
Les informations permettant d’identifier une personne ou une organisation, telles que les noms d’appareils et de modules, sont supprimées avant le chargement pour garantir la nature anonyme de la télémétrie de qualité du runtime.
L’agent IoT Edge collecte les données de télémétrie toutes les heures et envoie un message à IoT Hub toutes les 24 heures.
Si vous souhaitez refuser l’envoi de données de télémétrie du runtime à partir de vos appareils, deux méthodes sont possibles :
- Définissez la variable d’environnement
SendRuntimeQualityTelemetry
surfalse
pour edgeAgent - Décochez l’option dans le portail Azure pendant le déploiement.