Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
S’applique à :
IoT Edge 1.5
Important
IoT Edge 1.5 LTS est la version prise en charge. IoT Edge 1.4 LTS est en fin de vie depuis le 12 novembre 2024. Si vous utilisez une version antérieure, consultez l’article Mettre à jour IoT Edge.
Déployez des nœuds Azure IoT Edge sur des réseaux organisés en couches hiérarchiques. Chaque couche d’une hiérarchie est un appareil de passerelle qui gère les messages et les requêtes des appareils situés dans la couche du dessous. Cette configuration est également appelée périphérie imbriquée.
Structurez une hiérarchie d’appareils afin que seule la couche supérieure dispose d’une connectivité au cloud et que les couches inférieures puissent communiquer uniquement avec les couches nord et sud adjacentes. Cette structure en couches réseau est la base de la plupart des réseaux industriels, qui respectent la norme ISA-95.
Ce tutoriel vous montre comment créer une hiérarchie d’appareils IoT Edge à l’aide d’IoT Edge pour Linux sur Windows, déployer des conteneurs d’exécution IoT Edge sur vos appareils et configurer vos appareils localement. Dans ce tutoriel, vous effectuez les tâches suivantes :
- Créer et définir les relations dans une hiérarchie d’appareils IoT Edge.
- Configurer le runtime IoT Edge sur les appareils de votre hiérarchie.
- Installer des certificats cohérents dans votre hiérarchie d’appareils.
- Ajouter des charges de travail aux appareils de votre hiérarchie.
- Utiliser le module Proxy d’API IoT Edge pour router en toute sécurité le trafic HTTP sur un port unique à partir de vos appareils de couche inférieure.
Conseil
Ce tutoriel comprend un mélange d’étapes manuelles et automatisées pour fournir une présentation des fonctionnalités IoT Edge imbriquées.
Si vous souhaitez une présentation entièrement automatisée de la configuration d’une hiérarchie d’appareils IoT Edge, vous pouvez créer votre propre script basé sur le l’exemple Azure IoT Edge pour IoT industriel scripté. Ce scénario scripté déploie des machines virtuelles Azure en tant qu’appareils préconfigurés pour simuler un environnement de fabrique.
Si vous souhaitez examiner en détail les étapes manuelles de création et de gestion d’une hiérarchie d’appareils IoT Edge, consultez le guide pratique sur les hiérarchies d’appareils de passerelle IoT Edge.
Dans ce tutoriel, les couches réseau suivantes sont définies :
Couche supérieure : les appareils IoT Edge de cette couche peuvent se connecter directement au cloud.
Couches inférieures : les appareils IOT Edge se trouvant dans des couches en dessous de la couche supérieure ne peuvent pas se connecter directement au cloud. Ils doivent passer par un ou plusieurs appareils IoT Edge intermédiaires pour envoyer et recevoir des données.
Ce tutoriel utilise une hiérarchie à deux appareils pour plus de simplicité. L’appareil de couche supérieure représente un appareil dans la couche supérieure de la hiérarchie qui peut se connecter directement au cloud. Cet appareil est appelé appareil parent. L’appareil de couche inférieure représente un appareil dans la couche inférieure de la hiérarchie qui ne peut pas se connecter directement au cloud. Ajoutez d’autres appareils pour représenter votre environnement de production en fonction des besoins. Les appareils aux couches inférieures sont appelés appareils enfants.
Remarque
Un appareil enfant peut être un appareil en aval ou un appareil de passerelle dans une topologie imbriquée.
Prérequis
Pour créer une hiérarchie d’appareils IoT Edge, vous devez disposer de ce qui suit :
- Interpréteur de commandes Bash dans Azure Cloud Shell utilisant Azure CLI v2.3.1 avec l’extension Azure IoT v0.10.6 ou supérieure installée. Ce tutoriel utilise Azure Cloud Shell. Pour vérifier vos versions actuelles des modules et extensions Azure CLI, exécutez az version.
- Deux appareils Windows exécutant Azure IoT Edge pour Linux sur Windows. Déployez les deux appareils à l’aide d’un commutateur virtuel externe.
Conseil
Vous pouvez utiliser un commutateur virtuel interne ou par défaut si le transfert de port est configuré sur le système d’exploitation hôte Windows. Toutefois, pour simplifier ce tutoriel, utilisez un commutateur virtuel externe pour les deux appareils et connectez-les au même réseau externe.
Pour plus d’informations sur la mise en réseau, consultez Mise en réseau d’Azure IoT Edge pour Linux sur Windows et Configuration de mise en réseau pour Azure IoT Edge pour Linux sur Windows.
Si vous devez configurer les appareils EFLOW sur une zone DMZ, consultez Comment configurer Azure IoT Edge pour Linux sur Windows et la configuration DMZ.
- Un compte Azure avec un abonnement valide. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
- Un hub IoT de niveau gratuit ou standard dans Azure
- Vérifiez que les ports suivants sont ouverts entrants pour tous les appareils, à l’exception de l’appareil de couche la plus basse : 443, 5671 et 8883 :
- 443 : Utilisé entre les hubs de périphérie parent et enfant pour les appels d’API REST et pour extraire des images conteneur Docker.
- 5671, 8883 : Utilisé pour AMQP et MQTT.
Conseil
Pour plus d’informations sur le pare-feu de machine virtuelle EFLOW, consultez Sécurité d’Azure IoT Edge pour Linux sur Windows.
Créer votre hiérarchie d’appareils IoT Edge
Les appareils IoT Edge composent les couches de votre hiérarchie. Ce tutoriel crée une hiérarchie de deux appareils IoT Edge : l’appareil de couche supérieure, et l’appareil de couche inférieure. Vous pouvez créer d’autres appareils en aval selon les besoins.
Pour créer et configurer votre hiérarchie des appareils IoT Edge, vous utilisez la commande az iot edge devices create Azure CLI. Cet outil simplifie la configuration de la hiérarchie en automatisant et en condensant plusieurs étapes :
- Crée des appareils dans votre IoT Hub
- Définit des relations parent-enfant pour autoriser la communication entre les appareils
- Applique le manifeste de déploiement à chaque appareil
- Génère une chaîne de certificats pour chaque appareil afin d’établir une communication sécurisée entre eux
- Génère des fichiers config pour chaque appareil
Créer une configuration d’appareil
Vous créez un groupe d’appareils de périphérie imbriquée contenant un appareil parent avec un appareil enfant. Dans ce tutoriel, nous utilisons des exemples de manifestes de déploiement de base. Pour obtenir d’autres exemples de scénarios, passez en revue les exemples de modèles de configuration.
Avant d’utiliser la commande az iot edge devices create, vous devez définir le manifeste de déploiement pour des appareils de couche supérieure et inférieure. Téléchargez l’exemple de fichier deploymentTopLayer.json sur votre ordinateur local.
Le manifeste de déploiement d’appareil de couche supérieure définit le module proxy d’API IoT Edge et déclare l’itinéraire de l’appareil de couche inférieure vers IoT Hub.
Téléchargez l’exemple de fichier deploymentLowerLayer.json sur votre ordinateur local.
Le manifeste de déploiement d’appareil de couche inférieure inclut le module du capteur de température simulé et déclare l’itinéraire vers l’appareil de couche supérieure. Vous pouvez voir dans la section systemModules que les modules de runtime sont définis pour extraire à partir de $amont:443 au lieu de mcr.microsoft.com. L’appareil de couche inférieure envoie des demandes d’image Docker au module Proxy d’API IoT Edge sur le port 443, car il ne peut pas tirer directement les images du cloud. L’autre module déployé sur l’appareil de couche inférieure, le module Simulated Temperature Sensor, effectue également sa demande d’image auprès de
$upstream:443.Pour obtenir plus d’informations sur la création d’un manifeste de déploiement de couche inférieure, consultez Connecter des appareils Azure IoT Edge pour créer une hiérarchie.
Dans Azure Cloud Shell, utilisez la commande az iot edge devices create Azure CLI pour créer des appareils dans IoT Hub et des bundles de configuration pour chaque appareil de votre hiérarchie. Remplacez les espaces réservés suivant par les valeurs appropriées :
Espace réservé Description <hub-name> Nom de votre IoT Hub <config-bundle-output-path> Le chemin d’accès au dossier dans lequel vous souhaitez enregistrer les bundles de configuration. <nom-de-l'appareil-parent> Nom de l’ID d’appareil parent de couche supérieure. <parent-deployment-manifest> Fichier manifeste de déploiement de l’appareil parent. <parent-fqdn-or-ip> Nom de domaine complet ou adresse IP de l’appareil parent. <nom-de-l'appareil-enfant> Nom d’ID d’appareil enfant de couche inférieure. <child-deployment-manifest> Fichier manifeste de déploiement de l’appareil enfant. <child-fqdn-or-ip> Nom de domaine complet ou adresse IP de l’appareil enfant. az iot edge devices create \ --hub-name <hub-name> \ --output-path <config-bundle-output-path> \ --default-edge-agent "mcr.microsoft.com/azureiotedge-agent:1.5" \ --device id=<parent-device-name> \ deployment=<parent-deployment-manifest> \ hostname=<parent-fqdn-or-ip> \ --device id=child-1 \ parent=parent-1 \ deployment=<child-deployment-manifest> \ hostname=<child-fqdn-or-ip>Par exemple, la commande suivante crée une hiérarchie de deux appareils IoT Edge dans IoT Hub. Un appareil de couche supérieure nommé parent-1 et un appareil de couche inférieure nommé child-1*. La commande enregistre les bundles de configuration pour chaque appareil dans le répertoire de sortie. La commande génère également des certificats de test auto-signés et les inclut dans le bundle de configuration. Les bundles de configuration sont installés sur chaque appareil à l’aide d’un script d’installation.
az iot edge devices create \ --hub-name my-iot-hub \ --output-path ./output \ --default-edge-agent "mcr.microsoft.com/azureiotedge-agent:1.5" \ --device id=parent-1 \ deployment=./deploymentTopLayer.json \ hostname=10.0.0.4 \ --device id=child-1 \ parent=parent-1 \ deployment=./deploymentLowerLayer.json \ hostname=10.1.0.4
Après exécution la commande, vous trouverez les bundles de configuration d’appareil dans le répertoire de sortie. Exemple :
PS C:\nested-edge\output> dir
Directory: C:\nested-edge\output
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 4/10/2023 4:12 PM 7192 child-1.tgz
-a--- 4/10/2023 4:12 PM 6851 parent-1.tgz
Vous pouvez utiliser vos propres certificats et clés passés en tant qu’arguments à la commande ou créer une hiérarchie d’appareils plus complexe. Si vous souhaitez obtenir plus d’informations sur la création d’appareils imbriqués en utilisant la commande az, consultez az iot edge devices create. Si vous ne savez pas comment les certificats sont utilisés dans un scénario de passerelle, consultez la section relative aux certificats du guide pratique.
Dans ce tutoriel, vous utilisez des arguments inline pour créer les appareils et les bundles de configuration. Vous pouvez également utiliser un fichier de configuration au format YAML ou JSON. Pour obtenir un exemple de fichier de configuration, consultez l’exemple sample_devices_config.yaml.
Configurer le runtime IoT Edge
Outre l’approvisionnement de vos appareils, les étapes de configuration établissent une communication approuvée entre les appareils dans votre hiérarchie à l’aide des certificats que vous avez créés précédemment. Les étapes commencent également à établir la structure réseau de votre hiérarchie. L’appareil de couche supérieure conserve la connectivité Internet, ce qui lui permet d’extraire des images pour son runtime à partir du cloud, tandis que les appareils de couche inférieure passent par l’appareil de couche supérieure pour accéder à ces images.
Pour configurer le runtime IoT Edge, vous devez appliquer les bundles de configuration à vos appareils. Les configurations de l’appareil de couche supérieure et d’un appareil de couche inférieure étant différentes, veillez à appliquer le bon fichier config à chaque appareil.
Chaque appareil a besoin de son bundle de configurations correspondant. Vous pouvez utiliser une clé USB ou un programme de copie sécurisée de fichiers pour déplacer les bundles de configurations sur chaque appareil. Vous devez copier le bundle de configuration dans le système d’exploitation hôte Windows de chaque appareil EFLOW, puis sur la machine virtuelle EFLOW.
Avertissement
Veillez à envoyer le bundle de configurations approprié à chaque appareil.
Configuration de l’appareil de couche supérieure
Connectez-vous à votre appareil hôte Windows de niveau supérieur et copiez le fichier parent-1.tzg sur l’appareil.
Démarrez une session PowerShell avec élévation de privilèges en sélectionnant l’option Exécuter en tant qu’administrateur.
Copiez parent-1.tzg dans la machine virtuelle EFLOW.
Copy-EflowVmFile -fromFile parent-1.tzg -toFile ~/ -pushFileConnectez-vous à la machine virtuelle EFLOW
Connect-EflowVmExtrayez l’archive du bundle de configuration. Par exemple, utilisez la commande tar pour extraire le fichier d’archive parent-1 :
tar -xzf ./parent-1.tgzDéfinissez l’autorisation d’exécution pour le script d’installation.
chmod +x install.shExécutez le script install.sh.
sudo sh ./install.shAppliquez les autorisations de certificat appropriées et redémarrez le runtime IoT Edge.
sudo chmod -R 755 /etc/aziot/certificates/ sudo iotedge system restartVérifiez que tous les services IoT Edge s’exécutent correctement.
sudo iotedge system statusPour finir, ajoutez les règles de pare-feu appropriées pour activer la connectivité entre l’appareil de couche inférieure et l’appareil de couche supérieure.
sudo iptables -A INPUT -p tcp --dport 5671 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 8883 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT sudo iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT sudo iptables-save | sudo tee /etc/systemd/scripts/ip4saveEffectuez les vérifications de configuration et de connectivité sur vos appareils.
sudo iotedge check
Sur l’appareil de couche supérieure, attendez-vous à voir une sortie avec plusieurs évaluations réussies. Vous pouvez voir des avertissements sur les stratégies de journaux et, en fonction de votre réseau, des stratégies DNS.
Si vous souhaitez examiner de plus près les modifications apportées au fichier config de votre appareil, consultez la section Configurer IoT Edge sur les appareils dans le guide pratique.
Configuration de l’appareil de couche inférieure
Connectez-vous à votre appareil hôte Windows de niveau inférieur et copiez le fichier child-1.tzg sur l’appareil.
Démarrez une session PowerShell avec élévation de privilèges en sélectionnant l’option Exécuter en tant qu’administrateur.
Copiez child-1.tzg dans la machine virtuelle EFLOW.
Copy-EflowVmFile -fromFile child-1.tzg -toFile ~/ -pushFileConnectez-vous à la machine virtuelle EFLOW
Connect-EflowVmExtrayez l’archive du bundle de configuration. Par exemple, utilisez la commande tar pour extraire le fichier d’archive child-1 :
tar -xzf ./child-1.tgzDéfinissez l’autorisation d’exécution pour le script d’installation.
chmod +x install.shExécutez le script install.sh.
sudo sh ./install.shAppliquez les autorisations de certificat appropriées et redémarrez le runtime IoT Edge.
sudo chmod -R 755 /etc/aziot/certificates/ sudo iotedge system restartVérifiez que tous les services IoT Edge s’exécutent correctement.
sudo iotedge system statusEffectuez les vérifications de configuration et de connectivité sur vos appareils. Pour l’appareil de couche inférieure, l’image de diagnostic doit être passée manuellement dans la commande :
sudo iotedge check --diagnostics-image-name <parent_device_fqdn_or_ip>:443/azureiotedge-diagnostics:1.2
Si vous avez correctement suivi les étapes antérieures, vous pouvez vérifier que vos appareils sont configurés correctement. Une fois que vous êtes satisfait de vos configurations sur chaque appareil, vous êtes prêt à continuer.
Déploiement de module d’appareil
Le déploiement de module pour vos appareils a été appliqué lors de la création des appareils dans IoT Hub. La commande az iot edge devices create a appliqué les fichiers JSON de déploiement pour les appareils de couche supérieure et inférieure. Une fois ces déploiements effectués, l’appareil de couche inférieure utilise le module Proxy d’API IoT Edge pour extraire les images nécessaires.
En plus des modules de runtime Agent IoT Edge et Hub IoT Edge, l’appareil de couche supérieure reçoit les modules Registre Docker et Proxy d’API IoT Edge.
Le module Registre Docker pointe vers un registre Azure Container Registry existant. Dans ce cas, REGISTRY_PROXY_REMOTEURL pointe vers Microsoft Container Registry. Par défaut, le registre Docker écoute sur le port 5000.
Le module Proxy d’API IoT Edge route les requêtes HTTP vers d’autres modules, ce qui permet aux appareils de couche inférieure de tirer (pull) des images conteneur ou de pousser (push) des objets blob vers le stockage. Dans ce tutoriel, il communique sur le port 443 et est configuré pour envoyer des demandes de tirage (pull requests) d’images conteneur Docker à votre module Registre Docker sur le port 5000. De plus, toutes les demandes de chargement du service Stockage Blob sont routées vers le module AzureBlobStorageonIoTEdge sur le port 11002. Pour plus d’informations sur le module Proxy d’API IoT Edge et sur sa configuration, consultez le guide pratique du module.
Pour savoir comment créer un déploiement comme celui-ci dans le portail Azure ou Azure Cloud Shell, consultez la section des composants de premier niveau du guide de procédures.
Affichez l’état de vos modules avec la commande suivante :
az iot hub module-twin show --device-id <edge-device-id> --module-id '$edgeAgent' --hub-name <iot-hub-name> --query "properties.reported.[systemModules, modules]"
Cette commande affiche toutes les propriétés signalées de l'edgeAgent. Les propriétés utiles pour la surveillance de l’état de l’appareil sont les suivantes : état du runtime, heure de début du runtime, heure de sortie du dernier runtime et nombre de redémarrages du runtime.
Vous voyez également l’état de vos modules dans le portail Azure. Accédez à la section Appareils de votre IoT Hub pour afficher vos appareils et modules.
Afficher les données générées
Le module Capteur de température simulé que vous avez envoyé (push) génère des exemples de données d’environnement. Il envoie des messages qui incluent la température et l’humidité ambiantes, la température et la pression de la machine, ainsi qu’un horodatage.
Vous pouvez également afficher ces messages à l’aide d’Azure Cloud Shell :
az iot hub monitor-events -n <iot-hub-name> -d <lower-layer-device-name>
Exemple :
az iot hub monitor-events -n my-iot-hub -d child-1
{
"event": {
"origin": "child-1",
"module": "simulatedTemperatureSensor",
"interface": "",
"component": "",
"payload": "{\"machine\":{\"temperature\":104.29281270901808,\"pressure\":10.48905461241978},\"ambient\":{\"temperature\":21.086561171611102,\"humidity\":24},\"timeCreated\":\"2023-04-17T21:50:30.1082487Z\"}"
}
}
Dépannage
Exécutez la commande iotedge check pour vérifier la configuration et résoudre les problèmes.
Vous pouvez exécuter iotedge check dans une hiérarchie imbriquée, même si les appareils en aval n’ont pas d’accès direct à Internet.
Quand vous exécutez iotedge check à partir de la couche inférieure, le programme essaie de tirer l’image du parent via le port 443.
sudo iotedge check --diagnostics-image-name $upstream:443/azureiotedge-diagnostics:1.2
La valeur azureiotedge-diagnostics est extraite du registre de conteneurs lié au module registre. Ce tutoriel le définit par défaut sur https://mcr.microsoft.com:
| Nom | Valeur |
|---|---|
REGISTRY_PROXY_REMOTEURL |
https://mcr.microsoft.com |
Si vous utilisez un registre de conteneurs privé, vérifiez que toutes les images (IoTEdgeAPIProxy, edgeAgent, edgeHub, Simulated Temperature Sensor et diagnostics) se trouvent dans le registre de conteneurs.
Si un appareil en aval a une architecture de processeur différente de celle de l’appareil parent, utilisez l’image d’architecture appropriée. Utilisez un registre connecté ou spécifiez l’image correcte pour les modules edgeAgent et edgeHub dans le fichier device config.toml en aval. Par exemple, si l’appareil parent s’exécute sur une architecture ARM32v7 et que l’appareil en aval s’exécute sur une architecture AMD64, spécifiez la balise d’image de version et d’architecture correspondante dans le fichier device config.toml en aval.
[agent.config]
image = "$upstream:443/azureiotedge-agent:1.5.15-linux-amd64"
"systemModules": {
"edgeAgent": {
"settings": {
"image": "$upstream:443/azureiotedge-agent:1.5.15-linux-amd64"
},
},
"edgeHub": {
"settings": {
"image": "$upstream:443/azureiotedge-hub:1.5.15-linux-amd64",
}
}
}
Nettoyer les ressources
Vous pouvez supprimer les ressources Azure et les configurations locales que vous avez créées dans cet article pour éviter des frais.
Pour supprimer les ressources :
Connectez-vous au portail Azure, puis sélectionnez Groupes de ressources.
Sélectionnez le nom du groupe de ressources contenant vos ressources de test de IoT Edge.
Passez en revue la liste des ressources contenues dans votre groupe de ressources. Si vous souhaitez toutes les supprimer, vous pouvez sélectionner Supprimer le groupe de ressources. Si vous souhaitez en supprimer seulement quelques-unes, vous pouvez sélectionner chaque ressource pour la supprimer individuellement.
Étapes suivantes
Dans ce tutoriel, vous avez configuré deux appareils IoT Edge en tant que passerelles et défini l’un des deux comme appareil parent de l’autre. Vous avez vu ensuite comment tirer une image conteneur sur l’appareil enfant via une passerelle à l’aide du module Proxy d’API IoT Edge. Pour en savoir plus, consultez le guide pratique sur l’utilisation du module proxy.
Si vous souhaitez en savoir plus sur l’utilisation des passerelles pour créer des couches hiérarchiques d’appareils IoT Edge, consultez l’article suivant.