Guida introduttiva: eseguire l'anteprima delle Operazioni di Azure IoT in Github Codespaces con K3s

Importante

Anteprima di Operazioni di Azure IoT – Abilitata da Azure Arc è attualmente in anteprima. Non è consigliabile usare questo software di anteprima negli ambienti di produzione.

Sarà necessario distribuire una nuova installazione di Azure IoT Operations quando diventa disponibile una versione disponibile a livello generale. Non sarà possibile aggiornare un'installazione di anteprima.

Vedere le condizioni per l'utilizzo supplementari per le anteprime di Microsoft Azure per termini legali aggiuntivi che si applicano a funzionalità di Azure in versione beta, in anteprima o in altro modo non ancora disponibili a livello generale.

In questa guida introduttiva si distribuisce una suite di servizi IoT in un cluster Kubernetes abilitato per Azure Arc in modo da poter gestire da remoto i dispositivi e i carichi di lavoro. Operazioni di Azure IoT è una suite di servizi digitali. Questa guida introduttiva illustra l'uso di Orchestrator per distribuire questi servizi in un cluster Kubernetes. Al termine della guida introduttiva è disponibile un cluster che è possibile gestire dal cloud che genera dati di esempio da usare nelle guide introduttive seguenti.

Le altre guide introduttive di questa serie end-to-end si basano su questa per definire asset di esempio, pipeline di elaborazione dati e visualizzazioni.

Per distribuire le operazioni di Azure IoT in un cluster locale, ad esempio servizio Azure Kubernetes Edge Essentials o K3s in Ubuntu, vedere Dettagli della distribuzione.

Operazioni preliminari

Questa serie di guide introduttive è progettata per iniziare a usare le operazioni di Azure IoT il più rapidamente possibile, in modo da poter valutare uno scenario end-to-end. In un vero ambiente di sviluppo o produzione, più team che lavorano insieme eseguono queste attività e alcune attività potrebbero richiedere autorizzazioni elevate.

Per un'esperienza utente ottimale, è consigliabile usare un account gratuito di Azure in modo da disporre delle autorizzazioni di proprietario per le risorse in queste guide introduttive. Vengono inoltre forniti i passaggi per usare GitHub Codespaces come ambiente virtuale in cui è possibile iniziare rapidamente a distribuire le risorse ed eseguire comandi senza installare nuovi strumenti nei propri computer.

Prerequisiti

Per questa guida introduttiva si crea un cluster Kubernetes per ricevere la distribuzione di Operazioni IoT di Azure.

Per riutilizzare un cluster in cui sono già state distribuite le operazioni IoT di Azure, fare riferimento alla procedura descritta in Pulire le risorse per disinstallare le operazioni di Azure IoT prima di continuare.

Prima di iniziare, preparare i prerequisiti seguenti:

  • Una sottoscrizione di Azure. Se non si dispone di sottoscrizione di Azure, crearne una gratuitamente prima di iniziare.

  • Un account GitHub.

  • Visual Studio Code, installato nel computer di sviluppo. Per altre informazioni, vedere Scaricare Visual Studio Code.

  • Autorizzazioni Microsoft.Authorization/roleAssignments/write a livello di gruppo di risorse.

Quale problema risolveremo?

Operazioni di Azure IoT è una suite di servizi dati eseguiti nei cluster Kubernetes. Si vuole che questi cluster vengano gestiti da remoto dal cloud e in grado di comunicare in modo sicuro con le risorse e gli endpoint cloud. Questi problemi vengono affrontati con le attività seguenti in questa guida introduttiva:

  1. Creare un cluster Kubernetes e connetterlo ad Azure Arc per la gestione remota.
  2. Creare un registro schemi.
  3. Distribuire Operazioni di Azure IoT nel cluster.

Connettere un cluster Kubernetes ad Azure Arc

Le operazioni IoT di Azure supportano servizio Azure Kubernetes (AKS) Edge Essentials e K3s nei cluster Ubuntu. Tuttavia, per praticità e velocità, questa guida introduttiva usa GitHub Codespaces per ospitare il cluster.

I Codespaces sono facili da configurare rapidamente e rimuovere in un secondo momento, ma non sono adatti per la valutazione delle prestazioni o i test di scalabilità. Usare GitHub Codespaces solo per l'esplorazione. Per informazioni su come distribuire operazioni IoT di Azure in un cluster in Windows o Ubuntu, vedere Preparare il cluster Kubernetes abilitato per Azure Arc.

In questa sezione viene creato un nuovo cluster e connesso ad Azure Arc. Se si vuole riutilizzare un cluster in cui sono state distribuite le operazioni IoT di Azure in precedenza, vedere i passaggi descritti in Pulire le risorse per disinstallare le operazioni di Azure IoT prima di continuare.

Usare GitHub Codespaces per provare Operazioni IoT di Azure in un cluster Kubernetes senza installare alcun elemento nel computer locale. Il codespace Azure-Samples/explore-iot-operations è preconfigurato con:

Per creare il codespace e il cluster, seguire questa procedura:

  1. Creare un codespace in GitHub Codespaces.

    Creare un codespace explore-iot-operations

  2. Specificare i segreti consigliati seguenti per il codespace:

    Parametro Valore
    SUBSCRIPTION_ID L'ID sottoscrizione di Azure.
    RESOURCE_GROUP Nome di un nuovo gruppo di risorse di Azure in cui verrà creato il cluster.
    LOCATION Un'area di Azure nelle vicinanze. Per trovare l'elenco delle aree attualmente supportate, vedere Aree supportate.

    Suggerimento

    I valori specificati come segreti in questo passaggio vengono salvati nell'account GitHub da usare in questo e in futuro spazi di codice. Vengono aggiunte come variabili di ambiente nel terminale codespace ed è possibile usare tali variabili di ambiente nei comandi dell'interfaccia della riga di comando nella sezione successiva.

    Inoltre, questo spazio di codice crea una CLUSTER_NAME variabile di ambiente impostata con il nome dello spazio di codice.

  3. Selezionare Crea nuovo codespace.

  4. Quando Codespace è pronto, selezionare il pulsante di menu in alto a sinistra, quindi selezionare Apri in VS Code Desktop.

    Aprire VS Code Desktop

  5. Se richiesto, installare l'estensione GitHub Codespaces per Visual Studio Code e accedere a GitHub.

  6. In Visual Studio Code selezionare Visualizza>Terminale.

    Usare questo terminale per eseguire tutti i comandi dell'interfaccia della riga di comando per la gestione del cluster.

Per connettere il cluster ad Azure Arc:

  1. Nel terminale codespace accedere all'interfaccia della riga di comando di Azure:

    az login
    

    Suggerimento

    Se si usa l'ambiente codespace GitHub in un browser anziché in un desktop di VS Code, l'esecuzione az login restituisce un errore localhost. Per correggere l'errore, eseguire una delle operazioni seguenti:

    • Aprire il codespace nel desktop di VS Code, quindi tornare al terminale del browser ed eseguire az logindi nuovo.
    • In alternativa, dopo aver visualizzato l'errore localhost nel browser, copiare l'URL dal browser ed eseguire curl "<URL>" in una nuova scheda del terminale. Verrà visualizzata una risposta JSON con il messaggio "È stato eseguito l'accesso a Microsoft Azure!".
  2. Dopo l'accesso, l'interfaccia della riga di comando di Azure visualizza tutte le sottoscrizioni e indica la sottoscrizione predefinita con un asterisco *. Per continuare con la sottoscrizione predefinita, selezionare Enter. In caso contrario, digitare il numero della sottoscrizione di Azure che si vuole usare.

  3. Registrare i provider di risorse necessari nella sottoscrizione:

    Nota

    Questo passaggio deve essere eseguito una volta sola per ogni sottoscrizione. Per registrare i provider di risorse, è necessaria l'autorizzazione per eseguire l'operazione /register/action, inclusa nei ruoli Collaboratore e Proprietario della sottoscrizione. Per altre informazioni, vedere Provider e tipi di risorse di Azure.

    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. Usare il comando az group create per creare un gruppo di risorse nella sottoscrizione di Azure per archiviare tutte le risorse:

    az group create --location $LOCATION --resource-group $RESOURCE_GROUP
    
  5. Usare il comando az connectedk8s connect per abilitare il cluster Kubernetes per Arc e gestirlo come parte del gruppo di risorse di Azure:

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

    Suggerimento

    Il valore di $CLUSTER_NAME viene impostato automaticamente sul nome del codespace. Sostituire la variabile di ambiente se si desidera usare un nome diverso.

  6. Ottenere l'oggetto objectId dell'applicazione Microsoft Entra ID usata dal servizio Azure Arc nel tenant e salvarla come variabile di ambiente. Eseguire il comando seguente esattamente come scritto, senza modificare il valore GUID.

    export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
    
  7. Usare il comando az connectedk8s enable-features per abilitare il supporto della posizione personalizzata nel cluster. Questo comando usa il objectId dell'applicazione Microsoft Entra ID usata dal servizio Azure Arc.

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

Creare un account di archiviazione e un registro dello schema

Le operazioni IoT di Azure richiedono un registro schemi nel cluster. Il Registro schemi richiede un account di archiviazione di Azure in modo che possa sincronizzare le informazioni sullo schema tra cloud e edge.

Il comando per creare un registro schemi in questa sezione richiede le autorizzazioni Microsoft.Authorization/roleAssignments/write a livello di gruppo di risorse.

Eseguire i comandi dell'interfaccia della riga di comando seguenti nel terminale Codespaces.

  1. Impostare le variabili di ambiente per le risorse create in questa sezione.

    Segnaposto Valore
    <STORAGE_ACCOUNT_NAME> Nome per l'account di archiviazione. I nomi degli account di archiviazione devono avere una lunghezza compresa tra 3 e 24 caratteri e contenere solo numeri e lettere minuscole.
    <SCHEMA_REGISTRY_NAME> Nome del Registro di sistema dello schema.
    <SCHEMA_REGISTRY_NAMESPACE> Nome dello spazio dei nomi del Registro di sistema dello schema. Lo spazio dei nomi identifica in modo univoco un registro schemi all'interno di un tenant.
    export STORAGE_ACCOUNT=<STORAGE_ACCOUNT_NAME>
    export SCHEMA_REGISTRY=<SCHEMA_REGISTRY_NAME>
    export SCHEMA_REGISTRY_NAMESPACE=<SCHEMA_REGISTRY_NAMESPACE>
    
  2. Creare un account di archiviazione con spazio dei nomi gerarchico abilitato.

    az storage account create --name $STORAGE_ACCOUNT --location $LOCATION --resource-group $RESOURCE_GROUP --enable-hierarchical-namespace
    
  3. Creare un registro schemi che si connette all'account di archiviazione. Questo comando crea anche un contenitore BLOB denominato schemi nell'account di archiviazione, se non ne esiste già uno.

    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)
    

Distribuire Operazioni di Azure IoT (anteprima)

In questa sezione si configura il cluster con le dipendenze per i componenti di Operazioni IoT di Azure e quindi si distribuisce Azure IoT Operations.

Eseguire i comandi dell'interfaccia della riga di comando seguenti nel terminale Codespaces.

  1. Inizializzare il cluster per le operazioni IoT di Azure.

    Suggerimento

    Il init comando deve essere eseguito una sola volta per ogni cluster. Se si riutilizza un cluster che aveva già distribuito Azure IoT Operations versione 0.8.0, è possibile ignorare questo passaggio.

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

    Il completamento di questo comando potrebbe richiedere alcuni minuti. È possibile controllare lo stato di avanzamento della distribuzione visualizzato nel terminale.

  2. Distribuire le Operazioni di Azure IoT. Il completamento di questo comando richiede diversi minuti:

    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) --broker-frontend-replicas 1 --broker-frontend-workers 1  --broker-backend-part 1  --broker-backend-workers 1 --broker-backend-rf 2 --broker-mem-profile Low
    

    Il completamento di questo comando potrebbe richiedere alcuni minuti. È possibile controllare lo stato di avanzamento della distribuzione visualizzato nel terminale.

    Se viene visualizzato un errore che indica che Il dispositivo deve essere gestito per accedere alla risorsa, eseguire di nuovo az login e assicurarsi di accedere in modo interattivo con un browser.

Visualizzare le risorse nel cluster

Mentre la distribuzione è in corso, l'interfaccia di stato dell'interfaccia della riga di comando mostra la fase di distribuzione in cui ci si trova. Al termine della distribuzione, è possibile usare i comandi kubectl per osservare le modifiche nel cluster o, poiché il cluster è abilitato per Arc, è possibile usare il portale di Azure.

Per visualizzare i pod nel cluster, eseguire il comando seguente:

kubectl get pods -n azure-iot-operations

Per visualizzare le risorse nel portale di Azure, seguire questa procedura:

  1. Nel portale di Azure. passare al gruppo di risorse che contiene l'istanza di Operazioni di Azure IoT oppure cercare e selezionare Operazioni di Azure IoT.

  2. Selezionare il nome dell'istanza di Operazioni di Azure IoT.

  3. Nella pagina Panoramica dell'istanza, nella scheda Estensioni Arc vengono visualizzate le risorse distribuite nel cluster.

    Screenshot che mostra l'istanza di Operazioni di Azure IoT nel cluster abilitato per Arc.

Come abbiamo risolto il problema?

In questo argomento della guida introduttiva è stato configurato il cluster Kubernetes abilitato per Arc in modo che possa comunicare in modo sicuro con i componenti di Operazioni di Azure IoT. Quindi, questi componenti sono stati distribuiti nel cluster. Per questo scenario di test, è disponibile un singolo cluster Kubernetes che probabilmente è in esecuzione in locale nel computer. In uno scenario di produzione, tuttavia, è possibile usare gli stessi passaggi per distribuire i carichi di lavoro in molti cluster in molti siti.

Pulire le risorse

Se si continua con la guida introduttiva successiva, mantenere tutte le risorse.

Se si vuole rimuovere la distribuzione di Operazioni IoT di Azure ma mantenere il cluster, usare il comando az iot ops delete :

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

Per eliminare tutte le risorse create per questa guida introduttiva, eliminare il cluster Kubernetes in cui sono state distribuite le operazioni IoT di Azure e quindi rimuovere il gruppo di risorse di Azure che conteneva il cluster.

Se per questi argomenti della guida introduttiva è stato usato Codespaces, eliminare Codespace da GitHub.

Passaggio successivo