Udostępnij za pośrednictwem


Szybki start: wdrażanie połączonego rejestru na urządzeniu usługi IoT Edge (aby zostać wycofane)

W tym przewodniku Szybki start użyjesz interfejsu wiersza polecenia platformy Azure do wdrożenia połączonego rejestru jako modułu na urządzeniu usługi Azure IoT Edge. Urządzenie usługi IoT Edge może uzyskać dostęp do nadrzędnego rejestru kontenerów platformy Azure w chmurze.

Aby zapoznać się z omówieniem korzystania z połączonego rejestru z usługą IoT Edge, zobacz Używanie połączonego rejestru z usługą Azure IoT Edge. Ten scenariusz odpowiada urządzeniu w górnej warstwie hierarchii usługi IoT Edge.

Wymagania wstępne

Importowanie obrazów do rejestru w chmurze

Zaimportuj następujące obrazy kontenerów do rejestru w chmurze przy użyciu polecenia az acr import . Pomiń ten krok, jeśli te obrazy zostały już zaimportowane.

Obraz połączonego rejestru

Aby obsługiwać zagnieżdżone scenariusze usługi IoT Edge, obraz kontenera dla połączonego środowiska uruchomieniowego rejestru musi być dostępny w prywatnym rejestrze kontenerów platformy Azure. Za pomocą polecenia az acr import zaimportuj połączony obraz rejestru do rejestru prywatnego.

# 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

Obrazy serwera proxy usługi IoT Edge i interfejsu API

Aby obsługiwać połączony rejestr w zagnieżdżonym usłudze IoT Edge, należy wdrożyć moduły dla serwera proxy usługi IoT Edge i interfejsu API. Zaimportuj te obrazy do rejestru prywatnego.

Moduł serwera proxy interfejsu API usługi IoT Edge umożliwia urządzeniu usługi IoT Edge uwidocznienie wielu usług przy użyciu protokołu HTTPS na tym samym porcie, takim jak 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

Obraz hello-world

Aby przetestować połączony rejestr, zaimportuj hello-world obraz. To repozytorium zostanie zsynchronizowane z połączonym rejestrem i pobrane przez połączonych klientów rejestru.

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

Pobieranie konfiguracji połączonego rejestru

Przed wdrożeniem połączonego rejestru na urządzeniu usługi IoT Edge należy pobrać ustawienia konfiguracji z połączonego zasobu rejestru na platformie Azure.

Użyj polecenia az acr connected-registry get-settings, aby uzyskać informacje o ustawieniach wymaganych do zainstalowania połączonego rejestru. Poniższy przykład określa protokół HTTPS jako protokół nadrzędny. Ten protokół jest wymagany, gdy rejestr nadrzędny jest rejestrem w chmurze.

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

Domyślnie informacje o ustawieniach nie zawierają hasła tokenu synchronizacji, które jest również wymagane do wdrożenia połączonego rejestru. Opcjonalnie wygeneruj jedno z haseł, przekazując --generate-password 1 parametr or generate-password 2 . Zapisz wygenerowane hasło w bezpiecznej lokalizacji. Nie można go pobrać ponownie.

Ostrzeżenie

Ponowne generowanie hasła obraca poświadczenia tokenu synchronizacji. Jeśli urządzenie zostało skonfigurowane przy użyciu poprzedniego hasła, musisz zaktualizować konfigurację.

Dane wyjściowe polecenia obejmują parametry połączenia rejestru i powiązane ustawienia. W poniższych przykładowych danych wyjściowych przedstawiono parametry połączenia dla połączonego rejestru o nazwie myconnectedregistry z rejestrem nadrzędnym contosoregistry:

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

Konfigurowanie manifestu wdrożenia dla usługi IoT Edge

Manifest wdrożenia to dokument JSON opisujący moduły do wdrożenia na urządzeniu usługi IoT Edge. Aby uzyskać więcej informacji, zobacz Opis sposobu używania, konfigurowania i ponownego używania modułów usługi IoT Edge.

Aby wdrożyć połączone moduły rejestru i serwera proxy interfejsu API przy użyciu interfejsu wiersza polecenia platformy Azure, zapisz następujący manifest wdrożenia lokalnie jako manifest.json plik. Ścieżka pliku zostanie użyta w następnej sekcji po uruchomieniu polecenia w celu zastosowania konfiguracji do urządzenia.

Ustawienia połączonego modułu rejestru

  • Użyj poświadczeń tokenu i parametry połączenia z poprzednich sekcji, aby zaktualizować odpowiednie wartości JSON w węźleenv.

  • Następujące zmienne środowiskowe są opcjonalne w węźle env :

    Zmienna opis
    ACR_REGISTRY_LOGIN_SERVER Określa unikatową nazwę hosta lub nazwę FQDN. Jeśli jest używany, połączony rejestr akceptuje tylko żądania wysyłane do tej wartości serwera logowania.

    Jeśli nie podano żadnej wartości, można uzyskać dostęp do połączonego rejestru przy użyciu dowolnej wartości serwera logowania.
    ACR_REGISTRY_CERTIFICATE_VOLUME Jeśli połączony rejestr będzie dostępny za pośrednictwem protokołu HTTPS, wskazuje wolumin, w którym są przechowywane certyfikaty HTTPS.

    Jeśli nie zostanie ustawiona, domyślna lokalizacja to /var/acr/certs.
    ACR_REGISTRY_DATA_VOLUME Zastępuje domyślną lokalizację /var/acr/data , w której obrazy będą przechowywane przez połączony rejestr.

    Ta lokalizacja musi być zgodna z powiązaniem woluminu dla kontenera.

    Ważne

    Jeśli połączony rejestr nasłuchuje na porcie innym niż 80 i 443, ACR_REGISTRY_LOGIN_SERVER wartość (jeśli określono) musi zawierać port. Przykład: 192.168.0.100:8080.

  • HostPort Jeśli moduł serwera proxy interfejsu API nie jest używany, należy ustawić powiązanie dla połączonego rejestru. Przykład:

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

Ustawienia modułu proxy interfejsu API

  • Serwer proxy interfejsu API nasłuchuje na porcie 8000 skonfigurowanym jako NGINX_DEFAULT_PORT. Aby uzyskać więcej informacji na temat ustawień serwera proxy interfejsu API, zobacz repozytorium GitHub usługi 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
                }
            }
        }
    }
}

Wdrażanie połączonych modułów rejestru i serwera proxy interfejsu API w usłudze IoT Edge

Użyj następującego polecenia, aby wdrożyć połączone moduły rejestru i serwera proxy interfejsu API na urządzeniu usługi IoT Edge przy użyciu manifestu wdrożenia utworzonego w poprzedniej sekcji. Podaj identyfikator urządzenia najwyższego warstwy usługi IoT Edge oraz nazwę centrum IoT Hub, w którym wskazano.

# 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

Aby uzyskać szczegółowe informacje, zobacz Wdrażanie modułów usługi Azure IoT Edge przy użyciu interfejsu wiersza polecenia platformy Azure.

Aby sprawdzić stan połączonego rejestru, użyj następującego polecenia az acr connected-registry show . Nazwa połączonego rejestru to wartość $CONNECTED_REGISTRY_RW.

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

Po pomyślnym wdrożeniu połączony rejestr wyświetla stan Online.

Następne kroki

W tym przewodniku Szybki start przedstawiono sposób wdrażania połączonego rejestru na urządzeniu usługi IoT Edge. Przejdź do następnych przewodników, aby dowiedzieć się, jak ściągać obrazy z nowo wdrożonego połączonego rejestru lub wdrożyć połączony rejestr na zagnieżdżonych urządzeniach usługi IoT Edge.