Condividi tramite


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

In questa guida introduttiva si distribuiscono Operazioni di Azure IoT in un cluster Kubernetes abilitato per Azure Arc in modo da poter gestire in remoto i dispositivi e i 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 consente di 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 una nuova esperienza utente ottimale, è consigliabile usare un account gratuito Azure in modo da disporre delle autorizzazioni di proprietario per le risorse in questi avvi rapidi.

Per questa guida introduttiva si usa GitHub Codespaces come ambiente virtuale, 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 Prepare 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. Guarda questi script su GitHub per una distribuzione pronta per la produzione con impostazioni sicure.

Prerequisiti

Prima di iniziare, preparare i prerequisiti seguenti:

  • Sottoscrizione Azure. Se non si ha una sottoscrizione Azure, crearne una gratuitamente prima di iniziare.

  • Un account GitHub.

  • Visual Studio Code installato nel computer di sviluppo. Per altre informazioni, vedere Download 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 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 gestiti con le attività seguenti in questo avvio rapido:

  1. Creare un cluster Kubernetes in GitHub Codespaces.
  2. Connettere il cluster a 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. Per riutilizzare un cluster distribuito Operazioni di Azure IoT in precedenza, vedere i passaggi descritti in Clean up resources per disinstallare Operazioni di Azure IoT prima di continuare.

Il Azure-Samples/explore-iot-operations codespace è preconfigurato con:

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

  1. Creare uno spazio di codice in GitHub Codespaces.

    Creare uno spazio di codice explore-iot-operations

  2. Specificare i segreti consigliati seguenti per il codespace:

    Parametro Valore
    SUBSCRIPTION_ID ID sottoscrizione Azure.
    Gruppo di risorse Nome di un nuovo gruppo di risorse Azure in cui verrà creato il cluster.
    UBICAZIONE Una regione di Azure vicina a te. 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 in futuro codespaces. 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 View>Terminal.

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

Connettere il cluster a Azure Arc

Per connettere il cluster a Azure Arc:

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

    az login
    

    Suggerimento

    Se si usa l'ambiente codespace di 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, 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 Azure che si desidera 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 Azure per archiviare tutte le risorse:

    az group create --location $LOCATION --resource-group $RESOURCE_GROUP
    
  5. Usare il comando az connectedk8s connect per abilitare Arc il cluster Kubernetes e gestirlo come parte del gruppo di risorse 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. Ottieni la objectId dell'applicazione Microsoft Entra ID utilizzata dal servizio Azure Arc nel tuo tenant e salvala 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 di Operazioni di Azure IoT. Per installare la versione più recente è necessaria la versione più recente dell'estensione dell'interfaccia della riga di comando di Operazioni di Azure IoT:

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 di sistema dello schema richiede un account di archiviazione 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 del 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 del Registro dei dispositivi Azure

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

Eseguire il seguente comando CLI per creare uno spazio dei nomi del Registro dei dispositivi Azure.

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

Distribuire le Operazioni di Azure IoT

In questa sezione si configura il cluster con le dipendenze per i componenti 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 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. Questo comando include il connettore opzionale per OPC UA che verrà utilizzato nei successivi quickstart.

    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  --feature opcua.mode=Stable
    

    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, poiché il cluster è abilitato per Arc, è possibile usare il portale di Azure.

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, seguire questa procedura:

  1. Nel portale 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 IoT di Azure nel cluster abilitato per Arc.

Come è stato risolto il problema?

In questa guida rapida, hai configurato il tuo cluster Kubernetes abilitato per Arc in modo che possa comunicare in modo sicuro con i tuoi componenti 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 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 questa guida introduttiva, eliminare il cluster Kubernetes in cui è stato distribuito Operazioni di Azure IoT e quindi rimuovere il gruppo di risorse Azure che conteneva il cluster.

Se per queste guide di avvio rapido è stato usato Codespaces, eliminare codespace da GitHub.

Passaggio successivo