Condividi tramite


Avvio rapido: Eseguire Operazioni di Azure IoT in GitHub Codespaces con K3s

In questo avvio rapido si distribuisce Operazioni di Azure IoT in un cluster Kubernetes abilitato per Azure Arc in modo che sia possibile gestire in remoto dispositivi e carichi di lavoro. Alla fine dell'avvio rapido, è disponibile un cluster che è possibile gestire dal cloud. Gli altri avvii rapidi di questa serie end-to-end si basano su questo per definire asset di esempio, pipeline di elaborazione dati e visualizzazioni.

Prima di iniziare

Questa serie di guide introduttive è progettata per iniziare a usare 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 questi avvii rapidi.

GitHub Codespaces viene usato 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 di Azure IoT in un cluster locale in Ubuntu o servizio Azure Kubernetes (AKS), vedere Preparare il cluster Kubernetes abilitato per Azure Arc.

Importante

Gli spazi di codice sono facili da configurare rapidamente e rimuovere in un secondo momento, ma non sono adatti per la produzione, 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 come le impostazioni sicure.

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 sul computer di sviluppo. Per altre informazioni, vedere Scaricare Visual Studio Code.

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

Quale problema si risolverà?

Operazioni di Azure IoT è una suite di servizi dati eseguiti in 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 gestiti con le attività seguenti in questo avvio rapido:

  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 un cluster

In questa sezione viene creato un nuovo cluster. Se si vuole riutilizzare un cluster in cui è stato distribuito Operazioni di Azure IoT in precedenza, vedere i passaggi descritti in Pulire le risorse per disinstallare 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 ID sottoscrizione di Azure.
    Gruppo di risorse Nome di un nuovo gruppo di risorse di Azure in cui verrà creato il cluster.
    UBICAZIONE Un'area di Azure nelle vicinanze. Per trovare l'elenco delle aree supportate, vedere Aree supportate.

    Suggerimento

    I valori specificati come segreti in questo passaggio vengono salvati nell'account GitHub da usare in questo e nei Codespaces futuri. 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 codespace crea una variabile di ambiente CLUSTER_NAME impostata con il nome del codespace.

  3. Selezionare Crea nuovo codespace.

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

    Screenshot che mostra l'apertura del codespace 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 di 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 nuovamente az login.
    • 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:

    Suggerimento

    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. Usare 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
    

Installare la versione più recente di az iot ops

Questa guida introduttiva usa la versione più recente delle operazioni IoT di Azure. Per installare la versione più recente è necessaria l'ultima versione dell'estensione dell'interfaccia della riga di comando di Azure IoT Operations:

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

Creare un account di archiviazione e un registro schemi

Il registro schemi è un repository sincronizzato che archivia le definizioni dei messaggi sia nel cloud che nella rete perimetrale. Operazioni di Azure IoT richiede 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 schemi un ruolo di collaboratore in modo che possa scrivere nell'account di archiviazione.

Usare 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> Un nome per l'account di archiviazione. I nomi degli account di archiviazione devono avere una lunghezza compresa tra 3 e 24 caratteri e devono contenere solo numeri e lettere minuscole.
    <SCHEMA_REGISTRY_NAME> Nome del registro schemi. I nomi del registro schemi possono contenere solo numeri, lettere minuscole e trattini.
    <SCHEMA_REGISTRY_NAMESPACE> Un nome dello spazio dei nomi del registro schemi. Lo spazio dei nomi identifica in modo univoco un registro schemi all'interno di un tenant. I nomi degli spazi dei nomi del registro schemi possono contenere solo numeri, lettere minuscole e trattini.
    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 schemas 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)
    

Creare uno spazio dei nomi di Registro Dispositivi Azure

Operazioni di Azure IoT e Registro Dispositivi Azure usano gli spazi dei nomi per organizzare asset e dispositivi. Ogni istanza di Operazioni di Azure IoT usa un singolo spazio dei nomi per gli asset e i dispositivi.

Eseguire il comando dell'interfaccia della riga di comando seguente per creare uno spazio dei nomi del Registro Dispositivi Azure.

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

Distribuire Operazioni di Azure IoT

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

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

  1. Inizializzare il cluster per Operazioni di Azure IoT.

    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 di Azure IoT, è 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 della distribuzione visualizzato nel terminale.

  2. Distribuire 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) --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
    

    Il completamento di questo comando potrebbe richiedere alcuni minuti. È possibile controllare lo stato 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 usare il portale di Azure, poiché il cluster è abilitato per Arc.

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

kubectl get pods -n azure-iot-operations

Per visualizzare le risorse nel portale di Azure, usare i passaggi seguenti:

  1. Nella portale di Azure, passare al gruppo di risorse che contiene l'istanza di Operazioni di Azure IoT o cercare e selezionare Operazioni di Azure IoT.

  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 provisioning delle risorse distribuite nel cluster.

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

Come è stato risolto il problema?

In questo avvio rapido, è 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 l'avvio rapido successivo, mantenere tutte le risorse.

Se si vuole rimuovere la distribuzione di Operazioni di Azure IoT 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 questo avvio rapido, eliminare il cluster Kubernetes in cui è stato distribuito Operazioni di Azure IoT 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