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 en amont et en aval 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, 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, suivez 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, veuillez consulter 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 des raisons 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, si nécessaire. 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 :
Un ordinateur (Windows ou Linux) avec une connectivité Internet
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
Interpréteur de commandes Bash dans Azure Cloud Shell utilisant Azure CLI avec l’extension Azure IoT installée. Ce tutoriel utilise Azure Cloud Shell. Pour afficher vos versions actuelles des modules et extensions Azure CLI, exécutez la commande az version.
Deux appareils Linux pour configurer votre hiérarchie. Si vous n’avez pas d’appareils disponibles, vous pouvez créer des machines virtuelles Azure pour chaque appareil de votre hiérarchie à l’aide du modèle Resource Manager Azure IoT Edge. IoT Edge version 1.5 est préinstallée avec ce modèle Resource Manager. Si vous installez IoT Edge sur vos propres appareils, veuillez consulter la rubrique Installer Azure IoT Edge pour Linux ou Mettre à jour IoT Edge.
Pour simplifier la communication réseau entre les appareils, les machines virtuelles doivent se trouver sur le même réseau virtuel ou utiliser l’appairage de réseaux virtuels.
Vérifiez que les ports suivants sont ouverts en entrée pour tous les appareils, à l’exception de l’appareil de la couche la plus basse : 443, 5671, 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.
Pour plus d’informations, consultez Guide pratique pour ouvrir des ports sur une machine virtuelle avec le portail Azure.
Conseil
Dans la mesure où vous utilisez le descripteur SSH et le FQDN (nom de domaine complet) ou l’adresse IP de chaque machine virtuelle pour le processus de configuration dans les étapes à venir, gardez une trace de ces informations. Vous trouverez l’adresse IP et le FQDN sur le Portail Azure. Pour l’adresse IP, accédez à votre liste de machines virtuelles, puis notez le contenu du champ Adresse IP publique. Pour le FQDN, accédez à la page de présentation de chaque machine virtuelle, puis recherchez le champ Nom DNS. Pour le descripteur SSH, accédez à la page de connexion de chaque machine virtuelle.
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 , définissez le manifeste de déploiement pour les appareils de couche supérieure et de couche 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. Dans la section systemModules , les modules runtime sont définis pour extraire à partir de $upstream :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 extraire 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 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 le texte de l’espace réservé entre crochets par vos propres valeurs :
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 avoir exécuté la commande, recherchez les bundles de configuration de l’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
Utilisez vos propres certificats et clés passés en tant qu’arguments à la commande ou créez 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, appliquez les bundles de configuration à vos appareils. Les configurations sont différentes pour l’appareil de couche supérieure et un appareil de couche inférieure. Veillez donc à utiliser le fichier de configuration approprié pour chaque appareil.
Copiez chaque fichier d’archive du bundle de configuration sur son appareil correspondant. Vous pouvez utiliser un lecteur USB, un service comme Azure Key Vault ou une fonction comme Copie de fichiers sécurisée. Choisissez l’une de ces méthodes qui correspondent le mieux à votre scénario.
Par exemple, pour envoyer le bundle de configuration parent-1 au répertoire de base sur la machine virtuelle parent-1, vous pouvez utiliser une commande semblable à l’exemple suivant :
scp ./output/parent-1.tgz admin@parent-1-vm.westus.cloudapp.azure.com:~Sur chaque appareil, extrayez 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.shSur chaque appareil, exécutez le script d’installation avec les droits d’administrateur pour appliquer l'ensemble de configuration.
sudo ./install.sh
Pour plus d’informations sur les modifications apportées au fichier de configuration de votre appareil, consultez Connecter ensemble des appareils Azure IoT Edge pour créer une hiérarchie.
Pour vérifier que vos appareils sont correctement configurés, exécutez les vérifications de configuration et de connectivité sur vos appareils.
sudo iotedge check
admin@child-1-vm:~$ sudo iotedge check
Configuration checks (aziot-identity-service)
---------------------------------------------
√ keyd configuration is well-formed - OK
√ certd configuration is well-formed - OK
√ tpmd configuration is well-formed - OK
√ identityd configuration is well-formed - OK
√ daemon configurations up-to-date with config.toml - OK
√ identityd config toml file specifies a valid hostname - OK
√ host time is close to reference time - OK
√ preloaded certificates are valid - OK
√ keyd is running - OK
√ certd is running - OK
√ identityd is running - OK
√ read all preloaded certificates from the Certificates Service - OK
√ read all preloaded key pairs from the Keys Service - OK
√ check all EST server URLs utilize HTTPS - OK
√ ensure all preloaded certificates match preloaded private keys with the same ID - OK
Connectivity checks (aziot-identity-service)
--------------------------------------------
√ host can connect to and perform TLS handshake with iothub AMQP port - OK
√ host can connect to and perform TLS handshake with iothub HTTPS / WebSockets port - OK
√ host can connect to and perform TLS handshake with iothub MQTT port - OK
Configuration checks
--------------------
√ aziot-edged configuration is well-formed - OK
√ configuration up-to-date with config.toml - OK
√ container engine is installed and functional - OK
√ configuration has correct parent_hostname - OK
√ configuration has correct URIs for daemon mgmt endpoint - OK
√ container time is close to host time - OK
‼ DNS server - Warning
Container engine is not configured with DNS server setting, which may impact connectivity to IoT Hub.
Please see https://aka.ms/iotedge-prod-checklist-dns for best practices.
You can ignore this warning if you are setting DNS server per module in the Edge deployment.
‼ production readiness: logs policy - Warning
Container engine is not configured to rotate module logs which may cause it run out of disk space.
Please see https://aka.ms/iotedge-prod-checklist-logs for best practices.
You can ignore this warning if you are setting log policy per module in the Edge deployment.
‼ production readiness: Edge Agent's storage directory is persisted on the host filesystem - Warning
The edgeAgent module is not configured to persist its /tmp/edgeAgent directory on the host filesystem.
Data might be lost if the module is deleted or updated.
Please see https://aka.ms/iotedge-storage-host for best practices.
‼ production readiness: Edge Hub's storage directory is persisted on the host filesystem - Warning
The edgeHub module is not configured to persist its /tmp/edgeHub directory on the host filesystem.
Data might be lost if the module is deleted or updated.
Please see https://aka.ms/iotedge-storage-host for best practices.
√ Agent image is valid and can be pulled from upstream - OK
√ proxy settings are consistent in aziot-edged, aziot-identityd, moby daemon and config.toml - OK
Connectivity checks
-------------------
√ container on the default network can connect to upstream AMQP port - OK
√ container on the default network can connect to upstream HTTPS / WebSockets port - OK
√ container on the IoT Edge module network can connect to upstream AMQP port - OK
√ container on the IoT Edge module network can connect to upstream HTTPS / WebSockets port - OK
30 check(s) succeeded.
4 check(s) raised warnings. Re-run with --verbose for more details.
2 check(s) were skipped due to errors from other checks. Re-run with --verbose for more details.
Sur votre appareil de niveau supérieur, vous voyez le résultat avec plusieurs contrôles réussis. Vous pouvez voir des avertissements sur les politiques de journalisation et, en fonction de votre réseau, les politiques DNS.
Déploiement de module d’appareil
Le déploiement de module pour vos appareils est appliqué lorsque vous créez les appareils dans IoT Hub. La commande az iot edge devices create applique les fichiers JSON de déploiement pour les appareils de couche supérieure et inférieure. Une fois le déploiement terminé, l’appareil de couche inférieure utilise le module proxy d’API IoT Edge pour extraire ses images.
Outre les modules d’exécution IoT Edge Agent et IoT Edge Hub, l’appareil de couche supérieure obtient également le module de Registre Docker et le module 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 module de Registre Docker écoute le port 5000.
Le module Proxy d’API IoT Edge achemine les requêtes HTTP vers d’autres modules, afin que les appareils de couche inférieure puissent extraire des images conteneur ou envoyer (push) des objets blob vers le stockage. Dans ce tutoriel, il communique sur le port 443 et est configuré pour envoyer des demandes d’extraction d’images conteneur Docker à votre module de Registre Docker sur le port 5000. Les demandes de chargement de stockage Blob sont envoyées au 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 cette commande :
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 pouvez également voir 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é 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 iotedge check commande pour vérifier la configuration et résoudre les erreurs.
Exécutez iotedge check dans une hiérarchie imbriquée, même si les machines en aval n’ont pas d’accès Internet direct.
Lorsque vous exécutez iotedge check à partir de la couche inférieure, le programme extrait l’image du parent via le port 443.
La azureiotedge-diagnostics valeur provient du registre de conteneurs lié au module de 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) sont présentes dans le registre de conteneurs.
Si un appareil en aval utilise 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 ARM32v7 et que l’appareil en aval s’exécute sur AMD64, spécifiez la version correspondante et la balise d’image d’architecture dans le fichier device config.toml en aval.
[agent.config]
image = "$upstream:443/azureiotedge-agent:1.5.0-linux-amd64"
"systemModules": {
"edgeAgent": {
"settings": {
"image": "$upstream:443/azureiotedge-agent:1.5.0-linux-amd64"
},
},
"edgeHub": {
"settings": {
"image": "$upstream:443/azureiotedge-hub:1.5.0-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 ensuite extrait une image conteneur sur l’appareil en aval 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.