Condividi tramite


Guida introduttiva: Eseguire operazioni IoT di Azure in GitHub Codespaces con K3s

In questa guida introduttiva si distribuiscono le operazioni di Azure IoT in un cluster Kubernetes abilitato per Azure Arc in modo che sia possibile gestire in remoto i dispositivi e i carichi di lavoro. Alla fine dell'avvio rapido è disponibile un cluster che è possibile gestire dal cloud. 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.

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.

GitHub Codespaces viene usato anche come ambiente virtuale per questa guida introduttiva in modo da poter testare lo scenario senza installare nuovi strumenti nei propri computer. Tuttavia, se si vuole distribuire operazioni IoT di Azure in un cluster locale in Ubuntu o servizio Azure Kubernetes (AKS), vedere Preparare il cluster Kubernetes abilitato per Azure Arc.

Prerequisiti

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 in GitHub Codespaces.
  2. Connettere il cluster ad Azure Arc per la gestione remota.
  3. Creare un registro schemi.
  4. Distribuire Operazioni di Azure IoT nel cluster.

Creare cluster

Le operazioni IoT di Azure possono essere distribuite in K3s in Ubuntu, servizio Azure Kubernetes (AKS) Edge Essentials e servizio Azure Kubernetes in Locale di Azure. Tuttavia, per praticità e velocità, questa guida introduttiva usa GitHub Codespaces per ospitare il cluster. Per informazioni su come distribuire operazioni IoT di Azure in un cluster in Windows o Ubuntu, vedere Preparare invece il cluster Kubernetes abilitato per Azure Arc.

Nota

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.

L'ambiente Codespaces è sufficiente per completare i passaggi di avvio rapido, ma non supporta configurazioni avanzate.

In questa sezione viene creato un nuovo cluster. Per riutilizzare un cluster in cui sono state distribuite le operazioni di Azure IoT in precedenza, fare riferimento alla procedura descritta in Pulire le risorse per disinstallare le operazioni di Azure IoT prima di continuare.

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.

    Screenshot che mostra l'apertura dello spazio di codice in 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.

Connettere il cluster ad Azure Arc

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. Eseguire questo comando nel computer in cui è stato distribuito il cluster Kubernetes:

    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

Il Registro di sistema dello schema è un repository sincronizzato che archivia le definizioni dei messaggi sia nel cloud che nella rete perimetrale. Le operazioni IoT di Azure richiedono un registro schemi nel cluster. Il Registro schemi richiede un account di archiviazione di Azure per le informazioni sullo schema archiviate nel cloud.

Il comando per creare un registro schemi in questa sezione richiede l'autorizzazione Microsoft.Authorization/roleAssignments/write a livello di gruppo di risorse. Questa autorizzazione viene usata per assegnare al Registro di sistema dello schema un ruolo di collaboratore in modo che possa scrivere nell'account di archiviazione.

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.
    STORAGE_ACCOUNT=<STORAGE_ACCOUNT_NAME>
    SCHEMA_REGISTRY=<SCHEMA_REGISTRY_NAME>
    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.

    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 le operazioni di Azure IoT

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 in cui è già stata distribuita la versione più recente di Operazioni IoT di Azure, è 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.

    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

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. Nella portale di Azure passare al gruppo di risorse che contiene l'istanza di Operazioni IoT di Azure o cercare e selezionare Operazioni IoT di Azure.

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

  3. Nella pagina Panoramica dell'istanza selezionare la scheda Riepilogo risorse per visualizzare lo stato di provisioning delle 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 in esecuzione in Codespaces. 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