Compartilhar via


Tutorial: Adicionar ativos do OPC UA ao cluster Operações do Azure IoT

Neste tutorial, você adicionará manualmente ativos do OPC UA ao cluster Operações do Azure IoT. Esses ativos publicam mensagens no broker MQTT em seu cluster de Operações do Azure IoT. De modo geral, um usuário de OT (tecnologia operacional) realiza essas etapas.

Um ativo é um dispositivo físico ou uma entidade lógica que representam um dispositivo, um computador, um sistema ou um processo. Por exemplo, um ativo físico pode ser uma bomba, um motor, um tanque ou uma linha de produção. Um ativo lógico que você define pode ter propriedades, transmitir pontos de dados ou gerar eventos.

Servidores OPC UA são aplicativos de software que se comunicam com ativos. Marcas OPC UA são pontos de dados que os servidores OPC UA expõem. As marcas OPC UA podem fornecer dados históricos ou em tempo real sobre o status, o desempenho, a qualidade ou a condição dos ativos.

Neste tutorial, você vai usar a interface do usuário da Web da experiência de operações para criar seus ativos. Você também pode usar o CLI do Azure para concluir algumas dessas tarefas.

Pré-requisitos

Uma instância de Operações do Azure IoT com configurações seguras habilitadas implantadas em um cluster do Kubernetes. Para criar uma instância, use uma das seguintes opções para implantar Operações do Azure IoT:

  • Use esses scripts em GitHub para um deployment automatizado com configurações seguras.
  • Visão geral da implantação fornece instruções detalhadas para implantar uma instância do Operações do Azure IoT no Windows usando Edge Essentials do Serviço de Kubernetes do Azure ou no Ubuntu usando K3s. Siga as etapas no artigo de implantação para uma implantação de configurações seguras e para instalar a versão mais recente.

Importante

Não é possível habilitar configurações seguras na instância que você cria se seguir as etapas no artigo Quickstart: Executar Operações do Azure IoT em GitHub Codespaces com K3s.

Depois de habilitar as configurações seguras, o grupo de recursos que contém sua instância de Operações do Azure IoT também contém os seguintes recursos:

  • Uma instância Azure Key Vault para armazenar os segredos a serem sincronizados no cluster do Kubernetes.
  • Uma identidade gerenciada atribuída pelo usuário que Operações do Azure IoT usa para acessar a instância de Azure Key Vault.
  • Uma identidade gerenciada atribuída pelo usuário que componentes do Operações do Azure IoT, como fluxos de dados, podem usar para se conectar a pontos de extremidade de nuvem, como o Hubs de Eventos do Azure.
  • Um namespace de Registro de Dispositivos do Azure para armazenar seus recursos e dispositivos.

Verifique se, ao definir configurações seguras, você garanta que sua conta de usuário tenha permissões para gerenciar segredos com a função Key Vault Secrets Officer.

Para fazer login na Interface Web da experiência de operações, você precisa de uma conta Microsoft Entra ID com pelo menos permissões de colaborador para o grupo de recursos que contém sua instância Kubernetes - Azure Arc. Para saber mais, veja a interface do usuário da Web da experiência de operações.

A menos que indicado de outra forma, execute os comandos do console neste tutorial em um ambiente do Bash ou do PowerShell.

Que problema vamos resolver?

Os dados que os servidores OPC UA expõem podem ter uma estrutura complexa e ser difíceis de entender. Operações do Azure IoT fornece uma maneira de modelar ativos OPC UA como marcas, eventos e propriedades. Essa modelagem facilita a compreensão dos dados e o uso deles em processos de downstream, como o Agente MQTT e os fluxos de dados.

O tutorial também explica como usar credenciais armazenadas em Azure Key Vault para autenticar no servidor OPC UA simulado.

Implantar o simulador de PLC OPC

Este tutorial usa o simulador OPC PLC para gerar dados de exemplo. Para implantar o simulador OPC PLC:

  1. Baixe o arquivo opc-plc-tutorial-deployment.yaml do repositório GitHub. Para baixar usando a linha de comando, execute o seguinte comando:

    wget https://raw.githubusercontent.com/Azure-Samples/explore-iot-operations/refs/heads/main/samples/quickstarts/opc-plc-tutorial-deployment.yaml -O opc-plc-tutorial-deployment.yaml
    
  2. Abra o opc-plc-tutorial-deployment.yaml arquivo baixado em um editor de texto e altere a senha do simulador. A senha é definida usando o --defaultpassword parâmetro. Anote o valor da senha, você precisará dele mais tarde. Em seguida, salve suas alterações.

  3. Para implantar o simulador OPC PLC em seu cluster, execute o seguinte comando:

    kubectl apply -f opc-plc-tutorial-deployment.yaml
    

O seguinte snippet mostra o arquivo YAML que você aplicou:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: opc-plc-000000
  namespace: azure-iot-operations
  labels:
    app.kubernetes.io/component: opcplc-000000
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/component: opcplc-000000
  template:
    metadata:
      labels:
        app.kubernetes.io/component: opcplc-000000
    spec:
      containers:
      - name: opc-plc
        image: mcr.microsoft.com/iotedge/opc-plc:latest
        args:
          - "--plchostname=opcplc-000000"
          - "--portnum=50000"
          - "--certdnsnames=opcplc-000000"
          - "--unsecuretransport"
          - "--slownodes=5"
          - "--slowrate=10"
          - "--fastnodes=10"
          - "--fasttypelowerbound=212"
          - "--fasttypeupperbound=273"
          - "--fasttyperandomization=True"
          - "--veryfastrate=1000"
          - "--guidnodes=1"
          - "--appcertstoretype=FlatDirectory"
          - "--dontrejectunknownrevocationstatus"
          - "--disableanonymousauth"
          - "--defaultuser=contosouser"
          - "--defaultpassword=contosouserpassword"
        ports:
        - containerPort: 50000
        volumeMounts:
          - name: opc-plc-default-application-cert
            mountPath: /app/pki/own
          - name: opc-plc-trust-list
            mountPath: /app/pki/trusted
      volumes:
        - name: opc-plc-default-application-cert
          secret:
            secretName: opc-plc-default-application-cert
        - name: opc-plc-trust-list
          secret:
            secretName: opc-plc-trust-list
      serviceAccountName: opcplc-000000-service-account
---
apiVersion: v1
kind: Service
metadata:
  name: opcplc-000000
  namespace: azure-iot-operations
  labels:
    app.kubernetes.io/component: opcplc-000000
spec:
  type: ClusterIP
  selector:
    app.kubernetes.io/component: opcplc-000000
  ports:
    - port: 50000
      protocol: TCP
      targetPort: 50000
---
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: opc-plc-self-signed-issuer
  namespace: azure-iot-operations
  labels:
    app.kubernetes.io/component: opcplc-000000
spec:
  selfSigned: {}
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: opc-plc-default-application-cert
  namespace: azure-iot-operations
  labels:
    app.kubernetes.io/component: opcplc-000000
spec:
  secretName: opc-plc-default-application-cert
  duration: 2160h # 90d
  renewBefore: 360h # 15d
  issuerRef:
    name: opc-plc-self-signed-issuer
    kind: Issuer
  commonName: OpcPlc
  dnsNames:
    - opcplc-000000
    - opcplc-000000.azure-iot-operations.svc.cluster.local
    - opcplc-000000.azure-iot-operations
  uris:
    - urn:OpcPlc:opcplc-000000
  usages:
    - digital signature
    - key encipherment
    - data encipherment
    - server auth
    - client auth
  privateKey:
    algorithm: RSA
    size: 2048
  encodeUsagesInRequest: true
  isCA: false
---
apiVersion: v1
kind: Secret
metadata:
  name: opc-plc-trust-list
  namespace: azure-iot-operations
  labels:
    app.kubernetes.io/component: opcplc-000000
data: {}
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: opcplc-000000-service-account
  namespace: azure-iot-operations
  labels:
    app.kubernetes.io/component: opcplc-000000
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: opc-plc-000000-secret-access-role
  namespace: azure-iot-operations
rules:
- apiGroups: [""]
  resources: ["secrets"]
  verbs: ["get", "patch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: opc-plc-000000-secret-access-rolebinding
  namespace: azure-iot-operations
subjects:
- kind: ServiceAccount
  name: opcplc-000000-service-account
  namespace: azure-iot-operations
roleRef:
  kind: Role
  name: opc-plc-000000-secret-access-role
  apiGroup: rbac.authorization.k8s.io

Estabelecer confiança mútua

Antes que o simulador OPC PLC possa enviar dados para o conector para OPC UA, você precisa estabelecer uma relação de confiança mútua entre eles. Neste tutorial, o simulador OPC PLC e o conector para OPC UA usam certificados autoassinados para estabelecer a confiança mútua com o conector para OPC UA:

  • O certificado da instância de aplicativo do simulador é armazenado no segredo do Kubernetes opc-plc-default-application-cert.
  • O certificado da instância de aplicativo do conector para OPC UA é armazenado no segredo do Kubernetes aio-opc-opcuabroker-default-application-cert.

Importante

Em um ambiente de produção, use certificados de instância de aplicativo de nível empresarial para estabelecer a confiança mútua. Para saber mais, consulte Configurar um certificado de instância de aplicativo de nível empresarial.

Adicionar o certificado do conector à lista de confiança do simulador

Cada servidor OPC UA tem seu próprio mecanismo para gerenciar a lista de confiança. Para adicionar o certificado do conector à lista de confiança do simulador, execute os seguintes comandos:

cert=$(kubectl -n azure-iot-operations get secret aio-opc-opcuabroker-default-application-cert -o jsonpath='{.data.tls\.crt}' | base64 -d)
data=$(kubectl create secret generic temp --from-literal=opcuabroker.crt="$cert" --dry-run=client -o jsonpath='{.data}')
kubectl patch secret opc-plc-trust-list -n azure-iot-operations -p "{\"data\": $data}"
$cert = kubectl -n azure-iot-operations get secret aio-opc-opcuabroker-default-application-cert -o jsonpath='{.data.tls\.crt}' | %{ [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($_)) }
$data = kubectl create secret generic temp --from-literal=opcuabroker.crt="$cert" --dry-run=client -o jsonpath='{.data}'
kubectl patch secret opc-plc-trust-list -n azure-iot-operations -p "{""data"": $data}"

Adicionar o certificado do simulador à lista de confiança do conector

Cada tipo de servidor OPC UA tem seu próprio mecanismo para gerenciar seu certificado de instância de aplicativo. Para baixar o certificado do simulador em um arquivo chamado opcplc-000000.crt, execute o seguinte comando:

kubectl -n azure-iot-operations get secret opc-plc-default-application-cert -o jsonpath='{.data.tls\.crt}' | base64 -d > opcplc-000000.crt
kubectl -n azure-iot-operations get secret opc-plc-default-application-cert -o jsonpath='{.data.tls\.crt}' | %{ [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($_)) } > opcplc-000000.crt

Para adicionar o certificado do simulador à lista de confiança do conector:

  1. Acesse a operations experience web UI e entre com suas credenciais de Microsoft Entra ID.

  2. Selecione seu site. Se você está trabalhando com uma nova implantação, ainda não há nenhum site. Você pode encontrar o cluster criado anteriormente selecionando Visualizar instâncias não atribuídas. Na experiência de operações, uma instância representa um cluster em que você implantou Operações do Azure IoT.

    Captura de tela que mostra o nó de instâncias não atribuídas na experiência de operações.

  3. Selecione a instância em que você implantou Operações do Azure IoT:

    Captura de tela da lista de instâncias das Operações do Azure IoT.

    Dica

    Se você não vir nenhuma instância, talvez não esteja no tenant Microsoft Entra ID certo. Altere o locatário no menu superior direito na experiência de operações.

  4. Selecione Dispositivos e, em seguida, Gerencie certificados e segredos:

    Captura de tela que mostra como encontrar a página gerenciar certificados na experiência de operações.

  5. Na página Certificados e segredos, selecione Adicionar novo certificado:

    Captura de tela que mostra como adicionar um certificado à lista de confiança na experiência de operações.

  6. Selecione Carregar certificado, selecione a lista de confiança do OPC UA como o repositório de certificados e escolha o opcplc-000000.crt arquivo que você baixou anteriormente. Em seguida, selecione Carregar:

    Captura de tela que mostra um upload de certificado bem-sucedido.

  7. Selecione Aplicar.

O certificado da instância de aplicativo do simulador agora está na lista de certificados confiáveis do conector para OPC UA.

Adicionar um dispositivo

Nesta etapa, você usa a experiência de operações para adicionar um dispositivo que permite que você se conecte ao simulador OPC PLC. Para adicionar um dispositivo:

  1. Selecione Dispositivos e , em seguida, crie novos:

    Captura de tela que mostra a página de dispositivos na experiência de operações.

  2. Insira opc-ua-connector como o nome do dispositivo e selecione Novo na aba Microsoft.OpcUa:

    Captura de tela que mostra como adicionar um dispositivo na experiência de operações.

  3. Insira as informações seguintes do ponto de extremidade de entrada Microsoft.OpcUa:

    Campo Valor
    Nome de endpoint opc-ua-connector-0
    URL do servidor OPC UA opc.tcp://opcplc-000000:50000
    Modo de autenticação do usuário Username password

Neste tutorial, você adicionará novos segredos à instância do Azure Key Vault pela interface da experiência de operações. Os segredos são sincronizados automaticamente com o cluster do Kubernetes:

  1. Para adicionar uma referência de nome de usuário, selecione Adicionar referência e , em seguida, Criar nova.

  2. Insira plcusername como o nome do segredo e contosouser como o valor do segredo. Em seguida, selecione Aplicar.

  3. Para adicionar uma referência de senha, selecione Adicionar referência e , em seguida, Criar nova.

  4. Insira plcpassword como o nome do segredo e a senha que você adicionou ao arquivo opc-plc-deployment.yaml como o valor secreto. Em seguida, selecione Aplicar.

  5. Na página Detalhes do dispositivo , selecione Avançar para ir para a página Informações Adicionais .

  6. Na página Adicionar propriedade personalizada , você pode, opcionalmente, atualizar ou adicionar propriedades personalizadas ao dispositivo. Selecione Avançar quando terminar.

  7. Para salvar a definição do dispositivo na página Resumo , selecione Criar.

Essa configuração implanta um novo dispositivo chamado opc-ua-connector com um ponto de extremidade chamado opc-ua-connector-0 para o cluster. Você pode exibir o dispositivo no portal do Azure ou pode usar kubectl para exibir os dispositivos no cluster do Kubernetes:

kubectl get device -n azure-iot-operations

Você pode ver os segredos plcusername e plcpassword na instância Azure Key Vault em seu grupo de recursos. Os segredos são sincronizados com o cluster do Kubernetes, onde você pode vê-los usando o kubectl get secret -n azure-iot-operations comando. Você também pode ver os segredos na experiência de operações na página Gerenciar segredos sincronizados .

Gerenciar seus ativos

Depois de selecionar a instância na experiência de operações, você verá a lista disponível de ativos na página Ativos. Se ainda não houver nenhum ativo, essa lista estará vazia:

Screenshot da lista de ativos vazia de Operações do Azure IoT.

Criar um ativo

Para criar um ativo, selecione Criar ativo. Em seguida, insira as seguintes informações do ativo:

Campo Valor
Ponto de extremidade de entrada opc-ua-connector-0
Nome do ativo thermostat
Descrição A simulated thermostat asset

Remova as propriedades personalizadas existentes e adicione as propriedades personalizadas a seguir. Tenha cuidado para usar os nomes de propriedade exatos, pois o modelo de Power BI em um tutorial posterior faz consultas a eles.

Nome da propriedade Detalhes da propriedade
lote 102
cliente Contoso
equipamento Código clichê
isSpare verdadeiro
local Seattle

Screenshot da página de detalhes do ativo Operações do Azure IoT.

Selecione Avançar para ir para a página Conjuntos de dados .

Criar um conjunto de dados

Para criar um conjunto de dados, selecione Criar conjunto de dados. Insira os detalhes do conjunto de dados mostrados na tabela a seguir:

Campo Valor
Nome do conjunto de dados thermostat
Destino MQTT
Tópico azure-iot-operations/data/thermostat

Selecione Criar e próximo para salvar o dataset e vá para a página de Pontos de Dados.

Dica

Você pode selecionar Gerenciar configurações padrão para alterar o intervalo de amostragem padrão e o tamanho da fila para cada ponto de dados.

Criar pontos de dados do OPC UA

Adicione um ponto de dados OPC UA na página Pontos de dados . Para adicionar um ponto de dados, selecione Adicionar ponto de dados. Insira os detalhes do ponto de dados mostrados na tabela a seguir:

Fonte de dados Nome do ponto de dados
ns=3;s=SpikeData temperatura

O valor da fonte de dados aqui é um nó específico do simulador OPC UA. O nó gera valores aleatórios dentro de um intervalo especificado e também tem picos intermitentes.

Clique em Salvar.

Captura de tela da página do Operações do Azure IoT para adicionar ponto de dados.

Selecione Avançar para ir para a página Grupos de eventos , selecione Avançar para ir para a página Grupos de Gerenciamento e, em seguida, Avançar para ir para a página Revisão .

Revisão

Revise os detalhes do ativo e da marca e faça os ajustes necessários antes de selecionar Criar:

Captura de tela da página de revisão de criação de ativos no Operações do Azure IoT.

Essa configuração implanta um novo ativo chamado thermostat no cluster. Você também pode usar kubectl para exibir os ativos localmente em seu cluster:

kubectl get assets.namespace -n azure-iot-operations

Exibir recursos no portal do Azure

Para exibir o dispositivo e o ativo que você criou no portal do Azure, acesse Azure Registro de Dispositivo:

Screenshot do portal Azure mostrando o Registro de Dispositivo Azure.

O portal permite que você exiba os seguintes recursos do Registro de Dispositivos Azure:

  • Ativos: você pode exibir o thermostat ativo criado nas etapas anteriores.
  • Dispositivos: você pode exibir o opc-ua-connector dispositivo criado nas etapas anteriores.
  • Namespaces: você pode exibir o namespace que criou quando implantou Operações do Azure IoT. O namespace contém o ativo e o dispositivo que você criou nas etapas anteriores.
  • Registros de esquema: você pode exibir o registro de esquema que foi criado automaticamente quando criou seu ativo.

Verificar se os dados estão fluindo

Verifique se os dados estão fluindo para o Agente MQTT usando a ferramenta mosquitto_sub. Neste exemplo, execute a ferramenta mosquitto_sub dentro do cluster do Kubernetes:

  1. Execute o seguinte comando para implantar um pod que inclua as ferramentas mosquitto_pub e mosquitto_sub que são úteis para interagir com o Agente MQTT no cluster:

    kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/explore-iot-operations/main/samples/quickstarts/mqtt-client.yaml
    

    O seguinte snippet mostra o arquivo YAML que você aplicou:

    # Important: do not use in production environments
    # Create a service account
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: mqtt-client
      namespace: azure-iot-operations
    ---
    # Creates a pod with mosquitto-clients and mqttui utilities in your cluster
    apiVersion: v1
    kind: Pod
    metadata:
      name: mqtt-client
      # The namespace must match the IoT MQ BrokerListener's namespace
      # Otherwise use the long hostname: aio-broker.azure-iot-operations.svc.cluster.local
      namespace: azure-iot-operations
    spec:
      # Use the "mqtt-client" service account which comes with default deployment
      # Otherwise create it with `kubectl create serviceaccount mqtt-client -n azure-iot-operations`
      serviceAccountName: mqtt-client
      containers:
        # Install mosquitto and mqttui utilities on Alpine linux
      - image: alpine
        name: mqtt-client
        command: ["sh", "-c"]
        args: ["apk add mosquitto-clients mqttui && sleep infinity"]
        resources:
          limits:
            cpu: 500m
            memory: 200Mi
          requests:
            cpu: 100m
            memory: 100Mi
        volumeMounts:
        - name: broker-sat
          mountPath: /var/run/secrets/tokens
        - name: trust-bundle
          mountPath: /var/run/certs
      volumes:
      - name: broker-sat
        projected:
          sources:
          - serviceAccountToken:
              path: broker-sat
              audience: aio-internal # Must match audience in BrokerAuthentication
              expirationSeconds: 86400
      - name: trust-bundle
        configMap:
          name: azure-iot-operations-aio-ca-trust-bundle # Default root CA cert
    

    Atenção

    Essa configuração não é segura. Não use essa configuração em um ambiente de produção.

  2. Quando o pod mqtt-client estiver em execução, execute o seguinte comando para criar um ambiente de shell no pod que você criou:

    kubectl exec --stdin --tty mqtt-client -n azure-iot-operations -- sh
    
  3. No shell do Bash no pod mqtt-client, execute o seguinte comando para se conectar ao Agente MQTT usando a ferramenta mosquitto_sub e use um coringa para assinar os tópicos data/#:

    mosquitto_sub --host aio-broker --port 18883 --topic "azure-iot-operations/data/#" -v --debug --cafile /var/run/certs/ca.crt -D CONNECT authentication-method 'K8S-SAT' -D CONNECT authentication-data $(cat /var/run/secrets/tokens/broker-sat)
    

    Este comando continua em execução e exibe mensagens à medida que chegam em qualquer um dos tópicos data/#, até que você pressione Ctrl+C para pará-lo. Para sair do ambiente de shell, digite exit.

Para verificar se o ativo de termostato que você adicionou está publicando dados, exiba a telemetria no tópico azure-iot-operations/data/thermostat:

Client $server-generated/0000aaaa-11bb-cccc-dd22-eeeeee333333 received PUBLISH (d0, q0, r0, m0, 'azure-iot-operations/data/thermostat', ... (92 bytes))
azure-iot-operations/data/thermostat {"temperature":{"SourceTimestamp":"2025-02-14T11:27:44.5030912Z","Value":48.17536741017152}}
Client $server-generated/0000aaaa-11bb-cccc-dd22-eeeeee333333 received PUBLISH (d0, q0, r0, m0, 'azure-iot-operations/data/thermostat', ... (90 bytes))
azure-iot-operations/data/thermostat {"temperature":{"SourceTimestamp":"2025-02-14T11:27:45.50333Z","Value":98.22872507286887}}
Client $server-generated/0000aaaa-11bb-cccc-dd22-eeeeee333333 received PUBLISH (d0, q0, r0, m0, 'azure-iot-operations/data/thermostat', ... (92 bytes))
azure-iot-operations/data/thermostat {"temperature":{"SourceTimestamp":"2025-02-14T11:27:46.503381Z","Value":12.533323356430426}}

Se não houver nenhum fluxo de dados, reinicie o pod aio-opc-opc.tcp-1:

  1. Localize o nome do seu pod aio-opc-opc.tcp-1 usando o seguinte comando:

    kubectl get pods -n azure-iot-operations
    

    O nome do pod é semelhante a aio-opc-opc.tcp-1-849dd78866-vhmz6.

  2. Reinicie o pod aio-opc-opc.tcp-1 usando um comando semelhante ao exemplo a seguir. Use o nome do pod aio-opc-opc.tcp-1 da etapa anterior:

    kubectl delete pod aio-opc-opc.tcp-1-849dd78866-vhmz6 -n azure-iot-operations
    

As marcas de exemplo que você adicionou no tutorial anterior geram mensagens do seu ativo semelhantes aos seguintes exemplos:

{
    "temperature":{
        "Value":24.86898871648548,
        "SourceTimestamp":"2025-04-25T14:50:07.195274Z"
    }
}

Como resolvemos o problema?

Neste tutorial, você adicionou um dispositivo e definiu um ativo e marcas. Os ativos e as marcas modelam dados do servidor OPC UA para facilitar o uso dos dados em um Agente MQTT e em outros processos downstream.

Você usou credenciais armazenadas em Azure Key Vault para autenticar no servidor OPC UA. Essa abordagem é mais segura do que inserir credenciais fixas na definição de seu ativo.

Use o ativo de termostato que você definiu no próximo tutorial.

Limpar recursos

Se você continuar para o próximo tutorial, mantenha todos os seus recursos.

Se você quiser remover a implantação Operações do Azure IoT mas manter seu cluster, use o comando az iot ops delete:

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

Se você quiser excluir todos os recursos criados para este início rápido, exclua o cluster do Kubernetes no qual você implantou Operações do Azure IoT e remova o grupo de recursos Azure que continha o cluster.

Se você usou codespaces para esses inícios rápidos, exclua seu Codespace de GitHub.

Próxima etapa

Tutorial: Enviar mensagens do seu ativo para a nuvem usando um fluxo de dados.