Compreender as implantações automáticas do IoT Edge para dispositivos individuais ou em escala

Aplica-se a:Marca de verificação do IoT Edge 1.5 IoT Edge 1.5 Marca de verificação do IoT Edge 1.4 IoT Edge 1.4

Importante

IoT Edge 1.5 LTS e IoT Edge 1.4 LTS são versões suportadas. O IoT Edge 1.4 LTS termina a vida útil em 12 de novembro de 2024. Se tiver uma versão anterior, consulte Atualizar IoT Edge.

As implantações automáticas e a implantação em camadas ajudam a gerenciar e configurar módulos em um grande número de dispositivos IoT Edge.

O Azure IoT Edge fornece duas maneiras de configurar os módulos para serem executados em dispositivos IoT Edge. O primeiro método é implantar módulos por dispositivo. Você cria um manifesto de implantação e, em seguida, aplica-o a um dispositivo específico pelo nome. O segundo método é implantar módulos automaticamente em qualquer dispositivo registrado que atenda a um conjunto de condições definidas. Você cria um manifesto de implantação e, em seguida, define a quais dispositivos ele se aplica com base em tags no gêmeo de dispositivo.

Não é possível combinar implantações automáticas e por dispositivo. Depois de começar a segmentar dispositivos IoT Edge com implantações automáticas (com ou sem implantações em camadas), as implantações por dispositivo não são mais suportadas.

Este artigo se concentra na configuração e monitoramento de frotas de dispositivos, coletivamente chamadas de implantações automáticas do IoT Edge.

As etapas básicas de implantação são as seguintes:

  1. Um operador define um manifesto de implantação que descreve um conjunto de módulos e os dispositivos de destino.
  2. Como resultado, o serviço Hub IoT se comunica com todos os dispositivos de destino para configurá-los com os módulos declarados.
  3. O serviço Hub IoT recupera o status dos dispositivos IoT Edge e os disponibiliza para o 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.
  4. A qualquer momento, quando dispositivos IoT Edge recém-direcionados ficam online e se conectam ao Hub IoT, eles são configurados para a implantação.

Este artigo descreve cada componente envolvido na configuração e monitoramento de uma implantação. Para obter um passo a passo sobre como criar e atualizar uma implantação, consulte Implantar e monitorar módulos do IoT Edge em escala.

Implementação

Uma implantação automática do IoT Edge atribui imagens do módulo IoT Edge para serem executadas como instâncias em um conjunto direcionado de dispositivos IoT Edge. A implantação automatizada configura um manifesto de implantaçã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). Depois que um dispositivo IoT Edge recebe um manifesto de implantação, ele baixa e instala as imagens de contêiner dos respetivos repositórios de contêiner e as configura de acordo. 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.

Somente dispositivos IoT Edge podem ser configurados com uma implantaçã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 tempo de execução do IoT Edge

Manifesto de implementação

Um manifesto de implantação é um documento JSON que descreve os módulos a serem configurados nos dispositivos IoT Edge de destino. Ele 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
  • Status (por exemplo, Em execução 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 em um registro de contêiner privado, o agente do IoT Edge manterá as credenciais do Registro.

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 implantação será reativada se o serviço detetar qualquer alteração na condição de destino.

Por exemplo, você tem uma implantação com uma condição tags.environment = 'prod'de destino . Quando você inicia a implantação, há 10 dispositivos de produção. Os módulos são instalados com sucesso nestes 10 dispositivos. O status do agente IoT Edge mostra 10 dispositivos totais, 10 respostas bem-sucedidas, 0 respostas de falha e 0 respostas pendentes. Agora você adiciona mais cinco dispositivos com tags.environment = 'prod'o . O serviço deteta a alteração e o status do agente IoT Edge agora mostra 15 dispositivos totais, 10 respostas bem-sucedidas, 0 respostas de falha e 5 respostas pendentes enquanto implanta nos cinco novos dispositivos.

Se uma implantação não tiver nenhuma condição de destino, ela será aplicada a nenhum dispositivo.

Use qualquer condição booleana em tags gêmeas de dispositivo, propriedades relatadas de gêmeos de dispositivo ou deviceId para selecionar os dispositivos de destino. Se você quiser usar uma condição com tags, você precisa adicionar uma "tags":{} seção no dispositivo gêmeo sob o mesmo nível de propriedades. Para obter mais informações sobre tags em um dispositivo gêmeo, consulte Compreender e usar gêmeos de dispositivo no Hub IoT. Para obter mais informações sobre operações de consulta, consulte Operadores de linguagem de consulta do Hub IoT e função IS_DEFINED.

Exemplos de condições-alvo:

  • deviceId ='linuxprod1'
  • tags.environment ='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 de destino. 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, escreva deviceId='operator''sDevice'.
  • Números, letras e os seguintes caracteres são permitidos nos valores da condição de destino: "()<>@,;:\\"/?={} \t\n\r.
  • Os seguintes caracteres não são permitidos nas chaves de condição de destino:/;.

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 um dispositivo IoT Edge for direcionado por mais de uma implantação, a implantação com a prioridade mais alta será aplicada. Implantações com prioridades mais baixas não são aplicadas, nem são mescladas. Se um dispositivo for direcionado com duas ou mais implantações com prioridade igual, 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 você pode usar para filtrar e agrupar implantaçõ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:

  • Direcionado mostra os dispositivos IoT Edge que correspondem à condição de segmentação de Implantação.
  • Aplicado mostra os dispositivos IoT Edge direcionados que não são direcionados por outra implantação de prioridade mais alta.
  • O Reporting Success mostra os dispositivos IoT Edge que relatam seus módulos como implantados com êxito.
  • Relatório de Falha mostra os dispositivos IoT Edge que relatam um ou mais módulos como implantados sem êxito. 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 relatar como resultado da aplicação de uma configuração de implantação. As métricas podem consultar propriedades de relatórios gêmeos do módulo edgeHub, como lastDesiredStatus ou lastConnectTime.

Por exemplo:

SELECT deviceId FROM devices
  WHERE properties.reported.lastDesiredStatus.code = 200

Adicionar 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 for 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 direcionado por uma implantação em camadas, primeiro precisa de uma implantação automática padrão aplicada a ele. 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 e apenas uma implantação automática padrão, mas pode aplicar várias implantaçõ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 coletar dados de câmeras 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.

Captura de tela mostrando que as implantações automáticas padrão precisam acomodar todas as combinações de módulos.

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.

Captura de tela que mostra como implantações automáticas em camadas simplificam cenários em que os mesmos módulos são combinados de maneiras diferentes.

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 aplica o mesmo módulo a 100 dispositivos diferentes. No entanto, 10 desses dispositivos estão em instalações seguras e precisam de configuração adicional para se comunicar através de servidores proxy. Você pode usar uma implantação em camadas para adicionar propriedades de gêmeos de módulo que permitem que esses 10 dispositivos se comuniquem com segurança sem substituir as informações de gêmeos de módulo existentes da implantação base.

Você pode acrescentar propriedades desejadas de gêmeo de módulo no manifesto de implantação. Em uma implantação padrão, você adicionaria propriedades na seçã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 1000 mensagens e, em seguida, parar. Você não deseja substituir as propriedades existentes, portanto, cria uma nova seção dentro das propriedades desejadas chamada layeredProperties, que contém a nova propriedade:

"SimulatedTemperatureSensor": {
  "properties.desired.layeredProperties": {
    "StopAfterCount": 1000
  }
}

Um dispositivo que tenha ambas as implantações aplicadas refletirá as seguintes propriedades no módulo gêmeo para o sensor de temperatura simulado:

"properties": {
  "desired": {
    "SendData": true,
    "SendInterval": 5,
    "layeredProperties": {
      "StopAfterCount": 1000
    }
  }
}

Se você definir o campo do módulo gêmeo properties.desired em uma implantação em camadas, properties.desired substituirá as propriedades desejadas para esse módulo em todas as implantações de prioridade mais baixa.

Implementação faseada

Uma distribuição em fases é um processo geral pelo qual um operador implanta alterações em um conjunto ampliado de dispositivos IoT Edge. O objetivo é fazer mudanças gradualmente para reduzir o risco de fazer mudanças de rutura em grande escala. As implantações automáticas ajudam a gerenciar distribuições em fases em uma frota de dispositivos IoT Edge.

Uma distribuição em fases é executada nas seguintes fases e etapas:

  1. Estabeleça um ambiente de teste de dispositivos IoT Edge provisionando-os e definindo uma tag gêmea de dispositivo como tag.environment='test'. O ambiente de teste deve espelhar o ambiente de produção que a implantação acabará por atingir.
  2. Crie uma implantação incluindo os módulos e configurações desejados. A condição de segmentação deve ter como alvo o ambiente de dispositivo IoT Edge de teste.
  3. Valide a nova configuração do módulo no ambiente de teste.
  4. Atualize a implantação para incluir um subconjunto de dispositivos IoT Edge de produção adicionando uma nova tag à condição de segmentação. 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.
  5. Verifique se a implantação foi bem-sucedida nos dispositivos IoT Edge de destino exibindo o status da implantação.
  6. Atualize a implantaçã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 implantação define a configuração absoluta do módulo para um dispositivo IoT Edge, uma implantação adicional também deve ser direcionada para o mesmo dispositivo com uma prioridade mais baixa, 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 implantação em camadas remove sua atualização para a implantação subjacente, potencialmente removendo 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.

Execute reversões na seguinte sequência:

  1. 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.
  2. Modifique ou remova a expressão de condição de destino da implantação que você deseja reverter para que os dispositivos não atendam mais à condição de segmentação.
  3. 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