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
Użyj środowiska powłoki Bash w usłudze Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Szybki start dotyczący powłoki Bash w usłudze Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj interfejs wiersza polecenia platformy Azure. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do interfejsu wiersza polecenia platformy Azure za pomocą polecenia az login. Aby ukończyć proces uwierzytelniania, wykonaj kroki wyświetlane w terminalu. Aby uzyskać inne opcje logowania, zobacz Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure.
Po wyświetleniu monitu zainstaluj rozszerzenie interfejsu wiersza polecenia platformy Azure podczas pierwszego użycia. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Korzystanie z rozszerzeń w interfejsie wiersza polecenia platformy Azure.
Uruchom polecenie az version, aby znaleźć zainstalowane wersje i biblioteki zależne. Aby uaktualnić do najnowszej wersji, uruchom polecenie az upgrade.
Usługa Azure IoT Hub i urządzenie usługi IoT Edge. Aby uzyskać instrukcje wdrażania, zobacz Szybki start: wdrażanie pierwszego modułu usługi IoT Edge na wirtualnym urządzeniu z systemem Linux.
Ważne
Aby uzyskać później dostęp do modułów wdrożonych na urządzeniu usługi IoT Edge, upewnij się, że na urządzeniu otwarto porty 8000, 5671 i 8883. Aby uzyskać instrukcje konfiguracji, zobacz Jak otworzyć porty na maszynie wirtualnej za pomocą witryny Azure Portal.
Zasób rejestru połączonego na platformie Azure. Aby uzyskać instrukcje wdrażania, zobacz Przewodniki Szybki start przy użyciu interfejsu wiersza polecenia platformy Azure lub witryny Azure Portal.
- W tym scenariuszu można użyć połączonego rejestru w
ReadWrite
trybie lubReadOnly
. - W poleceniach w tym artykule nazwa połączonego rejestru jest przechowywana w zmiennej środowiskowej CONNECTED_REGISTRY_RW.
- W tym scenariuszu można użyć połączonego rejestru w
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ęźle
env
.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.