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

V tomto rychlém startu pomocí Azure CLI nasadíte připojený registr jako modul na zařízení Azure IoT Edge. Zařízení IoT Edge má přístup k nadřazené registru kontejneru Azure v cloudu.

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

Požadavky

Import imagí do cloudového registru

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

Připojená image registru

Aby bylo možné podporovat vnořené scénáře IoT Edge, musí být image kontejneru pro připojený modul runtime 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

Image proxy služby IoT Edge a rozhraní API

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

Modul proxy rozhraní API služby IoT Edge umožňuje zařízení IoT Edge zpřístupnit 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

Pro testování připojeného registru naimportujte hello-world image. Toto úložiště se bude synchronizovat s připojeným registrem a vyžádá se připojenými klienty 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 zařízení IoT Edge je potřeba 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í potřebné k instalaci připojeného registru. Následující příklad určuje HTTPS jako nadřazený protokol. Tento protokol se vyžaduje v případě, že nadřazený registr je cloudový registr.

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

Ve výchozím nastavení informace o nastavení neobsahují 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 nebo generate-password 2 parametru--generate-password 1. Uložte vygenerované heslo do bezpečného umístění. Nelze jej znovu načíst.

Upozorňující

Opětovné vygenerování hesla otočí přihlašovací údaje synchronizačního tokenu. 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 připojeného registru s názvem 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 popisující moduly, které se mají nasadit do zařízení IoT Edge. Další informace najdete v tématu Vysvětlení způsobu použití, konfigurace a opětovného použití modulů IoT Edge.

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

Nastavení připojeného modulu registru

  • Pomocí přihlašovacích údajů tokenu a připojovací řetězec z předchozích částí aktualizujte relevantní 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žívá, připojený registr přijímá pouze požadavky provedené na tuto hodnotu přihlašovacího serveru.

    Pokud není zadaná žádná hodnota, bude mít připojený registr přístup s libovolnou hodnotou přihlašovacího serveru.
    ACR_REGISTRY_CERTIFICATE_VOLUME Pokud bude připojený registr přístupný přes PROTOKOL HTTPS, odkazuje na svazek, ve kterém jsou uložené certifikáty HTTPS.

    Pokud není nastaveno, výchozí umístění je /var/acr/certs.
    ACR_REGISTRY_DATA_VOLUME Přepíše výchozí umístění /var/acr/data , kam 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 GitHubu 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
                }
            }
        }
    }
}

Nasazení připojených modulů registru a proxy serveru rozhraní API ve službě IoT Edge

Pomocí následujícího příkazu nasaďte připojené moduly registru a proxy serveru rozhraní API na zařízení IoT Edge pomocí manifestu nasazení vytvořeného v předchozí části. Zadejte ID zařízení nejvyšší vrstvy IoT Edge a název ioT Hubu, 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.

Pokud chcete zkontrolovat stav 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í zobrazuje připojený registr stav Online.

Další kroky

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