Démarrage rapide : déployer un registre connecté sur un appareil IoT Edge (à déprécier)
Dans ce guide de démarrage rapide, vous utilisez la commande Azure CLI pour déployer un registre connecté en tant que module sur un appareil Azure IoT Edge. L’appareil IoT Edge peut accéder au registre de conteneurs Azure parent dans le cloud.
Pour obtenir une vue d’ensemble de l’utilisation d’un registre connecté avec IoT Edge, consultez Utilisation d’un registre connecté avec Azure IoT Edge. Ce scénario correspond à un appareil situé dans la couche supérieure d’une hiérarchie IoT Edge.
Prérequis
Utilisez l’environnement Bash dans Azure Cloud Shell. Pour plus d’informations, consultez Démarrage rapide pour Bash dans Azure Cloud Shell.
Si vous préférez exécuter les commandes de référence de l’interface de ligne de commande localement, installez l’interface Azure CLI. Si vous exécutez sur Windows ou macOS, envisagez d’exécuter Azure CLI dans un conteneur Docker. Pour plus d’informations, consultez Guide pratique pour exécuter Azure CLI dans un conteneur Docker.
Si vous utilisez une installation locale, connectez-vous à Azure CLI à l’aide de la commande az login. Pour finir le processus d’authentification, suivez les étapes affichées dans votre terminal. Pour connaître les autres options de connexion, consultez Se connecter avec Azure CLI.
Lorsque vous y êtes invité, installez l’extension Azure CLI lors de la première utilisation. Pour plus d’informations sur les extensions, consultez Utiliser des extensions avec Azure CLI.
Exécutez az version pour rechercher la version et les bibliothèques dépendantes installées. Pour effectuer une mise à niveau vers la dernière version, exécutez az upgrade.
Appareil Azure IoT Hub et IoT Edge. Pour connaître les étapes de déploiement, consultez Démarrage rapide : Déployer votre premier module IoT Edge sur un appareil Linux virtuel.
Important
Pour accéder ultérieurement aux modules déployés sur l’appareil IoT Edge, veillez à ouvrir les ports 8000, 5671 et 8883 sur l’appareil. Pour plus d’informations, consultez Guide d’ouverture de ports vers une machine virtuelle avec le portail Azure.
Ressource de registre connecté dans Azure. Pour découvrir les étapes du déploiement, consultez les démarrages rapides à l’aide d’Azure CLI ou du portail Azure.
- Un registre connecté en mode
ReadWrite
ouReadOnly
peut être utilisé dans ce scénario. - Dans les commandes décrites dans cet article, le nom du registre connecté est stocké dans la variable d’environnement CONNECTED _REGISTRY_RW.
- Un registre connecté en mode
Importer des images dans votre registre cloud
Importez les images conteneur suivantes dans votre registre cloud à l’aide de la commande az acr import. Si vous avez déjà importé ces images, ignorez cette étape.
Image de registre connecté
Pour prendre en charge des scénarios IoT Edge imbriqués, l’image de conteneur pour le runtime du registre connecté doit être disponible dans votre registre de conteneurs Azure privé. Utilisez la commande az acr import pour importer l’image du registre connecté dans votre registre privé.
# Use the REGISTRY_NAME variable in the following Azure CLI commands to identify the registry
REGISTRY_NAME=<container-registry-name>
az acr import \
--name $REGISTRY_NAME \
--source mcr.microsoft.com/acr/connected-registry:0.8.0
Images d’IoT Edge et de proxy d’API
Pour prendre en charge le registre connecté sur un IoT Edge imbriqué, vous devez déployer des modules pour l’IoT Edge et le proxy d’API. Importez ces images dans votre registre privé.
Le module proxy d’API IoT Edge permet à un appareil IoT Edge d’exposer plusieurs services à l’aide du protocole HTTPS sur le même port, tel que 443.
az acr import \
--name $REGISTRY_NAME \
--source mcr.microsoft.com/azureiotedge-agent:1.2.4
az acr import \
--name $REGISTRY_NAME \
--source mcr.microsoft.com/azureiotedge-hub:1.2.4
az acr import \
--name $REGISTRY_NAME \
--source mcr.microsoft.com/azureiotedge-api-proxy:1.1.2
az acr import \
--name $REGISTRY_NAME \
--source mcr.microsoft.com/azureiotedge-diagnostics:1.2.4
Image Hello-World
Pour tester le registre connecté, importez l’image hello-world
. Ce référentiel sera synchronisé sur le registre connecté et extrait par les clients du registre connecté.
az acr import \
--name $REGISTRY_NAME \
--source mcr.microsoft.com/hello-world:1.1.2
Récupérer la configuration de registre connecté
Avant de déployer le registre connecté sur l’appareil IoT Edge, vous devez récupérer les paramètres de configuration à partir de la ressource de registre connecté dans Azure.
Utilisez la commande az acr connected-registry get-settings pour obtenir les informations de paramètres nécessaires à l’installation d’un registre connecté. L’exemple suivant spécifie HTTPs comme protocole parent. Ce protocole est requis lorsque le registre parent est un registre cloud.
az acr connected-registry get-settings \
--registry $REGISTRY_NAME \
--name $CONNECTED_REGISTRY_RW \
--parent-protocol https
Par défaut, les informations de paramètres n’incluent pas le mot de passe du jeton de synchronisation qui est également nécessaire pour déployer le registre connecté. Vous pouvez également générer l’un des mots de passe en passant le paramètre --generate-password 1
ou generate-password 2
. Enregistrez le mot de passe généré dans un emplacement sûr. Vous ne pourrez le récupérer une nouvelle fois.
Avertissement
La régénération d’un mot de passe déclenche une rotation des informations d’identification du jeton de synchronisation. Si vous avez configuré un appareil à l’aide du mot de passe précédent, vous devez mettre à jour la configuration.
La sortie de commande comprend la chaîne de connexion au registre et les paramètres associés. L’exemple de sortie suivant montre la chaîne de connexion du registre connecté nommé myconnectedregistry, avec le registre parent contosoregistry :
{
"ACR_REGISTRY_CONNECTION_STRING": "ConnectedRegistryName=myconnectedregistry;SyncTokenName=myconnectedregistry-sync-token;SyncTokenPassword=xxxxxxxxxxxxxxxx;ParentGatewayEndpoint=contosoregistry.eastus.data.azurecr.io;ParentEndpointProtocol=https"
}
Configurer un manifeste de déploiement pour IoT Edge
Un manifeste de déploiement est un document JSON décrivant les modules à déployer sur un appareil IoT Edge. Pour plus d’informations, consultez Comprendre comment les modules IoT Edge peuvent être utilisés, configurés et réutilisés.
Pour déployer le registre connecté et les modules de proxy d’API à l’aide de la commande Azure CLI, enregistrez le manifeste de déploiement suivant localement sous la forme d’un fichier manifest.json
. Vous utiliserez le chemin du fichier dans la section suivante au moment d’exécuter la commande permettant d’appliquer la configuration à votre appareil.
Paramètres du module de registre connecté
Utilisez les informations d’identification du jeton et la chaîne de connexion des sections précédentes pour mettre à jour les valeurs JSON pertinentes dans le nœud
env
.Les variables d’environnement suivantes sont facultatives dans le nœud
env
:Variable Description ACR_REGISTRY_LOGIN_SERVER
Spécifie un nom d’hôte unique ou un nom de domaine complet. S’il est utilisé, le registre connecté accepte uniquement les requêtes effectuées à cette valeur de serveur de connexion.
Si aucune valeur n’est fournie, le registre connecté est accessible avec n’importe quelle valeur de serveur de connexion.ACR_REGISTRY_CERTIFICATE_VOLUME
Si votre registre connecté est accessible via HTTPS, pointe vers le volume sur lequel les certificats HTTPS sont stockés.
S’il n’est pas défini, l’emplacement par défaut est/var/acr/certs
.ACR_REGISTRY_DATA_VOLUME
Remplace l’emplacement par défaut /var/acr/data
où les images sont stockées par le registre connecté.
Cet emplacement doit correspondre à la liaison de volume pour le conteneur.Important
Si le registre connecté écoute sur un port différent entre 80 et 443, la valeur
ACR_REGISTRY_LOGIN_SERVER
(si spécifiée) doit inclure le port. Exemple :192.168.0.100:8080
.Une liaison
HostPort
pour le registre connecté doit être définie si le module proxy d’API n’est pas utilisé. Exemple :"createOptions": "{\"HostConfig\":{\"Binds\":[\"/home/azureuser/connected-registry:/var/acr/data\"],\"PortBindings\":{\"8080/tcp\":[{\"HostPort\":\"8080\"}]}}}"
Paramètres du module de proxy d’API
- Le proxy d’API écoute sur le port 8000 configuré comme
NGINX_DEFAULT_PORT
. Pour plus d’informations sur les paramètres de proxy d’API, consultez le Référentiel GitHub IoT Edge.
{
"modulesContent": {
"$edgeAgent": {
"properties.desired": {
"modules": {
"connected-registry": {
"settings": {
"image": "<REPLACE_WITH_CLOUD_REGISTRY_NAME>.azurecr.io/acr/connected-registry:0.8.0",
"createOptions": "{\"HostConfig\":{\"Binds\":[\"/home/azureuser/connected-registry:/var/acr/data\"]}}"
},
"type": "docker",
"env": {
"ACR_REGISTRY_CONNECTION_STRING": {
"value": "ConnectedRegistryName=<REPLACE_WITH_CONNECTED_REGISTRY_NAME>;SyncTokenName=<REPLACE_WITH_SYNC_TOKEN_NAME>;SyncTokenPassword=REPLACE_WITH_SYNC_TOKEN_PASSWORD;ParentGatewayEndpoint=<REPLACE_WITH_CLOUD_REGISTRY_NAME>.<REPLACE_WITH_CLOUD_REGISTRY_REGION>.data.azurecr.io;ParentEndpointProtocol=https"
}
},
"status": "running",
"restartPolicy": "always",
"version": "1.0"
},
"IoTEdgeAPIProxy": {
"settings": {
"image": "<REPLACE_WITH_CLOUD_REGISTRY_NAME>.azurecr.io/azureiotedge-api-proxy:1.1.2",
"createOptions": "{\"HostConfig\":{\"PortBindings\":{\"8000/tcp\":[{\"HostPort\":\"8000\"}]}}}"
},
"type": "docker",
"env": {
"NGINX_DEFAULT_PORT": {
"value": "8000"
},
"CONNECTED_ACR_ROUTE_ADDRESS": {
"value": "connected-registry:8080"
},
"BLOB_UPLOAD_ROUTE_ADDRESS": {
"value": "AzureBlobStorageonIoTEdge:11002"
}
},
"status": "running",
"restartPolicy": "always",
"version": "1.0"
}
},
"runtime": {
"settings": {
"minDockerVersion": "v1.25",
"registryCredentials": {
"cloudregistry": {
"address": "<REPLACE_WITH_CLOUD_REGISTRY_NAME>.azurecr.io",
"password": "<REPLACE_WITH_SYNC_TOKEN_PASSWORD>",
"username": "<REPLACE_WITH_SYNC_TOKEN_NAME>"
}
}
},
"type": "docker"
},
"schemaVersion": "1.1",
"systemModules": {
"edgeAgent": {
"settings": {
"image": "<REPLACE_WITH_CLOUD_REGISTRY_NAME>.azurecr.io/azureiotedge-agent:1.2.4",
"createOptions": ""
},
"type": "docker",
"env": {
"SendRuntimeQualityTelemetry": {
"value": "false"
}
}
},
"edgeHub": {
"settings": {
"image": "<REPLACE_WITH_CLOUD_REGISTRY_NAME>.azurecr.io/azureiotedge-hub:1.2.4",
"createOptions": "{\"HostConfig\":{\"PortBindings\":{\"443/tcp\":[{\"HostPort\":\"443\"}],\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}]}}}"
},
"type": "docker",
"status": "running",
"restartPolicy": "always"
}
}
}
},
"$edgeHub": {
"properties.desired": {
"routes": {
"route": "FROM /messages/* INTO $upstream"
},
"schemaVersion": "1.1",
"storeAndForwardConfiguration": {
"timeToLiveSecs": 7200
}
}
}
}
}
Déployer le registre connecté et les modules de proxy d’API sur IoT Edge
Utilisez la commande suivante pour déployer le registre connecté et les modules de proxy d’API sur l’appareil IoT Edge, à l’aide du manifeste de déploiement créé dans la section précédente. Indiquez l’ID du périphérique de couche supérieure IoT Edge et le nom de l’IoT Hub, le cas échéant.
# Set the IOT_EDGE_TOP_LAYER_DEVICE_ID and IOT_HUB_NAME environment variables for use in the following Azure CLI command
IOT_EDGE_TOP_LAYER_DEVICE_ID=<device-id>
IOT_HUB_NAME=<hub-name>
az iot edge set-modules \
--device-id $IOT_EDGE_TOP_LAYER_DEVICE_ID \
--hub-name $IOT_HUB_NAME \
--content manifest.json
Pour plus d’informations, consultez Déployer des modules Azure IoT Edge avec Azure CLI.
Pour vérifier l’état du registre connecté, utilisez la commande az acr connected-registry show suivante. Le nom du registre connecté est la valeur de $CONNECTED_REGISTRY_RW.
az acr connected-registry show \
--registry $REGISTRY_NAME \
--name $CONNECTED_REGISTRY_RW \
--output table
Une fois le déploiement réussi, le registre connecté affiche l’état Online
.
Étapes suivantes
Dans ce démarrage rapide, vous avez appris à déployer un registre connecté sur un appareil IoT Edge. Passez aux guides suivants pour apprendre à extraire des images du registre connecté nouvellement déployé ou à déployer le registre connecté sur des appareils IoT Edge imbriqués.