Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:
IoT Edge 1.5
Importante
IoT Edge 1.5 LTS é a versão suportada. O IoT Edge 1.4 LTS atingiu o fim de vida útil a 12 de novembro de 2024. Se estiveres a usar uma versão anterior, vê Update IoT Edge.
Implementações automáticas e implantações em camadas ajudam-no a gerir e configurar módulos em grandes quantidades de dispositivos IoT Edge.
O Azure IoT Edge oferece duas formas de configurar os módulos para correrem em dispositivos IoT Edge. O primeiro método é implantar módulos por dispositivo. Você cria um manifesto de implantação e, em seguida, aplica esse manifesto a um dispositivo específico identificado pelo nome. O segundo método é implantar módulos automaticamente em qualquer dispositivo registrado que atenda a um conjunto de condições definidas. Crias um manifesto de implementação e depois defines a que dispositivos se aplica com base nas tags do dispositivo gémeo.
Não é possível combinar implantações automáticas e por dispositivo. Assim que começar a direcionar dispositivos IoT Edge com implementações automáticas (com ou sem implantações em camadas), as implementações por dispositivo deixam de ser suportadas.
Este artigo foca-se na configuração e monitorização de frotas de dispositivos, coletivamente denominadas implementações automáticas de IoT Edge.
As etapas básicas de implantação são as seguintes:
- Um operador define um manifesto de implantação que descreve um conjunto de módulos e os dispositivos de destino.
- Como resultado, o serviço IoT Hub comunica com todos os dispositivos alvo para os configurar com os módulos declarados.
- O serviço IoT Hub recupera o estado dos dispositivos IoT Edge e disponibiliza-os ao operador. Por exemplo, um operador pode ver quando um dispositivo Edge não está configurado com êxito ou se um módulo falha durante o tempo de execução.
- A qualquer momento, quando dispositivos IoT Edge recém-direcionados entram em funcionamento e se ligam ao IoT Hub, estão configurados para a implementação.
Este artigo descreve cada componente envolvido na configuração e monitoramento de uma implantação. Para um guia de criação e atualização de uma implementação, consulte Deploye módulos de IoT Edge em escala usando o portal Azure.
Implementação
Uma implementação automática do IoT Edge atribui imagens de módulos IoT Edge para serem executadas como instâncias num conjunto específico de dispositivos IoT Edge. A implementação automatizada configura um manifesto de implementação do IoT Edge para incluir uma lista de módulos com os parâmetros de inicialização correspondentes. Uma implantação pode ser atribuída a um único dispositivo (com base na ID do dispositivo) ou a um grupo de dispositivos (com base em tags). Assim que um dispositivo IoT Edge recebe um manifesto de implementação, descarrega e instala as imagens dos contentores dos respetivos repositórios de contentores, configurando-as em conformidade. Depois que uma implantação é criada, um operador pode monitorar o status da implantação para ver se os dispositivos de destino estão configurados corretamente.
Apenas dispositivos IoT Edge podem ser configurados com uma implementação. Os seguintes pré-requisitos devem estar no dispositivo antes que ele possa receber a implantação:
- O sistema operacional de base
- Um sistema de gerenciamento de contêineres, como Moby ou Docker
- Provisionamento do ambiente de execução do IoT Edge
Manifesto de implementação
Um manifesto de implementação é um documento JSON que descreve os módulos a configurar nos dispositivos IoT Edge alvo. Contém os metadados de configuração para todos os módulos, incluindo os módulos de sistema necessários (especificamente o agente IoT Edge e o hub IoT Edge).
Os metadados de configuração para cada módulo incluem:
- Versão
- Tipo
- Estado (por exemplo, A Correr ou Parado)
- Política de reinício
- Registo de imagens e contentores
- Rotas para entrada e saída de dados
Se a imagem do módulo estiver armazenada num registo privado de contentores, o agente IoT Edge detém as credenciais do registo.
Condição-alvo
A condição do dispositivo de destino é avaliada continuamente durante toda a vida útil da implantação. Todos os novos dispositivos que atendem aos requisitos são incluídos e todos os dispositivos existentes que não atendem mais aos requisitos são removidos. A implementação é reativada se o serviço identificar qualquer alteração nas condições-alvo.
Por exemplo, tem uma implantação com uma condição alvo tags.environment = 'prod'. Quando você inicia a implantação, há 10 dispositivos de produção. Os módulos são instalados com sucesso nestes 10 dispositivos. O estado do agente IoT Edge mostra 10 dispositivos no total, 10 respostas bem-sucedidas, 0 respostas a falhas e 0 respostas pendentes. Agora adiciona mais cinco dispositivos com tags.environment = 'prod'. O serviço deteta a alteração e o estado do agente IoT Edge mostra agora 15 dispositivos no total, 10 respostas bem-sucedidas, 0 respostas a falhas e 5 respostas pendentes enquanto é implementado para os cinco novos dispositivos.
Se uma implantação não tiver condições de destino, ela não será aplicada a dispositivo algum.
Utilize qualquer condição booleana em tags de gêmeo de dispositivo, propriedades relatadas do gêmeo de dispositivo ou ID do dispositivo para selecionar os dispositivos-alvo. Se quiseres usar uma condição com etiquetas, precisas de adicionar uma "tags":{} secção no dispositivo gémeo sob o mesmo nível das propriedades. Para mais informações sobre etiquetas num dispositivo gémeo, veja Compreender e usar dispositivos gémeos em IoT Hub. Para mais informações sobre operações de consulta, consulte os operadores da linguagem de consulta IoT Hub e a função IS_DEFINED.
Exemplos de condições-alvo:
- deviceId ='linuxprod1'
- etiquetas.ambiente ='prod'
- tags.environment = 'prod' E tags.location = 'westus'
- tags.environment = 'prod' OU tags.location = 'westus'
- tags.operator = 'John' E tags.environment = 'prod' E NÃO deviceId = 'linuxprod1'
- properties.reported.devicemodel = '4000x'
- IS_DEFINED(tags.remote)
- NÃO IS_DEFINED(tags.location.building)
- tags.environment != nulo
- [nenhum]
Considere estas restrições ao construir uma condição de destino:
- No gêmeo de dispositivo, você só pode criar uma condição de destino usando tags, propriedades relatadas ou deviceId.
- Aspas duplas não são permitidas em nenhuma parte da condição alvo. Use aspas simples.
- As aspas simples representam os valores da condição de destino. Portanto, você deve escapar da aspa única com outra aspa única se ela fizer parte do nome do dispositivo. Por exemplo, para direcionar um dispositivo chamado
operator'sDevice, escrevadeviceId='operator''sDevice'. - Números, letras e os seguintes caracteres são permitidos em valores de condição alvo:
"()<>@,;:\\"/?={} \t\n\r. - Os seguintes caracteres não são permitidos nas chaves de condição de alvo:
/;
Prioridade
Uma prioridade define se uma implantação deve ser aplicada a um dispositivo de destino em relação a outras implantações. Uma prioridade de implantação é um número inteiro positivo dentro do intervalo de 0 a 2.147.483.647. Números maiores denotam uma prioridade maior. Se mais do que uma implementação tiver como alvo um dispositivo IoT Edge, aplica-se a implementação com a maior prioridade. Implantações com prioridades mais baixas não são aplicadas, nem são mescladas. Se um dispositivo for alvo de duas ou mais implantações com igual prioridade, a implantação criada mais recentemente (determinada pelo carimbo de data/hora de criação) será aplicada.
Etiquetas
Os rótulos são pares chave/valor de cadeia de caracteres que pode usar para filtrar e agrupar implementações. Uma implantação pode ter vários rótulos. As etiquetas são opcionais e não afetam a configuração dos dispositivos IoT Edge.
Métricas
Por padrão, todas as implantações relatam quatro métricas:
- Targeted mostra os dispositivos IoT Edge que correspondem à condição de direcionamento da implantação.
- Applied mostra os dispositivos IoT Edge alvo que não são alvo de outra implementação de maior prioridade.
- Reporting Success mostra os IoT Edge dispositivos que reportam os seus módulos como implementados com sucesso.
- Reporting Failure mostra os IoT Edge dispositivos que reportam um ou mais módulos como implementados sem sucesso. Para investigar melhor o erro, conecte-se remotamente a esses dispositivos e visualize os arquivos de log.
Além disso, você pode definir suas próprias métricas personalizadas para ajudar a monitorar e gerenciar a implantação.
As métricas fornecem contagens resumidas dos vários estados que os dispositivos podem devolver como resultado da aplicação de uma configuração de implementação. As métricas podem consultar propriedades gémeas reportadas do módulo edgeHub, como lastDesiredStatus ou lastConnectTime.
Por exemplo:
SELECT deviceId FROM devices
WHERE properties.reported.lastDesiredStatus.code = 200
Adicionar as suas próprias métricas é opcional e não afeta a configuração real dos dispositivos IoT Edge.
Implantação em camadas
As implantações em camadas são implantações automáticas que podem ser combinadas para reduzir o número de implantações exclusivas que precisam ser criadas. As implantações em camadas são úteis em cenários em que os mesmos módulos são reutilizados em combinações diferentes em muitas implantações automáticas.
As implantações em camadas têm os mesmos componentes básicos que qualquer implantação automática. Eles segmentam dispositivos com base em tags nos gêmeos de dispositivos e fornecem a mesma funcionalidade em relação a rótulos, métricas e relatórios de status. As implantações em camadas também têm prioridades atribuídas a elas. Em vez de usar a prioridade para determinar qual implantação é aplicada a um dispositivo, a prioridade determina como várias implantações são classificadas em um dispositivo. Por exemplo, se duas implantações em camadas tiverem um módulo ou uma rota com o mesmo nome, a implantação em camadas com a prioridade mais alta será aplicada enquanto a prioridade mais baixa será substituída.
Os módulos de tempo de execução do sistema, conhecidos como edgeAgent e edgeHub, não são configurados como parte de uma implantação em camadas. Qualquer dispositivo IoT Edge visado por uma implementação em camadas necessita primeiro de uma implementação automática padrão. A implantação automática fornece a base sobre a qual implantações em camadas podem ser adicionadas.
Um dispositivo IoT Edge pode aplicar uma única implementação automática padrão, mas pode aplicar múltiplas implementações automáticas em camadas. Todas as implantações em camadas direcionadas a um dispositivo devem ter uma prioridade maior do que a implantação automática desse dispositivo.
Por exemplo, considere o seguinte cenário de uma empresa que administra edifícios. A empresa desenvolveu módulos IoT Edge para recolha de dados de câmaras de segurança, sensores de movimento e elevadores. No entanto, nem todos os seus edifícios podem usar os três módulos. Com implantações automáticas padrão, a empresa precisa criar implantações individuais para todas as combinações de módulos que seus edifícios precisam.
No entanto, uma vez que a empresa muda para implantações automáticas em camadas, elas podem criar as mesmas combinações de módulos para seus edifícios com menos implantações para gerenciar. Cada módulo tem sua própria implantação em camadas, e as tags de dispositivo identificam quais módulos são adicionados a cada edifício.
Configuração dupla do módulo
Ao trabalhar com implantações em camadas, você pode, intencionalmente ou não, ter duas implantações com o mesmo módulo direcionadas a um dispositivo. Nesses casos, você pode decidir se a implantação de prioridade mais alta deve substituir o módulo gêmeo ou anexá-lo. Por exemplo, você pode ter uma implantação que aplique o mesmo módulo a 100 dispositivos diferentes. No entanto, 10 desses dispositivos estão em instalações seguras e precisam de configuração extra para se comunicar através de servidores proxy. Você pode usar uma implementação em camadas para adicionar propriedades de gêmeos de módulo, permitindo que esses 10 dispositivos se comuniquem com segurança, sem substituir a informação existente de gêmeos de módulo da implementação base.
Você pode acrescentar propriedades desejadas do gémeo do módulo no manifesto de implementação. Numa implementação padrão, adicionarias propriedades na secção properties.desired do módulo gémeo. Mas em uma implantação em camadas, você pode declarar um novo subconjunto de propriedades desejadas.
Por exemplo, em uma implantação padrão, você pode adicionar o módulo de sensor de temperatura simulado com as seguintes propriedades desejadas que informam a ele para enviar dados em intervalos de 5 segundos:
"SimulatedTemperatureSensor": {
"properties.desired": {
"SendData": true,
"SendInterval": 5
}
}
Em uma implantação em camadas direcionada a alguns ou a todos esses mesmos dispositivos, você pode adicionar uma propriedade que diga ao sensor simulado para enviar 1.000 mensagens e, em seguida, parar. Não quer sobrescrever as propriedades existentes, por isso cria uma nova secção dentro das propriedades desejadas chamada layeredProperties, que contém a nova propriedade:
"SimulatedTemperatureSensor": {
"properties.desired.layeredProperties": {
"StopAfterCount": 1000
}
}
Um dispositivo que tem ambas as implantações aplicadas reflete as seguintes propriedades no módulo gêmeo para o sensor de temperatura simulado:
"properties": {
"desired": {
"SendData": true,
"SendInterval": 5,
"layeredProperties": {
"StopAfterCount": 1000
}
}
}
Se definires o properties.desired campo do módulo gémeo numa implantação em camadas, properties.desired sobrescreve as propriedades desejadas para esse módulo em quaisquer implantações de menor prioridade.
Implementação faseada
Uma implementação faseada é um processo global pelo qual um operador implementa alterações num conjunto crescente de dispositivos IoT Edge. O objetivo é fazer mudanças gradualmente para reduzir o risco de provocar mudanças disruptivas em grande escala. As implementações automáticas ajudam a gerir implementações faseadas numa frota de dispositivos IoT Edge.
Uma implementação faseada é realizada nas seguintes fases e etapas:
- Estabeleça um ambiente de teste de dispositivos IoT Edge, provisionando-os e definindo uma etiqueta gémea para o dispositivo como
tag.environment='test'. O ambiente de teste deve espelhar o ambiente de produção que a implantação eventualmente visa. - Crie uma implantação incluindo os módulos e configurações desejados. A condição de direcionamento deve direcionar o ambiente do dispositivo IoT Edge de teste.
- Valide a nova configuração do módulo no ambiente de teste.
- Atualize a implementação para incluir um subconjunto de dispositivos IoT Edge de produção, adicionando uma nova etiqueta à condição de direcionamento. Além disso, certifique-se de que a prioridade para a implantação seja maior do que outras implantações atualmente direcionadas a esses dispositivos.
- Verifique se a implementação foi bem-sucedida nos dispositivos IoT Edge visados, consultando o estado da implementação.
- Atualize a implementação para direcionar todos os dispositivos IoT Edge de produção restantes.
Reversão
As implantações podem ser revertidas se você receber erros ou configurações incorretas. Como uma implementação define a configuração absoluta de módulos para um dispositivo IoT Edge, uma implementação extra deve também ser direcionada para o mesmo dispositivo com prioridade inferior, mesmo que o objetivo seja remover todos os módulos.
A exclusão de uma implantação não remove os módulos dos dispositivos de destino. Deve haver outra implantação que defina uma nova configuração para os dispositivos, mesmo que seja uma implantação vazia.
No entanto, excluir uma implantação pode remover módulos do dispositivo de destino se for uma implantação em camadas. Uma implantação em camadas atualiza a implantação subjacente, potencialmente adicionando módulos. A remoção de uma distribuição em camadas remove a sua atualização para a distribuição subjacente, podendo remover módulos.
Por exemplo, um dispositivo tem a implantação base A e implantações em camadas O e M aplicadas a ele (para que as implantações A, O e M sejam implantadas no dispositivo). Se a implantação em camadas M for excluída, A e O serão aplicados no dispositivo e os módulos exclusivos da implantação M serão removidos.
Realize reversões na seguinte sequência:
- Confirme se uma segunda implantação também é direcionada ao mesmo conjunto de dispositivos. Se o objetivo da reversão for remover todos os módulos, a segunda implantação não deverá incluir nenhum módulo.
- Modifique ou remova a expressão da condição de destino da implementação que pretende reverter, de modo a que os dispositivos deixem de cumprir a condição de destino.
- Verifique se a reversão foi bem-sucedida exibindo o status da implantação.
- A implantação revertida não deve mais mostrar o status dos dispositivos que foram revertidos.
- A segunda implantação agora deve incluir o status de implantação para os dispositivos que foram revertidos.
Próximos passos
- Percorra os passos para criar, atualizar ou eliminar uma implementação em Implemente módulos de IoT Edge em escala usando o portal Azure.
- Aprenda mais sobre outros conceitos IoT Edge como os módulos de runtime IoT Edge e IoT Edge.