Prepara un cluster per Operazioni di Azure IoT

Un cluster Kubernetes abilitato per Azure Arc è un prerequisito per la distribuzione di Operazioni di Azure IoT. Questo articolo descrive come preparare quel cluster, con indicazioni per Ubuntu, Windows, Azure Locale e vSphere Kubernetes Service (VKS).

Per distribuire Operazioni di Azure IoT rapidamente ed eseguire un carico di lavoro di esempio in un ambiente di test, vedere Quickstart: Eseguire Operazioni di Azure IoT in GitHub Codespaces con K3s.

Prerequisiti

Per le implementazioni multi-nodo, usa K3s su Ubuntu, AKS su Azure Locale o vSphere Kubernetes Service (VKS). .NET Aspire in Windows supporta solo distribuzioni a nodo singolo.

Per preparare un cluster Kubernetes abilitato per Azure Arc, è necessario:

  • Una sottoscrizione Azure con il ruolo Owner o una combinazione dei ruoli Contributor e Amministratore accesso utente. È possibile controllare il livello di accesso passando alla sottoscrizione, selezionando Controlla di accesso (IAM) sul lato sinistro del portale di Azure e quindi selezionando Visualizzare l'accesso. Se non si ha una sottoscrizione Azure, crearne una gratuitamente prima di iniziare.

  • Il interfaccia della riga di comando di Azure installato nel computer di sviluppo. Controlla le estensioni interfaccia della riga di comando di Azure disponibili per la versione minima richiesta per l'estensione connectedk8s. Usare az --version per controllare la versione e az upgrade per aggiornarla, se necessario. Per altre informazioni, vedere Installare il interfaccia della riga di comando di Azure.

  • L'estensione connectedk8s per la interfaccia della riga di comando di Azure. Usare il comando seguente per aggiungere l'estensione o aggiornarla alla versione più recente:

    az extension add --upgrade --name connectedk8s
    
  • Gruppo di risorse Azure. Per ogni gruppo di risorse è supportata una sola istanza di Operazioni di Azure IoT. Per creare un nuovo gruppo di risorse, usare il comando az group create. Per l'elenco delle aree Azure attualmente supportate, vedere Aree supportate.

    az group create --location $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
    

Gli esempi interfaccia della riga di comando di Azure in questo articolo usano variabili di ambiente così puoi impostare ogni valore una volta e poi copiare e incollare i comandi as-is. Se stai usando l'ambiente Operazioni di Azure IoT Codespaces dal quickstart, queste variabili sono già impostate per te e puoi saltare questo passaggio. Altrimenti, imposta le seguenti variabili di ambiente nella tua shell prima di eseguire i comandi.

I seguenti script impostano le variabili di ambiente più comunemente utilizzate:

Variabile di ambiente Description
SUBSCRIPTION_ID L'ID della sottoscrizione che contiene l'istanza di Operazioni di Azure IoT.
RESOURCE_GROUP Il nome del gruppo di risorse che contiene la tua istanza Operazioni di Azure IoT.
AIO_INSTANCE_NAME Il nome dell'istanza di Operazioni di Azure IoT. Per elencare le tue istanze, esegui az iot ops list -o table.
CLUSTER_NAME Il nome del cluster Kubernetes abilitato Azure Arc che ospita la tua istanza.
LOCATION La regione Azure da utilizzare per nuove risorse, ad esempio eastus.
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
AIO_INSTANCE_NAME=<instance-name>
CLUSTER_NAME=<cluster-name>
LOCATION=<region>

Devi solo impostare le variabili utilizzate in questo articolo. Questo articolo potrebbe utilizzare variabili ambientali aggiuntive per i nomi delle risorse che scegli. L'articolo spiega come posizionarli dove vengono introdotti.

Creare e abilitare Arc per un cluster

Questa sezione fornisce i passaggi per creare cluster in ambienti validati su Ubuntu, Windows, Azure Locale e vSphere Kubernetes Service (VKS).

Per preparare un cluster Kubernetes K3s in Ubuntu:

  1. Creare un cluster K3s a nodo singolo o multinodo. Per esempi, vedere la guida introduttiva di K3s o i progetti correlati a K3s.

  2. Controlla che K3s sia installato kubectl. In caso contrario, seguire le istruzioni per installare kubectl su Linux.

    kubectl version --client
    
  3. Seguire le istruzioni per installare Helm.

  4. Crea un file YAML di configurazione K3s in .kube/config:

    mkdir ~/.kube
    sudo KUBECONFIG=~/.kube/config:/etc/rancher/k3s/k3s.yaml kubectl config view --flatten > ~/.kube/merged
    mv ~/.kube/merged ~/.kube/config
    chmod  0600 ~/.kube/config
    export KUBECONFIG=~/.kube/config
    #switch to k3s context
    kubectl config use-context default
    sudo chmod 644 /etc/rancher/k3s/k3s.yaml
    
  5. Eseguire il comando seguente per aumentare i limiti di controllo/istanza dell'utente.

    echo fs.inotify.max_user_instances=8192 | sudo tee -a /etc/sysctl.conf
    echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
    
    sudo sysctl -p
    
  6. Per prestazioni migliori, aumentare il limite del descrittore di file:

    echo fs.file-max = 100000 | sudo tee -a /etc/sysctl.conf
    
    sudo sysctl -p
    

Abilita Azure Arc nel tuo cluster K3s

Collega il tuo cluster ad Azure Arc così potrai gestirlo da remoto.

  1. Da una macchina che ha kubectl accesso al tuo cluster, accedi a interfaccia della riga di comando di Azure con il tuo account utente Microsoft Entra che contiene i ruoli richiesti per l'abbonamento Azure:

    az login
    

    Se in qualsiasi momento ricevi un errore che dice che il tuo dispositivo deve essere gestito per accedere alla tua risorsa, riavvia az login e assicurati di accedere in modo interattivo tramite un browser.

  2. Dopo aver effettuato l'accesso, la interfaccia della riga di comando di Azure mostra tutti i tuoi abbonamenti e indica il tuo abbonamento predefinito 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.

    Note

    Devi eseguire questo passaggio solo una volta per abbonamento. Per registrare i fornitori di risorse, è necessario il permesso per svolgere l'operazione /register/action , che include i ruoli di Contributore e Proprietario in abbonamento. 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 connectedk8s connect per abilitare Arc il cluster Kubernetes e gestirlo come parte del gruppo di risorse Azure.

    az connectedk8s connect --name $CLUSTER_NAME -l $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID --enable-oidc-issuer --enable-workload-identity --disable-auto-upgrade
    

    Per evitare aggiornamenti non pianificati per Azure Arc e le estensioni di sistema Arc che Operazioni di Azure IoT usa come dipendenze, questo comando disabilita l'aggiornamento automatico. Invece, Aggiornare manualmente gli agenti in base alle esigenze.

    Importante

    Se l'ambiente usa un server proxy o un gateway Azure Arc, modificare il comando az connectedk8s connect con le informazioni del proxy:

    1. Seguire le istruzioni riportate in Connettersi usando un server proxy in uscita o Integrare i cluster Kubernetes in Azure Arc con Azure Arc Gateway.
    2. Aggiungere 169.254.169.254 al parametro --proxy-skip-range del comando az connectedk8s connect. Azure Registro dispositivi usa questo endpoint locale per ottenere i token di accesso per l'autorizzazione.

    Operazioni di Azure IoT non supporta i server proxy che richiedono un certificato attendibile.

  5. Ottenere l'URL dell'autorità di certificazione del cluster.

    az connectedk8s show --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --query oidcIssuerProfile.issuerUrl --output tsv
    

    Salvare l'output di questo comando da usare nei passaggi successivi.

  6. Crea un file di configurazione K3s.

    sudo nano /etc/rancher/k3s/config.yaml
    
  7. Aggiungere il contenuto seguente al file config.yaml, sostituendo il segnaposto <SERVICE_ACCOUNT_ISSUER> con l'URL dell'autorità di certificazione del cluster.

    kube-apiserver-arg:
     - service-account-issuer=<SERVICE_ACCOUNT_ISSUER>
     - service-account-max-token-expiration=24h
    
  8. Salvare il file e uscire dall'editor nano.

  9. Prepararsi per abilitare il servizio Azure Arc, posizione personalizzata, nel cluster Arc ottenendo l'ID dell'oggetto posizione personalizzata e salvandolo come variabile d'ambiente, OBJECT_ID. Devi accedere ad interfaccia della riga di comando di Azure con un account utente Microsoft Entra, non un principale di servizio, per eseguire correttamente il comando. 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)
    

    Note

    Se viene visualizzato l'errore: "Impossibile recuperare l'oid dell'app 'custom-locations'. Procedere senza abilitare la funzionalità. Privilegi insufficienti per completare l'operazione", l'entità servizio potrebbe non disporre delle autorizzazioni necessarie per recuperare l'ID oggetto della posizione personalizzata. Accedi a interfaccia della riga di comando di Azure con un account utente Microsoft Entra che soddisfi i prerequisiti. Per altre informazioni, vedere Creare e gestire posizioni personalizzate.

  10. Usare il comando az connectedk8s enable-features per abilitare la funzionalità di posizione personalizzata nel cluster Arc. Questo comando utilizza la variabile di ambiente OBJECT_ID che hai salvato nel passaggio precedente per impostare il valore del parametro custom-locations-oid. 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
    
  11. Riavviare K3s.

    systemctl restart k3s
    

Configura Azure Container Storage abilitato tramite Azure Arc

Funzionalità come gli endpoint di archiviazione locale del flusso di dati e il connettore multimediale possono utilizzare opzionalmente Azure Archiviazione di Contenitori abilitata da Azure Arc (ACSA) per sincronizzare i dati locali con il cloud. ACSA non viene installato come parte di Operazioni di Azure IoT, quindi devi installarlo separatamente.

Per imparare come installare ACSA sul tuo cluster Kubernetes:

Passaggi successivi

Ora che si dispone di un cluster Kubernetes abilitato per Azure Arc, è possibile distribuire Operazioni di Azure IoT.