Partilhar via


Início rápido: Executar operações de Azure IoT em GitHub Codespaces com K3s

Neste quickstart, implementa o Operações IoT do Azure num cluster Kubernetes compatível com Azure Arc, para que possa gerir remotamente os seus dispositivos e cargas de trabalho. No final do início rápido, você tem um cluster que pode gerenciar a partir da nuvem. O restante dos inícios rápidos desta série de ponta a ponta se baseia nesta para definir ativos de exemplo, pipelines de processamento de dados e visualizações.

Antes de começar

Esta série de quickstarts destina-se a ajudá-lo a começar com o Operações IoT do Azure o mais rapidamente possível, para que possa avaliar um cenário de ponta a ponta. Em um verdadeiro ambiente de desenvolvimento ou produção, várias equipes trabalhando juntas executam essas tarefas e algumas tarefas podem exigir permissões elevadas.

Para a melhor nova experiência de utilizador, recomendamos usar uma conta Azure gratuita para que tenha permissões de proprietário sobre os recursos nestes inícios rápidos.

Usamos o GitHub Codespaces como ambiente virtual para este quickstart, para que possas testar o cenário sem teres de instalar novas ferramentas nas tuas próprias máquinas. No entanto, se quiser implementar Operações IoT do Azure num cluster local no Ubuntu ou Azure Kubernetes Service (AKS), veja Prepare o seu cluster Kubernetes com Azure Arc habilitado.

Importante

Codespaces são fáceis de configurar rapidamente e desmontar mais tarde, mas não são adequados para produção, avaliação de desempenho ou testes de escala. Use o GitHub Codespaces apenas para exploração.

O ambiente Codespaces é suficiente para completar os passos de início rápido, mas não suporta configurações avançadas como definições seguras. Veja estes scripts em GitHub para uma implementação pronta para produção com definições seguras.

Pré-requisitos

Antes de começar, prepare os seguintes pré-requisitos:

  • Uma subscrição do Azure. Se não tiver uma subscrição Azure, crie uma gratuitamente antes de começar.

  • Uma conta GitHub.

  • Visual Studio Code instalado na sua máquina de desenvolvimento. Para mais informações, consulte Download Visual Studio Code.

  • Microsoft.Authorization/roleAssignments/write permissões no nível do grupo de recursos.

Que problema vamos resolver?

Operações IoT do Azure é um conjunto de serviços de dados que correm em clusters Kubernetes. Você deseja que esses clusters sejam gerenciados remotamente a partir da nuvem e capazes de se comunicar com segurança com recursos e pontos de extremidade da nuvem. Abordamos essas preocupações com as seguintes tarefas neste guia de início rápido:

  1. Crie um cluster Kubernetes no GitHub Codespaces.
  2. Ligue o cluster ao Azure Arc para gestão remota.
  3. Crie um registro de esquema.
  4. Implemente o Operações IoT do Azure no seu cluster.

Criar cluster

Nesta seção, você cria um novo cluster. Se quiser reutilizar um cluster onde implementou Operações IoT do Azure anteriormente, consulte os passos em Limpar recursos para desinstalar Operações IoT do Azure antes de continuar.

O espaço de código Azure-Samples/explore-iot-operations está pré-configurado com:

Para criar seu espaço de código e cluster, use as seguintes etapas:

  1. Crie um codespace no GitHub Codespaces.

    Criar um espaço de código explore-iot-operations

  2. Forneça os seguintes segredos recomendados para seu espaço de código:

    Parâmetro Valor
    ID_DE_ASSINATURA O seu ID de subscrição do Azure.
    Grupo de Recursos Um nome para um novo grupo de recursos do Azure onde o seu cluster será criado.
    LOCALIZAÇÃO Uma região do Azure perto de ti. Para obter a lista de regiões atualmente suportadas, consulte Regiões suportadas.

    Gorjeta

    Os valores que forneces como segredos neste passo são guardados na tua conta do GitHub para serem usados neste e futuros Codespaces. Elas são adicionadas como variáveis de ambiente no terminal do codespace, e você pode usar essas variáveis de ambiente nos comandos da CLI na próxima seção.

    Além disso, este codespace cria uma variável ambiente CLUSTER_NAME que é definida com o nome do codespace.

  3. Selecione Criar novo espaço de código.

  4. Quando o espaço de código estiver pronto, selecione o botão de menu no canto superior esquerdo e, em seguida, selecione Abrir no VS Code Desktop.

    Captura de tela que mostra a abertura do espaço de código no VS Code Desktop.

  5. Se for solicitado, instale a extensão GitHub Codespaces para Visual Studio Code e inicie sessão no GitHub.

  6. No Visual Studio Code, selecione View>Terminal.

    Use este terminal para executar todos os comandos da CLI para gerenciar seu cluster.

Ligue cluster ao Azure Arc

Para ligar o seu cluster ao Azure Arc:

  1. No seu terminal de codespace, inicie sessão no CLI do Azure:

    az login
    

    Gorjeta

    Se estiveres a usar o ambiente GitHub codespace num browser em vez do VS Code desktop, executar az login devolve um erro localhost. ** Para corrigir o erro, faça uma das seguintes opções:

    • Abra o Codespace na área de trabalho do VS Code e, em seguida, retorne ao terminal do navegador e execute o az login novamente.
    • Ou, depois de aparecer o erro localhost no navegador, copie o URL do navegador e execute curl "<URL>" num novo separador de terminal. Deverias ver uma resposta JSON com a mensagem "Iniciaste sessão no Microsoft Azure!"
  2. Depois de iniciar sessão, CLI do Azure mostra todas as suas subscrições e indica a sua subscrição padrão com um asterisco *. Para continuar com sua assinatura padrão, selecione Enter. Caso contrário, escreva o número da subscrição do Azure que pretende usar.

  3. Registe os fornecedores de recursos necessários na sua subscrição:

    Gorjeta

    Esta etapa só precisa ser executada uma vez por assinatura. Para registar provedores de recursos, necessita de permissão para realizar a operação /register/action, que está incluída nas funções de Colaborador e Proprietário da assinatura. Para mais informações, consulte Azure fornecedores e tipos de recursos.

    az provider register -n "Microsoft.ExtendedLocation"
    az provider register -n "Microsoft.Kubernetes"
    az provider register -n "Microsoft.KubernetesConfiguration"
    az provider register -n "Microsoft.IoTOperations"
    az provider register -n "Microsoft.DeviceRegistry"
    az provider register -n "Microsoft.SecretSyncController"
    
  4. Use o comando az group create para criar um grupo de recursos na sua subscrição de Azure para armazenar todos os recursos:

    az group create --location $LOCATION --resource-group $RESOURCE_GROUP
    
  5. Use o comando az connectedk8s connect para ativar o seu cluster Kubernetes com o Arc e geri-lo como parte do seu grupo de recursos Azure:

    az connectedk8s connect --name $CLUSTER_NAME --location $LOCATION --resource-group $RESOURCE_GROUP
    

    Gorjeta

    O valor de $CLUSTER_NAME é definido automaticamente como o nome do seu espaço de código. Substitua a variável de ambiente se quiser usar um nome diferente.

  6. Obtenha o objectId da aplicação Microsoft Entra ID que o serviço de Azure Arc usa no seu tenant e guarde-o como variável de ambiente. Execute o seguinte comando exatamente como escrito, sem alterar o valor do GUID.

    export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
    
  7. Use o comando az connectedk8s enable-features para habilitar o suporte para locais personalizados no seu cluster. Este comando utiliza o objectId da aplicação Microsoft Entra ID que o serviço Azure Arc utiliza. Execute este comando na máquina onde você implantou o cluster Kubernetes:

    az connectedk8s enable-features -n $CLUSTER_NAME -g $RESOURCE_GROUP --custom-locations-oid $OBJECT_ID --features cluster-connect custom-locations
    

Instale a versão mais recente do az iot ops

Este quickstart utiliza a versão mais recente do Operações IoT do Azure. Para instalar a versão mais recente precisa da versão mais recente da extensão CLI do Operações IoT do Azure:

az extension add --upgrade --name azure-iot-ops

Criar conta de armazenamento e registro de esquema

O registro de esquema é um repositório sincronizado que armazena definições de mensagens na nuvem e na borda. O Operações IoT do Azure requer um registo de esquema no seu cluster. O registo de esquemas requer uma conta de armazenamento Azure para a informação do esquema armazenada na cloud.

O comando para criar um registo de esquema nesta secção requer a permissão Microsoft.Authorization/roleAssignments/write a nível de grupo de recursos. Essa permissão é usada para dar ao registro de esquema uma função de colaborador para que ele possa gravar na conta de armazenamento.

Execute os seguintes comandos da CLI no terminal do Codespaces.

  1. Defina variáveis de ambiente para os recursos criados nesta seção.

    Marcador de Posição Valor
    <STORAGE_ACCOUNT_NAME> O nome da sua conta de armazenamento. Os nomes das contas de armazenamento devem ter entre 3 e 24 caracteres e conter apenas números e letras minúsculas.
    <SCHEMA_REGISTRY_NAME> Um nome para o registo do esquema. Os nomes do Registro de esquema só podem conter números, letras minúsculas e hífenes.
    <SCHEMA_REGISTRY_NAMESPACE> Um nome para o seu namespace do registo de esquema. O namespace identifica exclusivamente um registro de esquema dentro de um locatário. Os nomes de namespace do Registro de esquema só podem conter números, letras minúsculas e hífenes.
    STORAGE_ACCOUNT=<STORAGE_ACCOUNT_NAME>
    SCHEMA_REGISTRY=<SCHEMA_REGISTRY_NAME>
    SCHEMA_REGISTRY_NAMESPACE=<SCHEMA_REGISTRY_NAMESPACE>
    
  2. Crie uma conta de armazenamento com namespace hierárquico habilitado.

    az storage account create --name $STORAGE_ACCOUNT --location $LOCATION --resource-group $RESOURCE_GROUP --enable-hierarchical-namespace
    
  3. Crie um registro de esquema que se conecte à sua conta de armazenamento. Esse comando também cria um contêiner de blob chamado esquemas na conta de armazenamento.

    az iot ops schema registry create --name $SCHEMA_REGISTRY --resource-group $RESOURCE_GROUP --registry-namespace $SCHEMA_REGISTRY_NAMESPACE --sa-resource-id $(az storage account show --name $STORAGE_ACCOUNT -o tsv --query id)
    

Criar um namespace do Azure Device Registry

Operações IoT do Azure e Azure Registo de Dispositivos utilizam namespaces para organizar ativos e dispositivos. Cada instância do Operações IoT do Azure utiliza um único namespace para os seus ativos e dispositivos.

Execute o seguinte comando CLI para criar um namespace do Azure Device Register.

az iot ops ns create -n myqsnamespace -g $RESOURCE_GROUP

Implementar Operações do Azure IoT

Nesta secção, configura o seu cluster com as dependências dos seus componentes Operações IoT do Azure e depois implementa o Operações IoT do Azure.

Execute os seguintes comandos da CLI no terminal do Codespaces.

  1. Inicialize o seu cluster para Operações IoT do Azure.

    Gorjeta

    O init comando só precisa ser executado uma vez por cluster. Se estiver a reutilizar um cluster que já tinha a versão mais recente do Operações IoT do Azure implementada, pode saltar este passo.

    az iot ops init --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP
    

    Esse comando pode levar vários minutos para ser concluído. Você pode observar o progresso no painel de implantação no terminal.

  2. Implementar Operações de IoT do Azure. Este comando inclui o conector opcional para OPC UA que é utilizado nos seguintes guias de início rápido.

    az iot ops create --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP --name ${CLUSTER_NAME}-instance --sr-resource-id $(az iot ops schema registry show --name $SCHEMA_REGISTRY --resource-group $RESOURCE_GROUP -o tsv --query id) --ns-resource-id $(az iot ops ns show --name myqsnamespace --resource-group $RESOURCE_GROUP -o tsv --query id) --broker-frontend-replicas 1 --broker-frontend-workers 1  --broker-backend-part 1  --broker-backend-workers 1 --broker-backend-rf 2 --broker-mem-profile Low  --feature opcua.mode=Stable
    

    Esse comando pode levar vários minutos para ser concluído. Você pode observar o progresso no painel de implantação no terminal.

    Se você receber um erro dizendo que seu dispositivo precisa ser gerenciado para acessar seu recurso, execute az login novamente e certifique-se de entrar interativamente com um navegador.

Exibir recursos no cluster

Uma vez concluída a implementação, pode usar comandos kubectl para observar alterações no cluster ou, como o cluster é compatível com Arc, pode usar o portal Azure.

Para visualizar os pods no seu cluster, execute o seguinte comando:

kubectl get pods -n azure-iot-operations

Para visualizar os seus recursos no portal Azure, utilize os seguintes passos:

  1. No portal Azure, vai ao grupo de recursos que contém a tua instância Operações IoT do Azure ou pesquisa e seleciona Operações IoT do Azure.

  2. Selecione o nome da sua instância Operações IoT do Azure.

  3. Na página Visão geral da instância, selecione a guia Resumo dos recursos para exibir o estado de provisionamento dos recursos que foram implantados no cluster.

    Captura de ecrã que mostra a instância Operações IoT do Azure no seu cluster com Arc-enabled.

Como resolvemos o problema?

Neste início rápido, configurou o seu cluster Kubernetes habilitado para Arc para que pudesse comunicar de forma segura com os seus componentes do Operações IoT do Azure. Em seguida, você implantou esses componentes no cluster. Para esse cenário de teste, você tem um único cluster Kubernetes em execução no Codespaces. Em um cenário de produção, no entanto, você pode usar as mesmas etapas para implantar cargas de trabalho em muitos clusters em vários sites.

Limpar recursos

Se continuar para o próximo início rápido, mantenha todos os seus recursos.

Se quiseres remover a implementação Operações IoT do Azure mas manter o cluster, usa o comando az iot ops delete:

az iot ops delete --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP

Se quiseres eliminar todos os recursos que criaste para este quickstart, elimina o cluster Kubernetes onde implementaste o Operações IoT do Azure e depois remove o grupo de recursos do Azure que continha o cluster.

Se usaste Codespaces para estes quickstarts, apaga o Codespace do GitHub.

Próximo passo