Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: IoT Edge 1.5
Importante
O IoT Edge 1.5 LTS é a versão com suporte. O IoT Edge 1.4 LTS atingirá o fim da vida útil em 12 de novembro de 2024. Se você estiver em uma versão anterior, confira Atualizar o IoT Edge.
Os dispositivos IoT Edge enviam solicitações HTTPS para se comunicarem com o Hub IoT. Se o dispositivo se conectar a uma rede que usa um servidor proxy, configure o runtime do IoT Edge para se comunicar por meio do servidor. Os servidores proxy também poderão afetar módulos individuais do IoT Edge se fizerem solicitações HTTP ou HTTPS que não são roteados por meio do hub do IoT Edge.
Este artigo explica as quatro etapas para configurar e gerenciar um dispositivo IoT Edge por trás de um servidor proxy:
Instalar o runtime do IoT Edge no dispositivo
Os scripts de instalação do IoT Edge extraem pacotes e arquivos da Internet para que o dispositivo se comunique por meio do servidor proxy para fazer essas solicitações. Nos dispositivos Windows, o script de instalação também oferece uma opção de instalação offline.
Esta etapa é um processo único para configurar o dispositivo IoT Edge ao configurá-lo pela primeira vez. Você também precisa dessas mesmas conexões ao atualizar o runtime do IoT Edge.
Configurar o IoT Edge e o runtime de contêiner no dispositivo
O IoT Edge lida com comunicações com o Hub IoT. O runtime de contêiner gerencia contêineres e se comunica com registros de contêiner. Esses dois componentes precisam fazer solicitações da Web por meio do servidor proxy.
Esta etapa é um processo único para configurar o dispositivo IoT Edge ao configurá-lo pela primeira vez.
Configurar as propriedades do agente do IoT Edge no arquivo de configuração do dispositivo
A princípio, o daemon do IoT Edge inicia o módulo edgeAgent. Em seguida, o módulo edgeAgent recupera o manifesto de implantação do Hub IoT e inicia todos os outros módulos. Configure manualmente as variáveis de ambiente do módulo edgeAgent no dispositivo para que o agente do IoT Edge faça a conexão inicial com o Hub IoT. Depois da conexão inicial, você pode configurar o módulo edgeAgent remotamente.
Esta etapa é um processo único para configurar o dispositivo IoT Edge ao configurá-lo pela primeira vez.
-
Depois de configurar e conectar um dispositivo IoT Edge ao Hub IoT por meio do servidor proxy, mantenha a conexão em todas as implantações futuras do módulo.
Esta etapa é um processo contínuo feito remotamente. Portanto, todos as novas atualizações de módulo ou implantação manterão a capacidade do dispositivo de se comunicar por meio do servidor proxy.
Saber a sua URL do proxy
Antes de iniciar as etapas neste artigo, conheça a URL do proxy.
As URLs de proxy usam o seguinte formato: protocol://proxy_host:proxy_port.
O protocolo é HTTP ou HTTPS. O daemon do Docker pode usar qualquer um dos protocolos dependendo das configurações do registro de contêiner, mas o daemon do IoT Edge e os contêineres de runtime sempre usam HTTP para se conectar ao proxy.
O proxy_host é o endereço do servidor proxy. Se o servidor proxy exigir autenticação, forneça suas credenciais como parte do host proxy no seguinte formato: proxy_host de usuário:senha@.
O proxy_port é a porta de rede em que o proxy responde ao tráfego.
Instalar o IoT Edge por meio de um proxy
Se o dispositivo IoT Edge for executado no Windows ou linux, acesse os pacotes de instalação por meio do servidor proxy. Dependendo do sistema operacional, siga as etapas para instalar o runtime do IoT Edge por meio de um servidor proxy.
Dispositivos do Linux
Se você estiver instalando o runtime do IoT Edge em um dispositivo Linux, configure o gerenciador de pacotes para usar o servidor proxy para acessar o pacote de instalação. Por exemplo, Configurar o apt-get para usar um proxy http. Depois de configurar o gerenciador de pacotes, siga as instruções na instalação do runtime do Azure IoT Edge.
Dispositivos Windows que usam o IoT Edge para Linux no Windows
Se você estiver instalando o runtime do IoT Edge usando o IoT Edge para Linux no Windows, o runtime do IoT Edge será instalado por padrão em sua máquina virtual Linux. Não é necessário instalar nem atualizar outras etapas.
Dispositivos Windows que usam contêineres do Windows
Se você estiver instalando o runtime do IoT Edge em um dispositivo Windows, precisará passar duas vezes pelo servidor proxy. A primeira conexão baixa o arquivo de script do instalador e a segunda conexão baixa os componentes necessários durante a instalação. Você pode configurar as informações de proxy nas configurações do Windows ou incluir as informações de proxy diretamente nos comandos do PowerShell.
As etapas a seguir mostram um exemplo de uma instalação do Windows usando o -proxy
argumento:
O comando Invoke-WebRequest precisa de informações de proxy para acessar o script do instalador. Em seguida, o comando Deploy-IoTEdge precisa das informações de proxy para fazer download dos arquivos de instalação.
. {Invoke-WebRequest -proxy <proxy URL> -useb aka.ms/iotedge-win} | Invoke-Expression; Deploy-IoTEdge -proxy <proxy URL>
O comando Initialize-IoTEdge não precisa passar pelo servidor proxy. Portanto, a segunda etapa somente requer informações de proxy para o Invoke-WebRequest.
. {Invoke-WebRequest -proxy <proxy URL> -useb aka.ms/iotedge-win} | Invoke-Expression; Initialize-IoTEdge
Se as credenciais do servidor proxy forem complexas e não puderem ser incluídas na URL, use o -ProxyCredential
parâmetro dentro -InvokeWebRequestParameters
. Por exemplo,
$proxyCredential = (Get-Credential).GetNetworkCredential()
. {Invoke-WebRequest -proxy <proxy URL> -ProxyCredential $proxyCredential -useb aka.ms/iotedge-win} | Invoke-Expression; `
Deploy-IoTEdge -InvokeWebRequestParameters @{ '-Proxy' = '<proxy URL>'; '-ProxyCredential' = $proxyCredential }
Para obter mais informações sobre parâmetros de proxy, consulte Invoke-WebRequest.
Configurar IoT Edge e Moby
O IoT Edge usa dois daemons em execução no dispositivo IoT Edge. O daemon Moby obtém imagens de contêiner de registros de contêiner. O daemon do IoT Edge se comunica com o Hub IoT.
Configure os daemons do Moby e do IoT Edge para usar o servidor proxy para a funcionalidade contínua do dispositivo. Execute esta etapa no dispositivo IoT Edge durante a instalação inicial.
Daemon do Moby
Como o Moby é criado no Docker, consulte a documentação do Docker para configurar o daemon moby com variáveis de ambiente. A maioria dos registros de contêiner, incluindo o DockerHub e os Registros de Contêiner do Azure, dá suporte a solicitações HTTPS, portanto, defina o parâmetro HTTPS_PROXY . Se você está obtendo imagens de um registro que não dão suporte ao protocolo TLS (TLS), você deve definir o parâmetro HTTP_PROXY.
Selecione o artigo que se aplica ao sistema operacional do dispositivo IoT Edge:
- Configurar o daemon do Docker no Linux Em dispositivos Linux, o daemon moby ainda é chamado de Docker.
- Configurar o daemon do Docker no Windows O daemon do Moby em dispositivos Windows é chamado de iotedge-moby. Os nomes são diferentes porque é possível executar o Docker Desktop e o Moby paralelamente em um dispositivo Windows.
Daemon do IoT Edge
O daemon do IoT Edge é semelhante ao daemon do Moby. Use as etapas a seguir para definir uma variável de ambiente para o serviço, com base em seu sistema operacional.
O daemon do IoT Edge sempre usa HTTPS para enviar solicitações ao Hub IoT.
Linux
No terminal, abra um editor para configurar o daemon do IoT Edge.
sudo systemctl edit aziot-edged
Insira o texto a seguir, substituindo <URL do proxy> pelo endereço e pela porta do seu servidor proxy. Em seguida, salve e saia.
[Service]
Environment="https_proxy=<proxy URL>"
Da versão 1.2 em diante, o IoT Edge usa o serviço de identidade de IoT para lidar com o provisionamento de dispositivos com o Hub IoT ou o Serviço de Provisionamento de Dispositivos no Hub IoT. Abra um editor no terminal para configurar o daemon do serviço de identidade do IoT Edge.
sudo systemctl edit aziot-identityd
Insira o texto a seguir, substituindo <URL do proxy> pelo endereço e pela porta do seu servidor proxy. Em seguida, salve e saia.
[Service]
Environment="https_proxy=<proxy URL>"
Atualize o gerenciador de serviços para escolher as novas configurações.
sudo systemctl daemon-reload
Reinicie os serviços do sistema do IoT Edge para aplicar as alterações a ambos os daemons.
sudo iotedge system restart
Verifique se as variáveis de ambiente e a nova configuração estão presentes.
systemctl show --property=Environment aziot-edged
systemctl show --property=Environment aziot-identityd
Windows que usa o IoT Edge para Linux no Windows
Entre no IoT Edge para Linux na máquina virtual do Windows:
Connect-EflowVm
Siga as mesmas etapas da seção Linux deste artigo para configurar o daemon do IoT Edge.
Windows que usa contêineres do Windows
Abra uma janela do PowerShell como administrador e execute o seguinte comando para editar o registro com a nova variável de ambiente. Substitua <URL do proxy> pelo endereço e pela porta do seu servidor proxy.
reg add HKLM\SYSTEM\CurrentControlSet\Services\iotedge /v Environment /t REG_MULTI_SZ /d https_proxy=<proxy URL>
Reinicie o IoT Edge para que as alterações entrem em vigor.
Restart-Service iotedge
Configurar o dispositivo IoT Edge
O agente IoT Edge é o primeiro módulo a ser iniciado em qualquer dispositivo IoT Edge. Este módulo é iniciado pela primeira vez com base nas informações no arquivo de configuração do IoT Edge. O agente do IoT Edge então se conecta ao Hub IoT para recuperar manifestos de implantação. O manifesto declara quais outros módulos o dispositivo deve implantar.
Essa etapa ocorre uma vez no dispositivo IoT Edge durante a configuração inicial do dispositivo.
Abra o arquivo de configuração no dispositivo IoT Edge:
/etc/aziot/config.toml
. Você precisa de privilégios administrativos para acessar o arquivo de configuração. Em sistemas Linux, use o comandosudo
antes de abrir o arquivo no seu editor de texto preferido.No arquivo de configuração, localize a
[agent]
seção, que contém todas as informações de configuração do módulo edgeAgent que serão usadas na inicialização. Verifique se a[agent]
seção não tem comentários. Se a seção[agent]
estiver ausente, adicione-a aoconfig.toml
. A definição do agente do IoT Edge inclui uma subseção[agent.env]
na qual é possível adicionar variáveis de ambiente.Adicione o parâmetro https_proxy à seção de variáveis de ambiente e defina a URL do proxy como seu valor.
[agent] name = "edgeAgent" type = "docker" [agent.config] image = "mcr.microsoft.com/azureiotedge-agent:1.5" [agent.env] # "RuntimeLogLevel" = "debug" # "UpstreamProtocol" = "AmqpWs" "https_proxy" = "<proxy URL>"
O runtime do IoT Edge usa AMQP por padrão para se comunicar com o Hub IoT. Alguns servidores proxy bloqueiam as portas AMQP. Se for esse o caso, você também precisará configurar o edgeAgent para usar o AMQP em WebSocket. Remova o comentário do
UpstreamProtocol
parâmetro.[agent.config] image = "mcr.microsoft.com/azureiotedge-agent:1.5" [agent.env] # "RuntimeLogLevel" = "debug" "UpstreamProtocol" = "AmqpWs" "https_proxy" = "<proxy URL>"
Adicione o parâmetro https_proxy à seção de variáveis de ambiente e defina a URL de proxy com o valor dele.
[agent] name = "edgeAgent" type = "docker" [agent.config] image = "mcr.microsoft.com/azureiotedge-agent:1.5" [agent.env] # "RuntimeLogLevel" = "debug" # "UpstreamProtocol" = "AmqpWs" "https_proxy" = "<proxy URL>"
O runtime do IoT Edge usa o AMQP por padrão para falar com o IoT Hub. Alguns servidores proxy bloqueiam as portas AMQP. Se for esse o caso, você também precisará configurar o edgeAgent para usar o AMQP em WebSocket. Remova a marca de comentário do parâmetro
UpstreamProtocol
.[agent.config] image = "mcr.microsoft.com/azureiotedge-agent:1.5" [agent.env] # "RuntimeLogLevel" = "debug" "UpstreamProtocol" = "AmqpWs" "https_proxy" = "<proxy URL>"
Salve as alterações e feche o editor. Aplique as alterações.
sudo iotedge config apply
Verifique se as configurações de proxy são aplicadas usando
docker inspect edgeAgent
na seçãoEnv
. Caso contrário, você deve recriar o contêiner.sudo docker rm -f edgeAgent
O runtime do IoT Edge recria o
edgeAgent
em menos de um minuto. Depois que o contêineredgeAgent
estiver sendo executado novamente, use o comandodocker inspect edgeAgent
para verificar se as configurações de proxy correspondem ao arquivo de configuração.
Configurar manifestos de implantação
Depois de configurar seu dispositivo IoT Edge para trabalhar com o servidor proxy, declare a variável de ambiente HTTPS_PROXY em manifestos de implantação futuros. Você pode editar os manifestos de implantação usando o assistente do portal do Azure ou editando um arquivo JSON de manifesto de implantação.
Sempre configure os dois módulos de runtime, edgeAgent e edgeHub, para se comunicarem por meio do servidor proxy para que eles mantenham uma conexão com o Hub IoT. Se você remover as informações de proxy do módulo edgeAgent, a única maneira de restabelecer a conexão é editar o arquivo de configuração no dispositivo, conforme descrito na seção anterior.
Além dos módulos edgeAgent e edgeHub, outros módulos podem precisar da configuração de proxy. Os módulos que acessam recursos do Azure além do Hub IoT, como o armazenamento de blobs, devem especificar a variável HTTPS_PROXY no arquivo de manifesto de implantação.
Este procedimento se aplica ao longo da vida útil do dispositivo IoT Edge.
Portal do Azure
Quando você usa o assistente Configurar módulos para criar implantações de dispositivos IoT Edge, cada módulo tem uma seção Variáveis de Ambiente na qual você pode configurar as conexões do servidor proxy.
Para configurar os módulos do hub do IoT Edge e do agente do IoT Edge, escolha Configurações do Runtime na primeira etapa do assistente.
Adicione a variável de ambiente https_proxy às definições de configurações de runtime de ambos os módulos: agente do IoT Edge e hub do IoT Edge. Se você incluir a variável de ambiente UpstreamProtocol no arquivo de configuração em seu dispositivo IoT Edge, adicione-a à definição do módulo do agente do IoT Edge também.
Todos os outros módulos adicionados a um manifesto de implantação seguem o mesmo padrão. Selecione Aplicar para salvar as alterações.
Arquivos de manifesto de implantação de JSON
Se você criar implantações para dispositivos IoT Edge usando os modelos no Visual Studio Code ou criando manualmente arquivos JSON, poderá adicionar as variáveis de ambiente diretamente a cada definição de módulo. Se você não adicioná-los no portal do Azure, adicione-os aqui ao arquivo de manifesto JSON. Substitua <proxy URL>
pelo seu valor.
Use o seguinte formato JSON:
"env": {
"https_proxy": {
"value": "<proxy URL>"
}
}
Com as variáveis de ambiente incluídas, a definição do módulo se parece com o seguinte exemplo do edgeHub:
"edgeHub": {
"type": "docker",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-hub:1.5",
"createOptions": "{}"
},
"env": {
"https_proxy": {
"value": "http://proxy.example.com:3128"
}
},
"status": "running",
"restartPolicy": "always"
}
Se você incluiu a variável de ambiente UpstreamProtocol no arquivo config.yaml em seu dispositivo IoT Edge, inclua isso na definição do módulo do agente do IoT Edge também.
"env": {
"https_proxy": {
"value": "<proxy URL>"
},
"UpstreamProtocol": {
"value": "AmqpWs"
}
}
Trabalhar com proxies de inspeção de tráfego
Alguns proxies, como o Zscaler, podem inspecionar o tráfego criptografado por TLS. Durante a inspeção de tráfego do TLS, o certificado retornado pelo proxy não é o certificado do servidor de destino, mas sim o certificado assinado pelo próprio certificado raiz do proxy. Por padrão, os módulos do IoT Edge (incluindo edgeAgent e edgeHub) não confiam no certificado desse proxy e o handshake do TLS falha.
Para corrigir o handshake com falha, configure o sistema operacional e os módulos do IoT Edge para confiar no certificado raiz do proxy seguindo estas etapas.
Configure o certificado do proxy no repositório de certificados raiz confiáveis do sistema operacional do host. Para saber como instalar um certificado raiz, confira Instalar a AC raiz no repositório de certificados do sistema operacional.
Configure seu dispositivo IoT Edge para se comunicar por meio de um servidor proxy fazendo referência ao certificado no pacote de confiança. Para obter mais informações sobre como configurar o conjunto de confiança, consulte Gerenciar Autoridade Certificadora raiz confiável (conjunto de confiança).
Para configurar o suporte de proxy de inspeção de tráfego para contêineres não gerenciados pelo IoT Edge, entre em contato com seu provedor proxy.
FQDNs (nomes de domínio totalmente qualificados) dos destinos com os quais o IoT Edge se comunica
Se o firewall do seu proxy exigir a adição de todos os FQDNs à lista de permissões para conectividade à internet, revise a lista em Permitir conexões de dispositivos IoT Edge para determinar quais FQDNs adicionar.
Próximas etapas
Saiba mais sobre as funções do runtime do IoT Edge.
Solucionar problemas de instalação e erros de configuração em problemas e resoluções comuns para o Azure IoT Edge.