Rychlý start: Nasazení připojeného registru do zařízení IoT Edge

V tomto rychlém startu použijete Azure CLI k nasazení připojeného registru jako modulu na zařízení Azure IoT Edge. IoT Edge zařízení má přístup k nadřazené službě Azure Container Registry v cloudu.

Přehled použití připojeného registru s IoT Edge najdete v tématu Použití připojeného registru s Azure IoT Edge. Tento scénář odpovídá zařízení v horní vrstvě hierarchie IoT Edge.

Požadavky

  • Použijte prostředí Bash v Azure Cloud Shell. Další informace najdete v tématu Rychlý start pro Bash v Azure Cloud Shell.

  • Pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Další informace najdete v tématu Spuštění Azure CLI v kontejneru Dockeru.

    • Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení najdete v tématu Přihlášení pomocí Azure CLI.

    • Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Využití rozšíření v Azure CLI.

    • Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.

Import imagí do cloudového registru

Pomocí příkazu az acr import naimportujte do svého cloudového registru následující image kontejnerů. Pokud jste už tyto image naimportovali, tento krok přeskočte.

Připojená image registru

Aby bylo možné podporovat vnořené IoT Edge scénáře, musí být image kontejneru pro modul runtime připojeného registru dostupná ve vašem privátním registru kontejneru Azure. Pomocí příkazu az acr import naimportujte image připojeného registru do privátního registru.

# 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 a proxy image rozhraní API

Pokud chcete podporovat připojený registr na vnořených IoT Edge, musíte nasadit moduly pro IoT Edge a proxy rozhraní API. Importujte tyto image do privátního registru.

Modul proxy IoT Edge API umožňuje IoT Edge zařízení zveřejnit více služeb pomocí protokolu HTTPS na stejném portu, jako je například 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

Obrázek Hello-World

Pokud chcete otestovat připojený registr, naimportujte hello-world image. Toto úložiště bude synchronizováno do připojeného registru a vyžádáno klienty připojeného registru.

az acr import \
  --name $REGISTRY_NAME \
  --source mcr.microsoft.com/hello-world:1.1.2

Načtení konfigurace připojeného registru

Před nasazením připojeného registru do IoT Edge zařízení musíte načíst nastavení konfigurace z připojeného prostředku registru v Azure.

Pomocí příkazu az acr connected-registry get-settings získejte informace o nastavení vyžadované k instalaci připojeného registru. Následující příklad určuje HTTPS jako nadřazený protokol. Tento protokol se vyžaduje, pokud je nadřazeným registrem cloud.

az acr connected-registry get-settings \
  --registry $REGISTRY_NAME \
  --name $CONNECTED_REGISTRY_RW \
  --parent-protocol https

Ve výchozím nastavení informace o nastavení nezahrnují heslo tokenu synchronizace , které je také potřeba k nasazení připojeného registru. Volitelně můžete vygenerovat jedno z hesel předáním parametru --generate-password 1 nebo generate-password 2 . Uložte vygenerované heslo na bezpečné místo. Nelze jej znovu načíst.

Upozornění

Opětovné vygenerování hesla obmění přihlašovací údaje tokenu synchronizace. Pokud jste nakonfigurovali zařízení pomocí předchozího hesla, musíte konfiguraci aktualizovat.

Výstup příkazu zahrnuje připojovací řetězec registru a související nastavení. Následující příklad výstupu ukazuje připojovací řetězec pro připojený registr myconnectedregistry s nadřazeným registrem contosoregistry:

{
  "ACR_REGISTRY_CONNECTION_STRING": "ConnectedRegistryName=myconnectedregistry;SyncTokenName=myconnectedregistry-sync-token;SyncTokenPassword=xxxxxxxxxxxxxxxx;ParentGatewayEndpoint=contosoregistry.eastus.data.azurecr.io;ParentEndpointProtocol=https"
}

Konfigurace manifestu nasazení pro IoT Edge

Manifest nasazení je dokument JSON, který popisuje, které moduly se mají nasadit do IoT Edge zařízení. Další informace najdete v tématu Vysvětlení způsobu použití, konfigurace a opakovaného použití modulů IoT Edge.

Pokud chcete nasadit moduly připojeného registru a proxy serveru rozhraní API pomocí Azure CLI, uložte následující manifest nasazení místně jako manifest.json soubor. Cestu k souboru v další části použijete při spuštění příkazu, který použije konfiguraci pro vaše zařízení.

Nastavení modulu připojeného registru

  • Pomocí přihlašovacích údajů tokenu a připojovacího řetězce z předchozích částí aktualizujte příslušné hodnoty JSON v env uzlu.

  • Následující proměnné prostředí jsou v env uzlu volitelné:

    Proměnná Popis
    ACR_REGISTRY_LOGIN_SERVER Určuje jedinečný název hostitele nebo plně kvalifikovaný název domény. Pokud se použije, přijímá připojený registr pouze požadavky na tuto hodnotu přihlašovacího serveru.

    Pokud není zadaná žádná hodnota, pak se k připojenému registru dostanete pomocí libovolné hodnoty přihlašovacího serveru.
    ACR_REGISTRY_CERTIFICATE_VOLUME Pokud bude váš připojený registr přístupný prostřednictvím protokolu HTTPS, odkazuje na svazek, ve kterém jsou uložené certifikáty HTTPS.

    Pokud není nastavené, výchozí umístění je /var/acr/certs.
    ACR_REGISTRY_DATA_VOLUME Přepíše výchozí umístění /var/acr/data , do kterého budou image uloženy připojeným registrem.

    Toto umístění musí odpovídat vazbě svazku pro kontejner.

    Důležité

    Pokud připojený registr naslouchá na portu jiném než 80 a 443, ACR_REGISTRY_LOGIN_SERVER musí hodnota (pokud je zadána) obsahovat port. Příklad: 192.168.0.100:8080.

  • Pokud HostPort se nepoužívá modul proxy rozhraní API, měla by se nastavit vazba pro připojený registr. Příklad:

     "createOptions": "{\"HostConfig\":{\"Binds\":[\"/home/azureuser/connected-registry:/var/acr/data\"],\"PortBindings\":{\"8080/tcp\":[{\"HostPort\":\"8080\"}]}}}"
    

Nastavení modulu proxy rozhraní API

  • Proxy rozhraní API bude naslouchat na portu 8000 nakonfigurovaného jako NGINX_DEFAULT_PORT. Další informace o nastavení proxy serveru rozhraní API najdete v úložišti IoT Edge GitHubu.
{
    "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
                }
            }
        }
    }
}

Nasazení modulů připojeného registru a proxy rozhraní API na IoT Edge

Pomocí následujícího příkazu nasaďte moduly připojeného registru a proxy serveru rozhraní API na IoT Edge zařízení pomocí manifestu nasazení vytvořeného v předchozí části. Zadejte ID zařízení IoT Edge nejvyšší vrstvy a název IoT Hub, kde je uvedeno.

# 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

Podrobnosti najdete v tématu Nasazení modulů Azure IoT Edge pomocí Azure CLI.

Ke kontrole stavu připojeného registru použijte následující příkaz az acr connected-registry show . Název připojeného registru je hodnota $CONNECTED_REGISTRY_RW.

az acr connected-registry show \
  --registry $REGISTRY_NAME \
  --name $CONNECTED_REGISTRY_RW \
  --output table

Po úspěšném nasazení se v připojeném registru zobrazí stav Online.

Další kroky

V tomto rychlém startu jste zjistili, jak nasadit připojený registr do IoT Edge zařízení. Pokračujte k dalším průvodcům, kde se dozvíte, jak načíst image z nově nasazeného připojeného registru nebo jak nasadit připojený registr na vnořená IoT Edge zařízení.