Guia de início rápido: implantar um registro conectado em um dispositivo IoT Edge (a ser preterido)
Neste início rápido, você usa a CLI do Azure para implantar um registro conectado como um módulo em um dispositivo Azure IoT Edge. O dispositivo IoT Edge pode acessar o registro de contêiner pai do Azure na nuvem.
Para obter uma visão geral do uso de um registro conectado com o IoT Edge, consulte Usando o registro conectado com o Azure IoT Edge. Esse cenário corresponde a um dispositivo na camada superior de uma hierarquia do IoT Edge.
Pré-requisitos
Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, consulte Guia de início rápido para Bash no Azure Cloud Shell.
Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.
Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.
Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.
Hub IoT do Azure e dispositivo IoT Edge. Para conhecer as etapas de implantação, consulte Guia de início rápido: implantar seu primeiro módulo IoT Edge em um dispositivo Linux virtual.
Importante
Para obter acesso posterior aos módulos implantados no dispositivo IoT Edge, certifique-se de abrir as portas 8000, 5671 e 8883 no dispositivo. Para obter as etapas de configuração, consulte Como abrir portas para uma máquina virtual com o portal do Azure.
Recurso de registo ligado no Azure. Para conhecer as etapas de implantação, consulte guias de início rápido usando a CLI do Azure ou o portal do Azure.
- Um registro conectado em qualquer um ou
ReadWrite
ReadOnly
modo pode ser usado nesse cenário. - Nos comandos neste artigo, o nome do Registro conectado é armazenado na variável de ambiente CONNECTED_REGISTRY_RW.
- Um registro conectado em qualquer um ou
Importar imagens para o seu registo na nuvem
Importe as seguintes imagens de contêiner para seu registro na nuvem usando o comando az acr import . Ignore esta etapa se você já importou essas imagens.
Imagem de registo ligada
Para dar suporte a cenários aninhados do IoT Edge, a imagem do contêiner para o tempo de execução do Registro conectado deve estar disponível em seu registro de contêiner privado do Azure. Use o comando az acr import para importar a imagem do registro conectado para seu registro privado.
# 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
Imagens de proxy do IoT Edge e da API
Para dar suporte ao registro conectado no IoT Edge aninhado, você precisa implantar módulos para o IoT Edge e o proxy de API. Importe estas imagens para o seu registo privado.
O módulo de proxy da API do IoT Edge permite que um dispositivo IoT Edge exponha vários serviços usando o protocolo HTTPS na mesma porta, como 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
Imagem hello-world
Para testar o registro conectado, importe a hello-world
imagem. Este repositório será sincronizado com o registro conectado e puxado pelos clientes de registro conectados.
az acr import \
--name $REGISTRY_NAME \
--source mcr.microsoft.com/hello-world:1.1.2
Recuperar configuração do Registro conectado
Antes de implantar o Registro conectado no dispositivo IoT Edge, você precisa recuperar as definições de configuração do recurso do Registro conectado no Azure.
Use o comando az acr connected-registry get-settings para obter as informações de configurações necessárias para instalar um registro conectado. O exemplo a seguir especifica HTTPS como o protocolo pai. Este protocolo é necessário quando o registo principal é um registo na nuvem.
az acr connected-registry get-settings \
--registry $REGISTRY_NAME \
--name $CONNECTED_REGISTRY_RW \
--parent-protocol https
Por padrão, as informações de configurações não incluem a senha do token de sincronização, que também é necessária para implantar o registro conectado. Opcionalmente, gere uma das senhas passando o --generate-password 1
parâmetro ou generate-password 2
. Guarde a palavra-passe gerada num local seguro. Não pode ser recuperado novamente.
Aviso
A regeneração de uma senha gira as credenciais do token de sincronização. Se você configurou um dispositivo usando a senha anterior, precisará atualizar a configuração.
A saída do comando inclui a cadeia de conexão do Registro e as configurações relacionadas. O exemplo de saída a seguir mostra a cadeia de conexão para o registro conectado chamado myconnectedregistry com o registro pai contosoregistry:
{
"ACR_REGISTRY_CONNECTION_STRING": "ConnectedRegistryName=myconnectedregistry;SyncTokenName=myconnectedregistry-sync-token;SyncTokenPassword=xxxxxxxxxxxxxxxx;ParentGatewayEndpoint=contosoregistry.eastus.data.azurecr.io;ParentEndpointProtocol=https"
}
Configurar um manifesto de implantação para o IoT Edge
Um manifesto de implantação é um documento JSON que descreve quais módulos implantar no dispositivo IoT Edge. Para obter mais informações, consulte Compreender como os módulos do IoT Edge podem ser usados, configurados e reutilizados.
Para implantar o registro conectado e os módulos de proxy de API usando a CLI do Azure, salve o seguinte manifesto de implantação localmente como um manifest.json
arquivo. Você usará o caminho do arquivo na próxima seção quando executar o comando para aplicar a configuração ao seu dispositivo.
Configurações do módulo do Registro conectado
Use as credenciais de token e a cadeia de conexão das seções anteriores para atualizar os valores JSON relevantes no
env
nó.As seguintes variáveis de ambiente são opcionais no
env
nó:Variável Description ACR_REGISTRY_LOGIN_SERVER
Especifica um nome de host exclusivo ou FQDN. Se usado, o registro conectado só aceita solicitações feitas para esse valor de servidor de login.
Se nenhum valor for fornecido, o registro conectado poderá ser acessado com qualquer valor de servidor de login.ACR_REGISTRY_CERTIFICATE_VOLUME
Se o seu registro conectado estiver acessível via HTTPS, aponte para o volume onde os certificados HTTPS estão armazenados.
Se não estiver definido, o local padrão será/var/acr/certs
.ACR_REGISTRY_DATA_VOLUME
Substitui o local /var/acr/data
padrão onde as imagens serão armazenadas pelo registro conectado.
Esse local deve corresponder à associação de volume para o contêiner.Importante
Se o registro conectado escuta em uma porta diferente de 80 e 443, o
ACR_REGISTRY_LOGIN_SERVER
valor (se especificado) deve incluir a porta. Exemplo:192.168.0.100:8080
.Uma
HostPort
associação para o registro conectado deve ser definida se o módulo de proxy da API não for usado. Exemplo:"createOptions": "{\"HostConfig\":{\"Binds\":[\"/home/azureuser/connected-registry:/var/acr/data\"],\"PortBindings\":{\"8080/tcp\":[{\"HostPort\":\"8080\"}]}}}"
Configurações do módulo de proxy da API
- O proxy da API escutará na porta 8000 configurada como
NGINX_DEFAULT_PORT
. Para obter mais informações sobre as configurações de proxy da API, consulte o repositório GitHub do 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
}
}
}
}
}
Implantar o registro conectado e os módulos de proxy de API no IoT Edge
Use o comando a seguir para implantar o registro conectado e os módulos de proxy de API no dispositivo IoT Edge, usando o manifesto de implantação criado na seção anterior. Forneça a ID do dispositivo de camada superior do IoT Edge e o nome do Hub IoT onde indicado.
# 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
Para obter detalhes, consulte Implantar módulos do Azure IoT Edge com a CLI do Azure.
Para verificar o status do registro conectado, use o seguinte comando az acr connected-registry show . O nome do registro conectado é o valor de $CONNECTED_REGISTRY_RW.
az acr connected-registry show \
--registry $REGISTRY_NAME \
--name $CONNECTED_REGISTRY_RW \
--output table
Após a implantação bem-sucedida, o registro conectado mostra um status de Online
.
Próximos passos
Neste guia de início rápido, você aprendeu como implantar um registro conectado em um dispositivo IoT Edge. Continue para os próximos guias para saber como extrair imagens do registro conectado recém-implantado ou implantar o registro conectado em dispositivos IoT Edge aninhados.