Dela via


Snabbstart: Köra Azure IoT-åtgärder i GitHub Codespaces med K3s

I den här snabbstarten distribuerar du Azure IoT Operations till ett Azure Arc-aktiverat Kubernetes-kluster så att du kan fjärrhantera dina enheter och arbetsbelastningar. I slutet av snabbstarten har du ett kluster som du kan hantera från molnet. Resten av snabbstarterna i den här serien från slutpunkt till slutpunkt bygger på den här för att definiera exempeltillgångar, databearbetningspipelines och visualiseringar.

Innan du börjar

Den här serien med snabbstarter är avsedd att hjälpa dig att komma igång med Azure IoT Operations så snabbt som möjligt så att du kan utvärdera ett scenario från slutpunkt till slutpunkt. I en verklig utvecklings- eller produktionsmiljö utför flera team som arbetar tillsammans dessa uppgifter och vissa uppgifter kan kräva utökade behörigheter.

För bästa nya användarupplevelse rekommenderar vi att du använder ett kostnadsfritt Azure-konto så att du har ägarbehörighet för resurserna i dessa snabbstarter.

Vi använder också GitHub Codespaces som en virtuell miljö för den här snabbstarten så att du kan testa scenariot utan att installera nya verktyg på dina egna datorer. Men om du vill distribuera Azure IoT Operations till ett lokalt kluster på Ubuntu eller Azure Kubernetes Service (AKS) kan du läsa Förbereda ditt Azure Arc-aktiverade Kubernetes-kluster.

Förutsättningar

Förbered följande förutsättningar innan du börjar:

  • En Azure-prenumeration Om du inte har en Azure-prenumeration skapar du en kostnadsfritt innan du börjar.

  • Ett GitHub-konto.

  • Visual Studio Code installerat på utvecklingsdatorn. Mer information finns i Ladda ned Visual Studio Code.

  • Behörigheter för Microsoft.Authorization/roleAssignments/write på resursgruppsnivå.

Vilket problem kommer vi att lösa?

Azure IoT Operations är en uppsättning datatjänster som körs i Kubernetes-kluster. Du vill att dessa kluster ska fjärrhanteras från molnet och kunna kommunicera säkert med molnresurser och slutpunkter. Vi tar itu med dessa problem med följande uppgifter i den här snabbstarten:

  1. Skapa ett Kubernetes-kluster i GitHub Codespaces.
  2. Anslut klustret till Azure Arc för fjärrhantering.
  3. Skapa ett schemaregister.
  4. Distribuera Azure IoT Operations till klustret.

Skapa kluster

Azure IoT Operations kan distribueras till K3s på Ubuntu, Azure Kubernetes Service (AKS) Edge Essentials och AKS på Azure Local. Men för snabbhet och bekvämlighet använder den här snabbstarten GitHub Codespaces som värd för klustret. Information om hur du distribuerar Azure IoT-åtgärder till ett kluster i Windows eller Ubuntu i stället finns i Förbereda ditt Azure Arc-aktiverade Kubernetes-kluster.

Kommentar

Kodutrymmen är enkla att konfigurera snabbt och ta ned senare, men de är inte lämpliga för prestandautvärdering eller skalningstestning. Använd Endast GitHub Codespaces för utforskning.

Codespaces-miljön räcker för att slutföra snabbstartsstegen, men stöder inte avancerade konfigurationer.

I det här avsnittet skapar du ett nytt kluster. Om du vill återanvända ett kluster som du distribuerade Azure IoT-åtgärder till tidigare läser du stegen i Rensa resurser för att avinstallera Azure IoT Operations innan du fortsätter.

Kodområdet Azure-Samples/explore-iot-operations är förkonfigurerat med:

Använd följande steg för att skapa ditt kodområde och kluster:

  1. Skapa ett kodområde i GitHub Codespaces.

    Skapa ett explore-iot-operations-kodområde

  2. Ange följande rekommenderade hemligheter för ditt kodområde:

    Parameter Värde
    SUBSCRIPTION_ID ditt prenumerations-ID för Azure
    RESOURCE_GROUP Ett namn på en ny Azure-resursgrupp där klustret ska skapas.
    PLATS En Azure-region nära dig. Listan över regioner som stöds finns i Regioner som stöds.

    Dricks

    De värden som du anger som hemligheter i det här steget sparas på ditt GitHub-konto som ska användas i dessa och framtida kodområden. De läggs till som miljövariabler i kodområdesterminalen och du kan använda dessa miljövariabler i CLI-kommandona i nästa avsnitt.

    Dessutom skapar det här kodområdet en CLUSTER_NAME miljövariabel som anges med kodområdesnamnet.

  3. Välj Skapa nytt kodområde.

  4. När kodområdet är klart väljer du menyknappen längst upp till vänster och väljer sedan Öppna i VS Code Desktop.

    Skärmbild som visar hur du öppnar kodområdet i VS Code Desktop.

  5. Om du uppmanas till det installerar du GitHub Codespaces-tillägget för Visual Studio Code och loggar in på GitHub.

  6. I Visual Studio Code väljer du Visa>terminal.

    Använd den här terminalen för att köra alla CLI-kommandon för att hantera klustret.

Ansluta kluster till Azure Arc

Så här ansluter du klustret till Azure Arc:

  1. Logga in på Azure CLI i kodområdesterminalen:

    az login
    

    Dricks

    Om du använder GitHub-kodområdesmiljön i en webbläsare i stället för VS Code-skrivbordet returnerar körningen az login ett localhost-fel. Åtgärda felet genom att antingen:

    • Öppna kodområdet i VS Code-skrivbordet och gå sedan tillbaka till webbläsarterminalen och kör az loginigen.
    • Eller när du har fått localhost-felet i webbläsaren kopierar du URL:en från webbläsaren och kör curl "<URL>" den på en ny terminalflik. Du bör se ett JSON-svar med meddelandet "Du har loggat in på Microsoft Azure!."
  2. När du har loggat in visar Azure CLI alla dina prenumerationer och anger din standardprenumeration med en asterisk *. Om du vill fortsätta med din standardprenumeration väljer du Enter. Annars anger du numret på den Azure-prenumeration som du vill använda.

  3. Registrera nödvändiga resursprovidrar i din prenumeration:

    Kommentar

    Det här steget behöver bara köras en gång per prenumeration. Om du vill registrera resursprovidrar behöver du behörighet att utföra åtgärden /register/action , som ingår i rollerna deltagare och ägare i prenumerationen. Mer information finns i Azure-resursprovidrar och typer.

    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. Använd kommandot az group create för att skapa en resursgrupp i din Azure-prenumeration för att lagra alla resurser:

    az group create --location $LOCATION --resource-group $RESOURCE_GROUP
    
  5. Använd kommandot az connectedk8s connect för att Arc-aktivera ditt Kubernetes-kluster och hantera det som en del av din Azure-resursgrupp:

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

    Dricks

    Värdet $CLUSTER_NAME för anges automatiskt till namnet på ditt kodområde. Ersätt miljövariabeln om du vill använda ett annat namn.

  6. Hämta det objectId Microsoft Entra-ID-program som Azure Arc-tjänsten använder i din klientorganisation och spara det som en miljövariabel. Kör följande kommando exakt som skrivet, utan att ändra GUID-värdet.

    export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
    
  7. Använd kommandot az connectedk8s enable-features för att aktivera stöd för anpassad plats i klustret. Det här kommandot använder objectId det Microsoft Entra-ID-program som Azure Arc-tjänsten använder. Kör det här kommandot på datorn där du distribuerade Kubernetes-klustret:

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

Skapa lagringskonto och schemaregister

Schemaregistret är en synkroniserad lagringsplats som lagrar meddelandedefinitioner både i molnet och på gränsen. Azure IoT Operations kräver ett schemaregister i klustret. Schemaregistret kräver ett Azure-lagringskonto för schemainformationen som lagras i molnet.

Kommandot för att skapa ett schemaregister i det här avsnittet kräver behörigheten Microsoft.Authorization/roleAssignments/write på resursgruppsnivå. Den här behörigheten används för att ge schemaregistret en deltagarroll så att den kan skriva till lagringskontot.

Kör följande CLI-kommandon i codespaces-terminalen.

  1. Ange miljövariabler för de resurser som du skapar i det här avsnittet.

    Platshållare Värde
    <STORAGE_ACCOUNT_NAME> Ett namn på lagringskontot. Lagringskontonamn måste vara mellan 3 och 24 tecken långa och endast innehålla siffror och gemener.
    <SCHEMA_REGISTRY_NAME> Ett namn på schemaregistret.
    <SCHEMA_REGISTRY_NAMESPACE> Ett namn på schemaregistrets namnområde. Namnområdet identifierar unikt ett schemaregister i en klientorganisation.
    STORAGE_ACCOUNT=<STORAGE_ACCOUNT_NAME>
    SCHEMA_REGISTRY=<SCHEMA_REGISTRY_NAME>
    SCHEMA_REGISTRY_NAMESPACE=<SCHEMA_REGISTRY_NAMESPACE>
    
  2. Skapa ett lagringskonto med hierarkiskt namnområde aktiverat.

    az storage account create --name $STORAGE_ACCOUNT --location $LOCATION --resource-group $RESOURCE_GROUP --enable-hierarchical-namespace
    
  3. Skapa ett schemaregister som ansluter till ditt lagringskonto. Det här kommandot skapar också en blobcontainer med namnet scheman i lagringskontot .

    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)
    

Distribuera Azure IoT-åtgärder

I det här avsnittet konfigurerar du klustret med beroendena för dina Azure IoT Operations-komponenter och distribuerar sedan Azure IoT Operations.

Kör följande CLI-kommandon i codespaces-terminalen.

  1. Initiera klustret för Azure IoT Operations.

    Dricks

    Kommandot init behöver bara köras en gång per kluster. Om du återanvänder ett kluster som redan har den senaste versionen av Azure IoT Operations distribuerad på det kan du hoppa över det här steget.

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

    Det kan ta flera minuter att slutföra det här kommandot. Du kan se förloppet i distributionsframsteget i terminalen.

  2. Distribuera Azure IoT-åtgärder.

    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
    

    Det kan ta flera minuter att slutföra det här kommandot. Du kan se förloppet i distributionsframsteget i terminalen.

    Om du får ett felmeddelande om att enheten måste hanteras för att komma åt resursen kör az login du igen och ser till att du loggar in interaktivt med en webbläsare.

Visa resurser i kluster

När distributionen är klar kan du använda kubectl-kommandon för att observera ändringar i klustret eller, eftersom klustret är Arc-aktiverat, kan du använda Azure Portal.

Om du vill visa poddarna i klustret kör du följande kommando:

kubectl get pods -n azure-iot-operations

Om du vill visa dina resurser på Azure Portal använder du följande steg:

  1. I Azure Portal går du till resursgruppen som innehåller din Azure IoT Operations-instans eller söker efter och väljer Azure IoT Operations.

  2. Välj namnet på din Azure IoT Operations-instans.

  3. På sidan Översikt för din instans väljer du fliken Resurssammanfattning för att visa etableringstillståndet för de resurser som har distribuerats till klustret.

    Skärmbild som visar Azure IoT Operations-instansen i ditt Arc-aktiverade kluster.

Hur löste vi problemet?

I den här snabbstarten konfigurerade du ditt Arc-aktiverade Kubernetes-kluster så att det kunde kommunicera säkert med dina Azure IoT Operations-komponenter. Sedan distribuerade du dessa komponenter till klustret. I det här testscenariot har du ett enda Kubernetes-kluster som körs i Codespaces. I ett produktionsscenario kan du dock använda samma steg för att distribuera arbetsbelastningar till många kluster på många platser.

Rensa resurser

Om du fortsätter till nästa snabbstart behåller du alla dina resurser.

Om du vill ta bort Azure IoT Operations-distributionen men behålla klustret använder du kommandot az iot ops delete :

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

Om du vill ta bort alla resurser som du skapade för den här snabbstarten tar du bort Kubernetes-klustret där du distribuerade Azure IoT-åtgärder och tar sedan bort azure-resursgruppen som innehöll klustret.

Om du använde Codespaces för dessa snabbstarter tar du bort ditt Codespace från GitHub.

Gå vidare