Dela via


Snabbstart: Konfigurera förhandsversionen av Azure IoT Layered Network Management för att Arc-aktivera ett kluster i Azure-miljön

Viktigt!

Förhandsversion av Azure IoT Operations – aktiverad av Azure Arc är för närvarande i förhandsversion. Du bör inte använda den här förhandsgranskningsprogramvaran i produktionsmiljöer.

Du måste distribuera en ny Azure IoT Operations-installation när en allmänt tillgänglig version görs tillgänglig. Du kommer inte att kunna uppgradera en förhandsgranskningsinstallation.

Juridiska villkor för Azure-funktioner i betaversion, förhandsversion eller som av någon annan anledning inte har gjorts allmänt tillgängliga ännu finns i kompletterande användningsvillkor för Microsoft Azure-förhandsversioner.

I den här snabbstarten konfigurerar du förhandsversionen av Azure IoT Layered Network Management i ett Purdue-nätverk på nivå 4 och nivå 3. Nätverksnivå 4 har internetåtkomst och nivå 3 har inte det. Du konfigurerar Layered Network Management för att dirigera nätverkstrafik från nivå 3 till Azure. Slutligen kan du Arc-aktivera K3S-klustret på nivå 3, även om det inte är direkt anslutet till Internet.

  • Nivå 4 ett AKS-kluster med Layered Network Management distribuerat.
  • Nivå 3 är ett K3S-kluster som körs på en virtuell Linux-dator som använder instansen Layered Network Management på nivå 4 för att uppnå anslutning till Azure. Nivå 3-nätverket är konfigurerat för att ha utgående åtkomst till nivå 4-nätverket på portarna 443 och 8084. All annan utgående åtkomst är inaktiverad.

Layered Network Management-arkitekturen kräver DNS-konfiguration på nivå 3-nätverket, där de tillåtna URL:erna återpointas till nivå 4-nätverket. I det här exemplet utförs den här installationen med hjälp av en automatiserad konfiguration som bygger på CoreDNS, standardmekanismen för DNS-matchning som levereras med k3s.

Förutsättningar

De här förutsättningarna är bara för att distribuera Layered Network Management oberoende av varandra och Arc-aktivera klustret på den underordnade nivån.

  • Ett AKS-kluster
  • En virtuell Azure Linux Ubuntu 22.04.3 LTS-dator
  • En jumpbox- eller installationsdator som har åtkomst till Internet och både nivå 3- och nivå 4-nätverken

Distribuera förhandsversionen av layered network management till AKS-klustret

De här stegen distribuerar Layered Network Management till AKS-klustret. Klustret är det översta lagret i ISA-95-modellen. I slutet av det här avsnittet har du en instans av Layered Network Management som är redo att ta emot trafik från Azure Arc-aktiverat kluster nedan och som stöder distributionen av Azure IoT Operations Preview-tjänsten.

  1. Konfigurera kubectl för att hantera ditt AKS-kluster från jumpboxen genom att följa stegen i Anslut till klustret.

  2. Installera operatorn Layered Network Management med följande Azure CLI-kommando:

    az login
    
    az k8s-extension create --resource-group <RESOURCE GROUP> --name kind-lnm-extension --cluster-type connectedClusters --cluster-name <CLUSTER NAME> --auto-upgrade false --extension-type Microsoft.IoTOperations.LayeredNetworkManagement --version 0.1.0-preview --release-train preview
    
  3. Kontrollera att installationen lyckades genom att köra:

    kubectl get pods
    

    Du bör se utdata som ser ut som i följande exempel:

    NAME                                READY   STATUS        RESTARTS   AGE
    aio-lnm-operator-7db49dc9fd-kjf5x   1/1     Running       0          78s
    
  4. Skapa den anpassade resursen Layered Network Management genom att skapa en fil med namnet level4.yaml med följande innehåll:

    apiVersion: layerednetworkmgmt.iotoperations.azure.com/v1beta1
    kind: Lnm
    metadata:
      name: level4
      namespace: default
    spec:
      image:
        pullPolicy: IfNotPresent
        repository: mcr.microsoft.com/oss/envoyproxy/envoy-distroless
        tag: v1.27.0
      replicas: 1
      logLevel: "debug"
      openTelemetryMetricsCollectorAddr: "http://aio-otel-collector.azure-iot-operations.svc.cluster.local:4317"
      level: 4
      allowList:
        enableArcDomains: true
        domains:
        - destinationUrl: "*.arc.azure.net"
          destinationType: external
        - destinationUrl: "*.data.mcr.microsoft.com"
          destinationType: external
        - destinationUrl: "*.dp.kubernetesconfiguration.azure.com"
          destinationType: external
        - destinationUrl: "*.guestnotificationservice.azure.com"
          destinationType: external
        - destinationUrl: "*.his.arc.azure.com"
          destinationType: external
        - destinationUrl: "*.login.microsoft.com"
          destinationType: external
        - destinationUrl: "*.login.microsoftonline.com"
          destinationType: external
        - destinationUrl: "*.obo.arc.azure.com"
          destinationType: external
        - destinationUrl: "*.servicebus.windows.net"
          destinationType: external
        - destinationUrl: "graph.microsoft.com"
          destinationType: external
        - destinationUrl: "login.windows.net"
          destinationType: external
        - destinationUrl: "management.azure.com"
          destinationType: external
        - destinationUrl: "mcr.microsoft.com"
          destinationType: external
        - destinationUrl: "sts.windows.net"
          destinationType: external
        - destinationUrl: "*.ods.opinsights.azure.com"
          destinationType: external
        - destinationUrl: "graph.windows.net"
          destinationType: external
        - destinationUrl: "msit-onelake.pbidedicated.windows.net"
          destinationType: external
        - destinationUrl: "*.azurecr.io"
          destinationType: external
        - destinationUrl: "*.azureedge.net"
          destinationType: external
        - destinationUrl: "*.blob.core.windows.net"
          destinationType: external
        - destinationUrl: "*.prod.hot.ingestion.msftcloudes.com"
          destinationType: external
        - destinationUrl: "*.prod.microsoftmetrics.com"
          destinationType: external
        - destinationUrl: "adhs.events.data.microsoft.com"
          destinationType: external
        - destinationUrl: "dc.services.visualstudio.com"
          destinationType: external
        - destinationUrl: "go.microsoft.com"
          destinationType: external
        - destinationUrl: "packages.microsoft.com"
          destinationType: external
        - destinationUrl: "www.powershellgallery.com"
          destinationType: external
        - destinationUrl: "*.gw.arc.azure.com"
          destinationType: external
        - destinationUrl: "*.gcs.prod.monitoring.core.windows.net"
          destinationType: external
        - destinationUrl: "*.prod.warm.ingest.monitor.core.windows.net"
          destinationType: external
        - destinationUrl: "*.prod.hot.ingest.monitor.core.windows.net"
          destinationType: external
        - destinationUrl: "azure.archive.ubuntu.com"
          destinationType: external
        - destinationUrl: "crl.microsoft.com"
          destinationType: external
        - destinationUrl: "*.table.core.windows.net"
          destinationType: external
        - destinationUrl: "*.blob.storage.azure.net"
          destinationType: external
        - destinationUrl: "*.docker.com"
          destinationType: external
        - destinationUrl: "*.docker.io"
          destinationType: external
        - destinationUrl: "*.googleapis.com"
          destinationType: external
        - destinationUrl: "github.com"
          destinationType: external
        - destinationUrl: "collect.traefik.io"
          destinationType: external
        - destinationUrl: "contracts.canonical.com"
          destinationType: external
        - destinationUrl: "database.clamav.net"
          destinationType: external
        - destinationUrl: "esm.ubuntu.com"
          destinationType: external
        - destinationUrl: "livepatch.canonical.com"
          destinationType: external
        - destinationUrl: "motd.ubuntu.com"
          destinationType: external
        - destinationUrl: "update.traefik.io"
          destinationType: external
        sourceIpRange:
        - addressPrefix: "0.0.0.0"
          prefixLen: 0
    
  5. Om du vill skapa layered Network Management-instansen baserat på filen level4.yaml kör du:

    kubectl apply -f level4.yaml
    

    Det här steget skapar n poddar, en tjänst och två konfigurationskartor. n baseras på antalet repliker i den anpassade resursen.

  6. Verifiera instansen genom att köra:

    kubectl get pods
    

    Utdata bör se ut så här:

    NAME                                    READY       STATUS    RESTARTS       AGE
    aio-lnm-operator-7db49dc9fd-kjf5x       1/1         Running       0          78s
    aio-lnm-level4-7598574bf-2lgss          1/1         Running       0          4s
    
  7. Om du vill visa tjänsten kör du:

    kubectl get services
    

    Utdata bör se ut som i följande exempel:

    NAME              TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)                      AGE
    aio-lnm-level4    LoadBalancer   10.0.141.101   20.81.111.118   80:30960/TCP,443:31214/TCP   29s
    
  8. Om du vill visa konfigurationskartor kör du:

    kubectl get cm
    

    Utdata bör se ut som i följande exempel:

    NAME                           DATA   AGE
    aio-lnm-level4-config          1      50s
    aio-lnm-level4-client-config   1      50s
    
  9. I det här exemplet är Layered Network Management-instansen redo att ta emot trafik på den externa IP-adressen 20.81.111.118.

Förbereda nivå 3-klustret

På nivå 3 skapar du ett K3S Kubernetes-kluster på en virtuell Linux-dator. För att förenkla konfigurationen av klustret kan du skapa den virtuella datorn Azure Linux Ubuntu 22.04.3 LTS med internetåtkomst och aktivera ssh från din jumpbox.

Dricks

I ett mer realistiskt scenario som startar installationen i ett isolerat nätverk kan du förbereda datorn med den färdiga avbildningen för din lösning eller metoden För installation av Air-Gap i K3S.

  1. Installera och konfigurera K3S på den virtuella Linux-datorn med hjälp av följande kommandon:

    curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644
    
  2. Konfigurera nätverksisolering för nivå 3. Använd följande steg för att konfigurera nivå 3-klustret så att endast trafik skickas till Layered Network Management på nivå 4.

    • Bläddra till nätverkssäkerhetsgruppen för den virtuella datorns nätverksgränssnitt.
    • Lägg till ytterligare en utgående säkerhetsregel för att neka all utgående trafik från den virtuella datorn på nivå 3.
    • Lägg till ytterligare en regel för utgående trafik med högsta prioritet för att tillåta utgående trafik till IP-adressen för AKS-kluster på nivå 4 på portarna 443 och 8084.

    Skärmbild av utgående regler för nätverkssäkerhetsgrupp.

Etablera klustret i isolerat lager till Arc

Med följande steg kan du Arc-aktivera nivå 3-klustret med hjälp av layered network management-instansen på nivå 4.

  1. Konfigurera jumpboxen så att den har kubectl-åtkomst till klustret.

    Generera konfigurationsfilen på den virtuella Linux-datorn.

    k3s kubectl config view --raw > config.level3
    

    Konfigurera kubectl-åtkomst till nivå 3 k3s-klustret i jumpboxen genom att config.level3 kopiera filen till ~/.kube katalogen och byta namn på den till config. Serverposten i konfigurationsfilen ska anges till IP-adressen eller domännamnet för den virtuella datorn på nivå 3.

  2. Se Konfigurera CoreDNS för att använda tilläggsmekanismer som tillhandahålls av CoreDNS (standard-DNS-servern för K3S-kluster) för att lägga till de tillåtna URL:er som ska matchas av CoreDNS.

  3. Kör följande kommandon i jumpboxen för att ansluta klustret till Arc. Det här steget kräver Azure CLI. Installera Az CLI om det behövs.

    az login
    az account set --subscription <your Azure subscription ID>
    
    az connectedk8s connect -g <your resource group name> -n <your connected cluster name>
    

    Mer information om connectedk8s finns i Snabbstart: Ansluta ett befintligt Kubernetes-kluster till Azure Arc .

  4. Du bör se utdata som i följande exempel:

    This operation might take a while...
    
    The required pre-checks for onboarding have succeeded.
    Azure resource provisioning has begun.
    Azure resource provisioning has finished.
    Starting to install Azure arc agents on the Kubernetes cluster.
    {
      "agentPublicKeyCertificate": "MIICCgKCAgEAmU+Pc55pc3sOE2Jo5JbAdk+2OprUziCbgfGRFfbMHO4dT7A7LDaDk7tWwvz5KwUt66eMrabI7M52H8xXvy1j7YwsMwR5TaSeHpgrUe1/4XNYKa6SN2NbpXIXA3w4aHgtKzENm907rYMgTO9gBJEZNJpqsfCdb3E7AHWQabUe9y9T8aub+arBHLQ3furGkv8JnN2LCPbvLnmeLfc1J5
      ....
      ....
    
  5. Kubernetes-klustret är nu Arc-aktiverat och visas i resursgruppen som du angav i kommandot az connectedk8s connect. Du kan också verifiera etableringen av det här klustret via Azure-portalen. Den här snabbstarten är till för att visa kapaciteten för Layered Network Management för att aktivera Arc för ditt Kubernetes-kluster. Nu kan du prova de inbyggda Arc-funktionerna i det här klustret i det isolerade nätverket.

Nästa steg

  • Information om hur du konfigurerar ett kluster i ett isolerat nätverk för Azure IoT-åtgärder som ska distribueras finns i Konfigurera Layered Network Management-tjänsten för att aktivera förhandsversionen av Azure IoT Operations i ett isolerat nätverk
  • Mer information om hur du konfigurerar omfattande nätverksmiljöer för Azure IoT Operations-relaterade scenarier finns i Skapa exempelnätverksmiljö