Distribuire Operazioni di Azure IoT con connettività privata

Questo articolo descrive come configurare la connettività privata per Operazioni di Azure IoT. Seguire le sezioni nell'ordine:

Passo Sezione Funzionamento
1 Configurare Arc Gateway Creare la risorsa di Arc Gateway e recuperare l'OID delle posizioni personalizzate
2 Creare endpoint privati e zone DNS Creare endpoint privati e zone DNS per le risorse del piano dati (archiviazione, Key Vault, Griglia di eventi) create nei prerequisiti
3 Connettere il cluster a Azure Arc Abilitare Arc per il cluster. Scegliere tra Arc Gateway solo o Arc Gateway + Proxy esplicito
4 Implementare operazioni Azure IoT Distribuire Operazioni di Azure IoT. Il traffico è già instradato privatamente tramite DNS
5 Disabilita l'accesso pubblico nell'archiviazione e nel Key Vault Bloccare l'account di archiviazione e Key Vault una volta che le operazioni di Azure IoT sono in condizioni ottimali.
6 Configurare le destinazioni del flusso di dati con endpoint privati Instradare il traffico del dataflow verso destinazioni cloud come Event Grid tramite collegamento privato

Questi scenari si applicano agli ambienti con un singolo cluster Kubernetes abilitato per Arc. Non esiste alcuna segmentazione di rete in stile Purdue, nessun concatenamento proxy tra livelli e nessuna distribuzione di Envoy. Se si dispone di una topologia di rete a più livelli, vedere Tutorial: Distribuire Operazioni di Azure IoT in una rete a più livelli con connettività privata.

Prerequisiti

  • Una sottoscrizione Azure con autorizzazioni sufficienti per creare endpoint privati, zone DNS private, e assegnazioni di ruolo (in genere Owner o Contributor + User Access Administrator). Se non si ha una sottoscrizione, creare un account gratuito prima di iniziare.
  • interfaccia della riga di comando di Azure e kubectl installato nell'amministratore o nella jump machine.
  • Un cluster Kubernetes distribuito e pronto per abilitare Arc. Vedere Preparare il cluster per le configurazioni supportate e i passaggi di installazione.
  • Una rete virtuale di Azure con connettività di rete dal cluster (ExpressRoute, Gateway VPN, peering di reti virtuali, o altra pianificazione percorso privato). Se il cluster viene eseguito su macchine virtuali Azure all'interno della stessa rete virtuale o in una rete virtuale con peering, questa connessione è già attiva.
  • Un account Archiviazione di Azure nello stesso gruppo di risorse, usato dal Registro schemi per l'archiviazione dello schema. Se si verifica un errore RequestDisallowedByPolicy durante la creazione, aggiungere --allow-shared-key-access false al az storage account create comando .
  • Un Azure Key Vault nello stesso gruppo di risorse, usato per la sincronizzazione dei segreti con il cluster.
  • (Facoltativo) Un namespace di Griglia di eventi di Azure con MQTT abilitato. Necessario solo se si instrada il traffico del flusso di dati a Griglia di eventi in Configurare le destinazioni del flusso di dati con endpoint privati.
  • (Facoltativo) Un Firewall di Azure con explicit proxy abilitato nella tua VNet, raggiungibile dal tuo cluster. Obbligatorio solo se si segue la scheda Gateway Arc + Proxy esplicito per una connettività completamente privata senza esposizione all'Internet pubblico.

Configurare Arc Gateway

Azure Arc Gateway consolida gli endpoint di circa 200 Azure necessari per gli agenti e le estensioni Arc in un singolo URL del gateway. Ciò semplifica notevolmente l'elenco di indirizzi consentiti del firewall, invece di consentire 200 FQDN singoli, è possibile consentire circa 9.

Passaggio 1: Creare una risorsa gateway Arc

Se non si ha già una risorsa di Arc Gateway, crearne una. È necessario l'ID risorsa del gateway quando si connette il cluster nella sezione successiva. Per la procedura di creazione, vedere Creare la risorsa gateway Arc.

Screenshot del portale di Azure che mostra una risorsa gateway Arc con l'URL del gateway e le proprietà delle risorse.

Annotazioni

Sono supportate al massimo cinque risorse di Arc Gateway per ogni sottoscrizione.

Per l'elenco di FQDN che devono essere consentiti tramite il firewall quando si usa Arc Gateway, vedere Endpoint consentiti con Arc Gateway.

Passaggio 2: recuperare l'ID dell'oggetto dei percorsi personalizzati

Il parametro --custom-locations-oid usato per la connessione del cluster richiede l'ID dell'oggetto (OID) del principale del servizio di percorsi personalizzati di Azure Arc.

Per trovarlo:

  1. Passare a Microsoft Entra ID nel portale di Azure.
  2. Selezionare Applicazioni aziendali.
  3. Cercare Percorsi personalizzati su Kubernetes con Azure Arc.
  4. Aprire l'applicazione, passare a Proprietà e copiare l'ID oggetto.

Creare endpoint privati e zone DNS

L'account di archiviazione, Insieme di credenziali delle chiavi e lo spazio dei nomi di Griglia eventi creati nei prerequisiti sono le risorse del piano dati usate da Operazioni di Azure IoT durante l'esecuzione. Creare endpoint privati e zone DNS per queste risorse in modo che tutto il traffico venga indirizzato in modo privato fin dall'inizio, prima di connettere il cluster o implementare Operazioni di Azure IoT.

Passaggio 1: Creare endpoint privati

Creare endpoint privati per l'account di archiviazione, Key Vault ed Event Grid affinché tutto il traffico verso questi servizi passi privatamente.

Archiviazione BLOB di Azure

az network private-endpoint create \
  --name pe-storage-blob \
  --resource-group <resource-group> \
  --location <region-of-vnet> \
  --subnet "/subscriptions/<subscription-id>/resourceGroups/<rg-vnet>/providers/Microsoft.Network/virtualNetworks/<vnet>/subnets/<subnet>" \
  --private-connection-resource-id "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<account>" \
  --group-id blob \
  --connection-name pe-conn-storage-blob

Azure Key Vault

az network private-endpoint create \
  --name pe-keyvault \
  --resource-group <resource-group> \
  --location <region-of-vnet> \
  --subnet "/subscriptions/<subscription-id>/resourceGroups/<rg-vnet>/providers/Microsoft.Network/virtualNetworks/<vnet>/subnets/<subnet>" \
  --private-connection-resource-id "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.KeyVault/vaults/<keyvault-name>" \
  --group-id vault \
  --connection-name pe-conn-keyvault

Annotazioni

L'endpoint privato di Event Grid viene creato qui per essere pronto per Configurare le destinazioni del flusso di dati con endpoint privati, che instrada il traffico del flusso di dati a Event Grid su collegamento privato.

Namespace di Event Grid

az network private-endpoint create \
  --name pe-eventgrid \
  --resource-group <resource-group> \
  --location <region-of-vnet> \
  --subnet "/subscriptions/<subscription-id>/resourceGroups/<rg-vnet>/providers/Microsoft.Network/virtualNetworks/<vnet>/subnets/<subnet>" \
  --private-connection-resource-id "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.EventGrid/namespaces/<namespace>" \
  --group-id topicspace \
  --connection-name pe-conn-eventgrid

Passaggio 2: Configurare DNS privato zone

Creare zone del DNS privato in modo che i FQDN del servizio Azure vengano risolti agli indirizzi IP degli endpoint privati. Collegare ogni zona alla rete virtuale e creare gruppi di zone DNS in modo che i record A dell'endpoint privato vengano registrati automaticamente.

Archiviazione BLOB di Azure

az network private-dns zone create \
  --resource-group <resource-group> \
  --name privatelink.blob.core.windows.net

az network private-dns link vnet create \
  --resource-group <resource-group> \
  --zone-name privatelink.blob.core.windows.net \
  --name storage-dns-link \
  --virtual-network "/subscriptions/<subscription-id>/resourceGroups/<rg-vnet>/providers/Microsoft.Network/virtualNetworks/<vnet>" \
  --registration-enabled false

az network private-endpoint dns-zone-group create \
  --resource-group <resource-group> \
  --endpoint-name pe-storage-blob \
  --name storage-zone-group \
  --private-dns-zone "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Network/privateDnsZones/privatelink.blob.core.windows.net" \
  --zone-name blob

Azure Key Vault

az network private-dns zone create \
  --resource-group <resource-group> \
  --name privatelink.vaultcore.azure.net

az network private-dns link vnet create \
  --resource-group <resource-group> \
  --zone-name privatelink.vaultcore.azure.net \
  --name keyvault-dns-link \
  --virtual-network "/subscriptions/<subscription-id>/resourceGroups/<rg-vnet>/providers/Microsoft.Network/virtualNetworks/<vnet>" \
  --registration-enabled false

az network private-endpoint dns-zone-group create \
  --resource-group <resource-group> \
  --endpoint-name pe-keyvault \
  --name keyvault-zone-group \
  --private-dns-zone "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Network/privateDnsZones/privatelink.vaultcore.azure.net" \
  --zone-name vault

Griglia di eventi

az network private-dns zone create \
  --resource-group <resource-group> \
  --name privatelink.ts.eventgrid.azure.net

az network private-dns link vnet create \
  --resource-group <resource-group> \
  --zone-name privatelink.ts.eventgrid.azure.net \
  --name eventgrid-dns-link \
  --virtual-network "/subscriptions/<subscription-id>/resourceGroups/<rg-vnet>/providers/Microsoft.Network/virtualNetworks/<vnet>" \
  --registration-enabled false

az network private-endpoint dns-zone-group create \
  --resource-group <resource-group> \
  --endpoint-name pe-eventgrid \
  --name eventgrid-zone-group \
  --private-dns-zone "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Network/privateDnsZones/privatelink.ts.eventgrid.azure.net" \
  --zone-name eventgrid

Per l'elenco completo dei nomi delle zone DNS private, vedere Valori delle zone DNS private di Azure.

Connettere il cluster a Azure Arc

Con i Private Endpoint e DNS in atto, connetti il cluster ad Azure Arc. Scegli la scheda corrispondente all'approccio di connettività.

  • Arc Gateway only — il cluster si connette tramite Arc Gateway con una lista di autorizzazioni firewall semplificata (~9 FQDN), ma il traffico in uscita usa ancora percorsi internet pubblici.
  • Arc Gateway + Proxy esplicito — Tutto il traffico in uscita viene instradato attraverso Proxy Esplicito Firewall di Azure sulla rete privata senza esposizione a Internet pubblico.

Entrambe le schede si basano su Configura Arc Gateway. Completare prima questa sezione per creare la risorsa Arc Gateway e recuperare l'OID delle posizioni personalizzate.

Passaggio 1: Connettere il cluster con Arc Gateway

Connettere il cluster e associarlo a Arc Gateway:

az connectedk8s connect \
  --name <cluster-name> \
  --resource-group <resource-group> \
  --location <region> \
  --custom-locations-oid <OID> \
  --enable-oidc-issuer \
  --enable-workload-identity \
  --disable-auto-upgrade \
  --gateway-resource-id <gateway-resource-id>

Suggerimento

Per i cluster abilitati per Arc esistenti: Se il cluster è già connesso a Azure Arc, usare az connectedk8s update anziché az connectedk8s connect:

az connectedk8s update \
  --name <cluster-name> \
  --resource-group <resource-group> \
  --gateway-resource-id <gateway-resource-id>

Passaggio 2: Verificare la connettività

  1. Verificare che gli agenti Arc e il pod Arc Proxy siano in esecuzione:

    kubectl get pods -n azure-arc
    
  2. Verificare che il DNS risolva in IP privati:

    nslookup <storage-account>.blob.core.windows.net
    nslookup <keyvault-name>.vault.azure.net
    nslookup <eventgrid-namespace>.ts.eventgrid.azure.net
    

    Ogni risultato deve restituire un indirizzo IP nell'intervallo di indirizzi privati (ad esempio, 10.x.x.x), non un indirizzo IP pubblico.

  3. Verificare che il cluster venga visualizzato come Connected nel portale di Azure in Azure Arc > cluster Kubernetes.

Se un FQDN viene risolto in un indirizzo IP pubblico, vedere DNS viene risolto in un indirizzo IP pubblico anziché in un indirizzo IP privato.

Distribuire Operazioni di Azure IoT

Distribuire Operazioni di Azure IoT nel cluster con gli endpoint privati, le zone DNS e la connettività Arc già configurati. Le risorse del piano dati (Archiviazione, Insieme di credenziali delle chiavi) si risolvono già in indirizzi IP privati grazie alla configurazione DNS effettuata tramite Creare endpoint privati e zone DNS.

Per istruzioni sulla distribuzione, vedere Deploy Operazioni di Azure IoT. Durante la distribuzione, il traffico dell'agente Arc viene instradato attraverso le opzioni di connettività configurate (Arc Gateway, Proxy esplicito o entrambi).

Avvertimento

L'account di archiviazione e Key Vault devono avere l'accesso pubblico abilitato durante la distribuzione. Il Registro schemi richiede accesso pubblico all'account di archiviazione in fase di creazione e l'estensione dell'archivio segreti (sincronizzazione dei segreti) deve raggiungere il deposito chiavi. Ciò significa che queste risorse sono raggiungibili pubblicamente fino a quando non si completa Disable public access on storage and Key Vault. Completare quella sezione non appena i pod di Operazioni di Azure IoT sono operativi per ridurre al minimo il periodo di esposizione.

Per ridurre ulteriormente l'esposizione, è possibile limitare l'accesso pubblico solo all'indirizzo IP del computer amministratore:

Facoltativo: limitare l'accesso all'indirizzo IP durante la distribuzione
az storage account network-rule add \
  --account-name <storage-account> \
  --ip-address <your-public-ip>

az storage account update \
  --name <storage-account> \
  --resource-group <resource-group> \
  --default-action Deny

az keyvault network-rule add \
  --name <keyvault-name> \
  --ip-address <your-public-ip>/32

az keyvault update \
  --name <keyvault-name> \
  --resource-group <resource-group> \
  --default-action Deny

Una volta che Operazioni di Azure IoT è funzionante, passare a --public-network-access Disabled come indicato nella sezione successiva.

Disabilitare l'accesso pubblico nell'archiviazione e Key Vault

Dopo aver distribuito Operazioni di Azure IoT, disabilitare l'accesso pubblico nell'account di archiviazione e Key Vault per completare il blocco.

Prerequisiti

Prima di disabilitare l'accesso pubblico, verificare quanto segue:

  • Operazioni di Azure IoT è stato distribuito ed è funzionante. Esegui az iot ops check e verifica che tutti i pod nel namespace azure-iot-operations siano in esecuzione. Vedere Deploy Operazioni di Azure IoT.
  • La sincronizzazione dei segreti è configurata e funzionante. Verificare che le risorse SecretSync e SecretProviderClass esistano e che i segreti vengano sincronizzati da Azure Key Vault. Consulta la gestione dei segreti per la distribuzione di Operazioni di Azure IoT.
  • Il Registro schemi è funzionale. Verificare che i pod del registro schema (adr-schema-registry-*) siano in esecuzione e possano accedere all'account di archiviazione. Per altre informazioni, vedere Informazioni sugli schemi dei messaggi.
  • I nodi del cluster possono risolvere DNS di Azure. Se il cluster utilizza DNS personalizzato, configurare l'inoltro del DNS per DNS di Azure (168.63.129.16) affinché i record delle zone DNS private vengano risolti correttamente. Per ulteriori informazioni, vedere Integrazione DNS di Azure Private Endpoint.

Passaggio 1: Disabilitare l'accesso pubblico e assegnare RBAC

Disabilitare l'accesso alla rete pubblica nell'account di archiviazione e Key Vault. Per l'account di archiviazione, abilitare il bypass dei servizi di Azure attendibili in modo che il Schema Registry (Microsoft.DeviceRegistry/schemaRegistries) possa comunque accedervi.

az storage account update \
  --name <storage-account> \
  --resource-group <resource-group> \
  --public-network-access Disabled \
  --bypass AzureServices

Verificare che l'accesso pubblico sia disabilitato:

az storage account show --name <storage-account> --resource-group <resource-group> --query "publicNetworkAccess"
az keyvault update \
  --name <keyvault-name> \
  --resource-group <resource-group> \
  --public-network-access Disabled

Verificare che l'accesso pubblico sia disabilitato:

az keyvault show --name <keyvault-name> --resource-group <resource-group> --query "properties.publicNetworkAccess"

Annotazioni

Il registro schema continua a funzionare correttamente tramite il bypass del servizio attendibile (AzureServices). Usare il flag --skip-ra durante la creazione dello Schema Registry se non si dispone delle autorizzazioni a livello di proprietario.

Assegnare all'identità gestita del registro schema l'accesso all'account di archiviazione.

az role assignment create \
  --assignee <identity-client-id> \
  --role "Storage Blob Data Contributor" \
  --scope <storage-account-resource-id>

Passaggio 2: Verificare la connettività privata

  1. Dal nodo del cluster, verificare che l'FQDN di archiviazione sia risolto in un indirizzo IP privato.

    nslookup <storage-account>.blob.core.windows.net
    
  2. Verificare che l'FQDN del Key Vault si risolva in un indirizzo IP privato.

    nslookup <keyvault-name>.vault.azure.net
    

    Entrambi devono restituire indirizzi IP nell'intervallo di indirizzi privati (ad esempio, 10.x.x.x), non indirizzi IP pubblici.

  3. Verificare che la sincronizzazione dei segreti funzioni ancora dopo la disabilitazione dell'accesso pubblico:

    kubectl get secretsync -n azure-iot-operations
    

    Tutte le risorse SecretSync devono mostrare lo stato Synced. Se vengono visualizzati errori, vedere Risolvere i problemi di connettività privata.

Configurare le destinazioni del flusso di dati con endpoint privati

Operazioni di Azure IoT flussi di dati inviare dati di telemetria a destinazioni cloud come Griglia di eventi di Azure, Hub eventi di Azure, Esplora dati di Azure, Data Lake Storage Gen2 e Microsoft Fabric OneLake. Per impostazione predefinita, i flussi di dati si connettono a questi servizi tramite gli endpoint pubblici. Per mantenere privato il traffico, crea un endpoint privato per ogni destinazione e assicurati che il DNS risolva sugli indirizzi IP privati.

Annotazioni

Se è stato creato un endpoint privato di Griglia di eventi e una zona DNS in Creare endpoint privati e zone DNS, Griglia di eventi è già configurata per l'accesso privato. Saltare avanti al Passaggio 2: assegnare il controllo degli accessi in base al ruolo per Griglia eventi per quella destinazione.

La tabella seguente illustra le destinazioni del flusso di dati supportate e la DNS privato Zona, ID gruppo e porta per ognuno di essi:

Destinazione zona DNS privato ID del Gruppo Porto
Griglia di eventi di Azure (MQTT) privatelink.ts.eventgrid.azure.net topicspace 8883
Hub eventi di Azure privatelink.servicebus.windows.net namespace 9093 (Kafka)
Esplora dati di Azure privatelink.<region>.kusto.windows.net cluster 443
Data Lake Storage Gen2 privatelink.blob.core.windows.net oppure privatelink.dfs.core.windows.net blob oppure dfs 443
Microsoft Fabric OneLake privatelink.dfs.fabric.microsoft.com onelake 443

Annotazioni

  • Event Hub usa la porta del protocollo Kafka 9093 (non la porta AMQP standard 5671) perché Operazioni di Azure IoT flussi di dati si connettono a Hub eventi tramite Kafka.
  • Data Lake Storage Gen2 supporta due ID di gruppo: usare blob per l'accesso a spazi dei nomi flat e dfs per gli account dello spazio dei nomi gerarchici (abilitati per HNS). Scegliere quello che corrisponde alla configurazione dell'account di archiviazione.

La procedura seguente usa Griglia di eventi di Azure come esempio. Lo stesso modello si applica a ogni destinazione, sostituire i valori della tabella.

Passaggio 1: creare uno spazio dei nomi Griglia di eventi

Se non è già disponibile, creare uno spazio dei nomi di Griglia di eventi con MQTT (spazi di argomento) abilitato:

az eventgrid namespace create \
  --name <namespace> \
  --resource-group <resource-group> \
  --location <region> \
  --topic-spaces-configuration state=Enabled \
  --sku name=Standard capacity=1

Quindi crea uno spazio tematico. Per i test, è possibile usare il carattere jolly # come modello di argomento:

az eventgrid namespace topic-space create \
  --name <topic-space-name> \
  --resource-group <resource-group> \
  --namespace-name <namespace> \
  --topic-templates "#"

Annotazioni

Nello spazio dei nomi di Event Grid, impostare Numero massimo di sessioni client per nome di autenticazione su 3 o più per consentire ai flussi di dati di scalare adeguatamente. Vedere Supporto multisessione MQTT di Event Grid.

Passaggio 2: Assegnare l'RBAC per Event Grid

Concedere all'identità gestita di Operazioni di Azure IoT il ruolo Event Grid che corrisponde alla direzione del flusso di dati:

  • Unidirezionale (sorgente → Griglia eventi): Assegnare EventGrid TopicSpaces Publisher.
  • A senso unico (Griglia di eventi → destinazione): Assegnare EventGrid TopicSpaces Subscriber.
  • Bridge bidirezionale: Assegnare sia EventGrid TopicSpaces Publisher che EventGrid TopicSpaces Subscriber.

Per un flusso di dati tipico che pubblica i dati di telemetria in Griglia di eventi:

az role assignment create \
  --assignee <aio-managed-identity-principal-id> \
  --role "EventGrid TopicSpaces Publisher" \
  --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.EventGrid/namespaces/<namespace>"

Annotazioni

Se si crea un bridge MQTT bidirezionale (sia l'origine che la destinazione usano Event Grid), è necessario entrambi i ruoli di Publisher e Subscriber. Per un esempio, vedere Tutorial: Configurare il bridge MQTT tra Operazioni di Azure IoT e Griglia di eventi.

Importante

Assegnare RBAC (controllo degli accessi in base al ruolo) all'identità corretta. Il metodo di autenticazione dell'endpoint del flusso di dati determina l'identità a cui è necessario concedere il ruolo Griglia di eventi:

  • Identità gestita assegnata dal sistema (impostazione predefinita): Assegnare il ruolo all'entità servizio dell'estensione AIO Arc . Per trovarla, passare al portale di Azure → cluster abilitato per Arc → Extensionsazure-iot-operationsProperties e copiare l'ID Principal. In alternativa, usare l'interfaccia della riga di comando:

    az rest --method get \
      --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Kubernetes/connectedClusters/<cluster-name>/extensions/azure-iot-operations?api-version=2024-11-01-preview" \
      --query "identity.principalId" -o tsv
    
  • Identità gestita assegnata dall'utente: Assegnare il ruolo all'ID principale dell'identità.

Se si assegna il ruolo all'identità sbagliata (ad esempio, un MI assegnato dall'utente usato per SecretSync invece dell'MI assegnato dal sistema dell'estensione AIO), il flusso di dati riceve un errore NotAuthorized dopo CONNACK ed entra in un ciclo di riconnessione.

Passaggio 3: Disabilitare l'accesso pubblico nello spazio dei nomi di Event Grid

L'endpoint privato e la zona DNS di Griglia di eventi sono già stati creati in Creare endpoint privati e zone DNS. Disabilitare ora l'accesso pubblico:

az eventgrid namespace update \
  --name <namespace> \
  --resource-group <resource-group> \
  --public-network-access Disabled

Verificare che l'accesso pubblico sia disabilitato:

az eventgrid namespace show --name <namespace> --resource-group <resource-group> --query "publicNetworkAccess"

Passaggio 4: Verificare che il DNS venga risolto in un indirizzo IP privato

Dal nodo del cluster (o da una macchina virtuale nella stessa rete virtuale), verificare che il nome di dominio completo sia risolto nell'indirizzo IP dell'endpoint privato:

nslookup <namespace>.<region>-1.ts.eventgrid.azure.net

Il risultato deve restituire un indirizzo IP nell'intervallo di indirizzi privati ,ad esempio 10.x.x.x, non un indirizzo IP pubblico. Se restituisce un indirizzo IP pubblico, controlla il collegamento zona DNS privata.

Passaggio 5: Creare l'endpoint del flusso di dati per Griglia di eventi

Creare un endpoint del flusso di dati MQTT di Event Grid. In questo modo viene creato un endpoint usando l'autenticazione dell'identità gestita assegnata dal sistema. L'host utilizza il nome host MQTT del namespace Event Grid sulla porta 8883. Non è necessaria alcuna configurazione speciale per collegamento privato: il flusso di dati risolve il nome di dominio completo tramite DNS, che restituisce l'ip dell'endpoint privato se le zone DNS sono configurate correttamente.

  1. Passare all'esperienza Operazioni di Azure IoT.
  2. Creare un endpoint del flusso di dati di Event Grid per MQTT, con l'host impostato su <namespace>.<region>-1.ts.eventgrid.azure.net.

Per altre informazioni, vedere Configurare gli endpoint del flusso di dati MQTT per Griglia di eventi.

Passaggio 6: Creare un flusso di dati da testare

Creare un flusso di dati che instrada i messaggi broker MQTT alla destinazione griglia di eventi.

  1. Passare all'esperienza Operazioni di Azure IoT.
  2. Selezionare Flussi di dati>Crea flusso di dati.
  3. Impostare l'origine sull'endpoint predefinito del broker MQTT.
  4. Impostare la destinazione sull'oggetto eventgrid-private-endpoint creato.
  5. Impostare l'argomento di destinazione su un argomento corrispondente al modello di spazio degli argomenti.
  6. Applicare il dataflow.

Passaggio 7: Convalidare che i dati di telemetria arrivino in Event Grid

Pubblicare un messaggio di test nel broker MQTT usando qualsiasi client MQTT. Ad esempio, con mosquitto_pub:

mosquitto_pub -h <cluster-host-ip> -p 1883 -t "test/eventgrid" -m '{"temperature": 25.5}'

Annotazioni

Questo esempio usa la porta 1883 (non TLS) per la convalida rapida. Se il listener del broker MQTT è configurato con TLS, usare la porta 8883 e fornire gli argomenti --cafile, --cert e --key appropriati. Per la produzione, usare sempre listener abilitati per TLS.

Verificare quindi che il flusso di dati funzioni:

  1. Accedi al namespace Event Grid nel portale di Azure.

  2. Controllare le metriche per i messaggi MQTT in ingresso.

    Screenshot delle metriche dello spazio dei nomi di Griglia eventi che mostra i messaggi MQTT pubblicati con successo.

  3. Verificare che i log del pod del flusso di dati mostrino la consegna riuscita dei messaggi:

    kubectl logs -n azure-iot-operations -l app=dataflow --tail=50
    

Se i messaggi vengono trasmessi, il flusso di dati viene eseguito correttamente tramite l'endpoint privato con l'autenticazione dell'identità gestita. Se i messaggi non arrivano, vedere Messaggi del flusso di dati non arrivano in Griglia di eventi.

Dopo aver disabilitato l'accesso pubblico su qualsiasi risorsa Azure, verificare che Operazioni di Azure IoT sia ancora integro. Vedere Verifica l'integrità di Operazioni di Azure IoT dopo il lockdown.

Limitazioni note

  • Convalida della piattaforma: I modelli di connettività privata descritti di seguito sono basati su K3 convalidati in scenari Ubuntu Server 24.04. Altre distribuzioni o sistemi operativi Kubernetes non sono state convalidate in modo indipendente.
  • Creazione del Registro schemi: Il Registro schemi potrebbe richiedere l'accesso pubblico abilitato in fase di creazione. Dopo la creazione, l'accesso pubblico può essere disabilitato e ci si può affidare a endpoint privati più il bypass di servizi attendibili. Usare il flag --skip-ra quando si crea il Registro Schemi per evitare di richiedere autorizzazioni a livello di proprietario.
  • Ispezione TLS: Arc Gateway non supporta la terminazione o l'ispezione TLS. Se il firewall esegue l'ispezione TLS, è necessario escludere l'endpoint di Arc Gateway dall'ispezione. Vedere Il gateway Arc e l'ispezione TLS.
  • Limiti di Arc Gateway: Sono supportate al massimo cinque risorse di Arc Gateway per ogni sottoscrizione.
  • Explicit Proxy: È stato convalidato solo Firewall di Azure proxy esplicito. I proxy di terze parti (ad esempio Palo Alto) o proxy trasparenti non sono supportati in scenari convalidati. Operazioni di Azure IoT non supporta i server proxy che richiedono un certificato attendibile.