Noções básicas sobre implantações do IoT Edge para dispositivos únicos ou em escala

Aplica-se a:IoT Edge 1.4 checkmark IoT Edge 1.4

Importante

A versão com suporte é a IoT Edge 1.4. Se você estiver em uma versão anterior, confira Atualizar o IoT Edge.

As implantações automáticas e a implantação em camadas ajudam a gerenciar e a 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 o aplica a um dispositivo específico por nome. O segundo método consiste em 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 define a quais dispositivos ele se aplica com base nas marcas do dispositivo gêmeo.

Você não pode combinar implantações por dispositivo e implantações automáticas. Depois de começar a direcionar os dispositivos IoT Edge com implantações automáticas (com ou sem implantações em camadas), não há mais suporte para implantações por dispositivo.

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

As etapas de implantação básicas 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 do Hub IoT recupera o status dos dispositivos do IoT Edge e as disponibiliza para o operador. Por exemplo, um operador pode ver quando um dispositivo do Edge não está configurado ou se um módulo falha durante o runtime.
  4. A qualquer momento, quando os 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 no monitoramento de uma implantação. Para obter instruções de criação e atualização de uma implantação, confira Implantar e monitorar os módulos do IoT Edge em larga escala.

Implantação

Uma implantação automática do IoT Edge atribui imagens do módulo do IoT Edge para execução como instâncias em um conjunto de dispositivos IoT Edge de destino. 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 de dispositivo) ou a um grupo de dispositivos (com base em marcas). Depois que um dispositivo IoT Edge recebe um manifesto de implantação, ele baixa e instala as imagens de contêiner dos repositórios do respectivo contêiner e os configura adequadamente. Depois de criar uma implantação, um operador pode monitorar o status da implantação para ver se os dispositivos de destino estão configurados corretamente.

Somente os dispositivos do IoT Edge podem ser configurados com uma implantação. Os pré-requisitos seguintes devem estar no dispositivo antes de ele poder receber a implantação:

  • O sistema operacional base
  • Um sistema de gerenciamento de contêiner, como Moby ou Docker
  • Provisionamento do runtime do IoT Edge

Manifesto de implantaçã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 do sistema necessários (especificamente o agente do 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 reinicialização
  • Imagem ou registro de contêiner
  • Rotas para dados de entrada e saída

Se o módulo de imagem for armazenado em um registro de contêiner privado, o agente IoT Edge segura as credenciais de registro.

Condição de destino

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 é reativada se o serviço detectar qualquer alteração de 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 êxito nesses 10 dispositivos. O status do agente de IoT Edge mostra 10 dispositivos no total, 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 detecta a alteração e o status do agente do 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 booliana em marcas de dispositivo gêmeo, propriedades relatadas de dispositivo gêmeo ou deviceId para selecionar os dispositivos de destino. Se você quiser usar uma condição com tags, será necessário adicionar uma "tags":{} seção no gêmeo do dispositivo no mesmo nível das propriedades. Para obter mais informações sobre marcas em um gêmeo de dispositivo, consulte Entender 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 de destino:

  • deviceId ='linuxprod1'
  • tags.environment ='prod'
  • tags.environment = 'prod' E tags.location = 'westus'
  • tags.environment = 'prod' OU tags.location = 'westus'
  • tags.operator = 'John' AND tags.environment = 'prod' AND NOT deviceId = 'linuxprod1'
  • properties.reported.devicemodel = '4000x'
  • IS_DEFINED(tags.remote)
  • NÃO IS_DEFINED(tags.location.building)
  • tags.environment != null
  • [none]

Considere estas restrições ao criar 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.
  • Aspas simples representam os valores da condição de destino. Portanto, você deve usar as aspas simples com outras aspas simples se isso fizer parte do nome do dispositivo. Por exemplo, para um dispositivo de destino chamado operator'sDevice, escreva deviceId='operator''sDevice'.
  • Números, letras e os caracteres a seguir são permitidos nos valores de 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 inteiro positivo dentro do intervalo de 0 a 2.147.483.647. Números maiores denotam uma prioridade maior. Se um dispositivo IoT Edge é afetado 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 é afetado com duas ou mais implantações com a mesma prioridade, a implantação criada mais recentemente (determinada pelo carimbo de hora de criação) se aplica.

Rótulos

Os rótulos são pares de 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. Os rótulos são opcionais e não afetam a configuração dos dispositivos IoT Edge.

Métricas

Por padrão, todas as implantações se reportam em quatro métricas:

  • Direcionado mostra os dispositivos IoT Edge que correspondem à condição de destino da implantação.
  • Aplicado mostra os dispositivos IoT Edge de destino que não são direcionados por outra implantação de prioridade mais alta.
  • O Relatório de Sucesso mostra os dispositivos do IoT Edge que relatam seus módulos como implantados com êxito.
  • Falha de Relatório mostra os dispositivos do IoT Edge que relatam um ou mais módulos como implantados sem êxito. Para investigar o erro mais detalhadamente, conecte-se remotamente a esses dispositivos e exiba os arquivos de log.

Além disso, você pode definir as próprias métricas personalizadas para 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 relatadas do módulo gêmeo 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

Implantações em camadas são implantações automáticas que podem ser combinadas para reduzir o número de implantações individuais que precisam ser criadas. Elas úteis quando os mesmos módulos são reutilizados em combinações diferentes em muitas implantações automáticas.

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, quando duas implantações em camadas tem um módulo ou uma rota com o mesmo nome, a implantação em camadas com a prioridade mais alta é aplicada e a de prioridade mais baixa é 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 as implantações em camadas podem ser adicionadas.

Um dispositivo IoT Edge pode aplicar 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 mais alta do que a implantação automática para esse dispositivo.

Por exemplo, considere o cenário a seguir de uma empresa que gerencia 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 edifícios deles podem usar todos os três módulos. Usando implantações automáticas padrão, a empresa precisa criar implantações individuais para todas as combinações de módulo de que os edifícios precisam.

Screenshot of showing that standard automatic deployments need to accommodate every module combination.

No entanto, uma vez que a empresa alterna para implantações automáticas em camadas, ela pode criar as mesmas combinações de módulos para seus edifícios com menos implantações para gerenciar. Cada módulo tem a própria implantação em camadas, e as marcas de dispositivo identificam quais módulos são adicionados a cada edifício.

Screenshot that shows how layered automatic deployments simplify scenarios where the same modules are combined in different ways.

Configuração do módulo gêmeo

Ao trabalhar com implantações em camadas, você pode, intencionalmente ou não, ter duas implantações com o mesmo módulo destinado a um dispositivo. Nesses casos, você pode decidir se a implantação de prioridade mais alta deve substituir o módulo ou ser acrescentada a ele. 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 módulo gêmeo que permitam que esses 10 dispositivos se comuniquem de forma segura sem substituir as informações do módulo gêmeo atual da implantação de base.

Você pode acrescentar as propriedades desejadas do módulo gêmeo ao 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 o instruem a enviar dados em intervalos de 5 segundos:

"SimulatedTemperatureSensor": {
  "properties.desired": {
    "SendData": true,
    "SendInterval": 5
  }
}

Em uma implantação em camadas destinada 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. O objetivo não é substituir as propriedades existentes. Portanto, você cria uma nova seção dentro das propriedades desejadas chamada layeredProperties com 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 qualquer implantação de prioridade mais baixa.

Distribuição em fases

Uma distribuição em fases é um processo geral no qual um operador implanta alterações em um conjunto maior de dispositivos IoT Edge. O objetivo é fazer mudanças gradualmente para reduzir o risco de fazer mudanças de quebra em larga 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 marca de gêmeo de dispositivo como tag.environment='test'. O ambiente de teste deve espelhar o ambiente de produção que a que se destinará a implantação.
  2. Crie uma implantação, incluindo as configurações e os módulos desejados. A condição de destino deve ter como destino o ambiente de teste do dispositivo IoT Edge.
  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 marca à condição de destino. Além disso, verifique se a prioridade da implantação é maior do que outras implantações atualmente destinadas 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 ter como destino todos os dispositivos IoT Edge de produção restantes.

Reversão

As implantações podem ser revertidas em se você receber erros ou problemas de configuração. Como uma implantação define a configuração absoluta do módulo para um dispositivo do IoT Edge, outras implantações também devem estar voltadas para o mesmo dispositivo em uma prioridade mais baixa, mesmo se o objetivo é 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, a exclusão de uma implantação poderá 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 a atualização para a implantação subjacente, potencialmente removendo módulos.

Por exemplo, um dispositivo tem a implantação base A e a implantações em camadas O e M aplicadas a ele (para que as implantações de A, O e M sejam implantadas no dispositivo). Se a implantação em camadas M for excluída, A e O serão aplicados ao dispositivo e os módulos exclusivos à implantação M serão removidos.

Execute as reversões na sequência abaixo:

  1. Confirme que uma segunda implantação também tem como destino o mesmo conjunto de dispositivos. Se a meta da reversão é remover todos os módulos, a segunda implantação não deve incluir todos os módulos.
  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 à condição de destino.
  3. Verifique se a reversão teve êxito exibindo o status da implantação.
    • A implantação revertida não deve mostrar o status dos dispositivos que foram revertidos.
    • A segunda implantação agora deve incluir o status da implantação dos dispositivos que foram revertidos.

Próximas etapas