Guida introduttiva: Distribuire un registro connesso in un dispositivo IoT Edge
In questa guida introduttiva si userà l'interfaccia della riga di comando di Azure per distribuire un registro connesso come modulo in un dispositivo azure IoT Edge. Il dispositivo IoT Edge può accedere al Registro Azure Container padre nel cloud.
Per una panoramica dell'uso di un registro connesso con IoT Edge, vedere Uso del Registro di sistema connesso con Azure IoT Edge. Questo scenario corrisponde a un dispositivo al livello superiore di una gerarchia di IoT Edge.
Prerequisiti
Usare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Avvio rapido per Bash in Azure Cloud Shell.
Se si preferisce eseguire i comandi di riferimento dell'interfaccia della riga di comando in locale, installare l'interfaccia della riga di comando di Azure. Per l'esecuzione in Windows o macOS, è consigliabile eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker. Per altre informazioni, vedere Come eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker.
Se si usa un'installazione locale, accedere all'interfaccia della riga di comando di Azure con il comando az login. Per completare il processo di autenticazione, seguire la procedura visualizzata nel terminale. Per altre opzioni di accesso, vedere Accedere con l'interfaccia della riga di comando di Azure.
Quando richiesto, installare l'estensione dell'interfaccia della riga di comando di Azure al primo uso. Per altre informazioni sulle estensioni, vedere Usare le estensioni con l'interfaccia della riga di comando di Azure.
Eseguire az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, eseguire az upgrade.
hub IoT di Azure e IoT Edge dispositivo. Per i passaggi di distribuzione, vedere Avvio rapido: Distribuire il primo modulo IoT Edge in un dispositivo Linux virtuale.
Importante
Per un accesso successivo ai moduli distribuiti nel dispositivo IoT Edge, assicurarsi di aprire le porte 8000, 5671 e 8883 nel dispositivo. Per i passaggi di configurazione, vedere Come aprire le porte a una macchina virtuale con il portale di Azure.
Risorsa del Registro di sistema connessa in Azure. Per i passaggi di distribuzione, vedere guide introduttive con l'interfaccia della riga di comando di Azure o portale di Azure.
- In questo scenario è possibile usare un Registro di sistema connesso in
ReadWrite
modalità oReadOnly
. - Nei comandi di questo articolo il nome del Registro di sistema connesso viene archiviato nella variabile di ambiente CONNECTED_REGISTRY_RW.
- In questo scenario è possibile usare un Registro di sistema connesso in
Importare immagini nel registro cloud
Importare le immagini del contenitore seguenti nel registro cloud usando il comando az acr import . Ignorare questo passaggio se queste immagini sono già state importate.
Immagine del Registro di sistema connessa
Per supportare scenari di IoT Edge annidati, l'immagine del contenitore per il runtime del Registro di sistema connesso deve essere disponibile nel Registro Azure Container privato. Usare il comando az acr import per importare l'immagine del Registro di sistema connessa nel registro privato.
# 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
IoT Edge e immagini proxy API
Per supportare il Registro di sistema connesso in IoT Edge annidati, è necessario distribuire moduli per il proxy API e il IoT Edge. Importare queste immagini nel registro privato.
Il modulo proxy API IoT Edge consente a un dispositivo IoT Edge di esporre più servizi usando il protocollo HTTPS sulla stessa porta, ad esempio 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
Immagine Hello-world
Per testare il Registro di sistema connesso, importare l'immagine hello-world
. Questo repository verrà sincronizzato con il Registro di sistema connesso ed eseguito il pull dai client del Registro di sistema connessi.
az acr import \
--name $REGISTRY_NAME \
--source mcr.microsoft.com/hello-world:1.1.2
Recuperare la configurazione del Registro di sistema connesso
Prima di distribuire il Registro di sistema connesso al dispositivo IoT Edge, è necessario recuperare le impostazioni di configurazione dalla risorsa del Registro di sistema connesso in Azure.
Usare il comando az acr connected-registry get-settings per ottenere le informazioni sulle impostazioni necessarie per installare un registro connesso. Nell'esempio seguente viene specificato HTTPS come protocollo padre. Questo protocollo è necessario quando il registro padre è un registro cloud.
az acr connected-registry get-settings \
--registry $REGISTRY_NAME \
--name $CONNECTED_REGISTRY_RW \
--parent-protocol https
Per impostazione predefinita, le informazioni sulle impostazioni non includono la password del token di sincronizzazione , necessaria anche per distribuire il Registro di sistema connesso. Facoltativamente, generare una delle password passando il --generate-password 1
parametro o generate-password 2
. Salvare la password generata in un percorso sicuro. Non può essere recuperato di nuovo.
Avviso
La rigenerazione di una password ruota le credenziali del token di sincronizzazione. Se è stato configurato un dispositivo usando la password precedente, è necessario aggiornare la configurazione.
L'output dei comandi include la stringa di connessione del Registro di sistema e le impostazioni correlate. L'output di esempio seguente mostra la stringa di connessione per il Registro di sistema connesso denominato myconnectedregistry con il registro padre contosoregistry:
{
"ACR_REGISTRY_CONNECTION_STRING": "ConnectedRegistryName=myconnectedregistry;SyncTokenName=myconnectedregistry-sync-token;SyncTokenPassword=xxxxxxxxxxxxxxxx;ParentGatewayEndpoint=contosoregistry.eastus.data.azurecr.io;ParentEndpointProtocol=https"
}
Configurare un manifesto della distribuzione per IoT Edge
Un manifesto della distribuzione è un documento JSON che descrive i moduli da distribuire nel dispositivo IoT Edge. Per altre informazioni, vedere Informazioni su come usare, configurare e riutilizzare i moduli IoT Edge.
Per distribuire il Registro di sistema connesso e i moduli proxy API usando l'interfaccia della riga di comando di Azure, salvare il manifesto della distribuzione seguente in locale come manifest.json
file. Il percorso del file verrà usato nella sezione successiva quando si eseguirà il comando per applicare la configurazione al dispositivo.
Impostazioni del modulo del Registro di sistema connesso
Usare le credenziali del token e la stringa di connessione delle sezioni precedenti per aggiornare i valori JSON pertinenti nel
env
nodo.Nel nodo sono facoltative
env
le variabili di ambiente seguenti:Variabile Descrizione ACR_REGISTRY_LOGIN_SERVER
Specifica un nome host univoco o un nome di dominio completo. Se usato, il Registro di sistema connesso accetta solo le richieste effettuate a questo valore del server di accesso.
Se non viene specificato alcun valore, è possibile accedere al Registro di sistema connesso con qualsiasi valore del server di accesso.ACR_REGISTRY_CERTIFICATE_VOLUME
Se il registro connesso sarà accessibile tramite HTTPS, punta al volume in cui sono archiviati i certificati HTTPS.
Se non è impostato, il percorso predefinito è/var/acr/certs
.ACR_REGISTRY_DATA_VOLUME
Sovrascrive il percorso /var/acr/data
predefinito in cui le immagini verranno archiviate dal Registro di sistema connesso.
Questo percorso deve corrispondere all'associazione di volumi per il contenitore.Importante
Se il Registro di sistema connesso è in ascolto su una porta diversa da 80 e 443, il
ACR_REGISTRY_LOGIN_SERVER
valore (se specificato) deve includere la porta. Esempio:192.168.0.100:8080
.È necessario impostare un'associazione
HostPort
per il Registro di sistema connesso se il modulo proxy API non viene usato. Esempio:"createOptions": "{\"HostConfig\":{\"Binds\":[\"/home/azureuser/connected-registry:/var/acr/data\"],\"PortBindings\":{\"8080/tcp\":[{\"HostPort\":\"8080\"}]}}}"
Impostazioni del modulo proxy API
- Il proxy API sarà in ascolto sulla porta 8000 configurata come
NGINX_DEFAULT_PORT
. Per altre informazioni sulle impostazioni del proxy API, vedere il repository 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
}
}
}
}
}
Distribuire i moduli proxy api e registro connessi in IoT Edge
Usare il comando seguente per distribuire i moduli proxy del Registro di sistema e dell'API connessi nel dispositivo IoT Edge usando il manifesto della distribuzione creato nella sezione precedente. Specificare l'ID del dispositivo IoT Edge livello superiore e il nome del hub IoT dove indicato.
# 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
Per informazioni dettagliate, vedere Distribuire moduli di Azure IoT Edge con l'interfaccia della riga di comando di Azure.
Per controllare lo stato del Registro di sistema connesso, usare il comando az acr connected-registry show seguente. Il nome del Registro di sistema connesso è il valore di $CONNECTED_REGISTRY_RW.
az acr connected-registry show \
--registry $REGISTRY_NAME \
--name $CONNECTED_REGISTRY_RW \
--output table
Al termine della distribuzione, il Registro di sistema connesso mostra lo stato .Online
Passaggi successivi
In questa guida introduttiva si è appreso come distribuire un registro connesso in un dispositivo IoT Edge. Continuare con le guide successive per informazioni su come eseguire il pull delle immagini dal registro connesso appena distribuito o per distribuire il Registro di sistema connesso nei dispositivi annidati IoT Edge.