Dela via


Konfigurera förhandsversionen av Azure IoT Layered Network Management på nivå 4-kluster

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 blir tillgänglig. Du kommer inte att kunna uppgradera en förhandsgranskningsinstallation.

Juridiska villkor som gäller för Azure-funktioner som är i betaversion, förhandsversion eller som ännu inte har släppts i allmän tillgänglighet finns i Kompletterande användningsvillkor för Förhandsversioner av Microsoft Azure.

Förhandsversionen av Azure IoT Layered Network Management är en komponent som stöder förhandsversionen av Azure IoT Operations. Den måste dock distribueras individuellt till det översta nätverksskiktet för att stödja Azure IoT-åtgärder i det lägre lagret. På den översta nivån i dina nätverkslager (vanligtvis nivå 4 i ISA-95-nätverksarkitekturen) har klustret och Layered Network Management-tjänsten direkt internetåtkomst. När installationen är klar är layered Network Management-tjänsten redo att ta emot nätverkstrafik från det underordnade lagret och vidarebefordrar den till Azure Arc.

Förutsättningar

Uppfylla följande minimikrav för att distribuera Layered Network Management individuellt i systemet.

Konfigurera Kubernetes-kluster på nivå 4

Om du bara vill konfigurera Layered Network Management är förutsättningarna enklare än en Azure IoT Operations-distribution. Det är valfritt att uppfylla de allmänna kraven för Azure IoT-åtgärder i Förbereda ditt Kubernetes-kluster.

Följande steg för att konfigurera AKS Edge Essentials - och K3S Kubernetes-kluster verifieras av Microsoft.

Förbereda en Ubuntu-dator

  1. Ubuntu 22.04 LTS är den rekommenderade versionen för värddatorn.

  2. Installera Helm 3.8.0 eller senare.

  3. Installera Kubectl.

  4. Installera Azure CLI. Du kan installera Azure CLI direkt på nivå 4-datorn eller på en annan utvecklare eller jumpbox-dator om du tänker komma åt nivå 3-klustret via fjärranslutning. Om du väljer att fjärråtkomst till Kubernetes-klustret för att hålla klustervärden ren kör du de kubectl - och az-relaterade kommandona från utvecklardatorn för resten av stegen i den här artikeln.

    • Installera Azure CLI. Följ stegen i Installera Azure CLI på Linux.

    • Installera connectedk8s och andra tillägg.

      az extension add --name connectedk8s
      az extension add --name k8s-extension
      

Skapa K3S-klustret

  1. Installera K3S med följande kommando:

    curl -sfL https://get.k3s.io | sh -s - --disable=traefik --write-kubeconfig-mode 644
    

    Mer information finns i snabbstartsguiden för K3s.

    Viktigt!

    Se till att använda parametern --disable=traefik för att inaktivera treafik. Annars kan du ha problem när du försöker allokera offentlig IP-adress för layered network management-tjänsten i senare steg.

  2. Kopiera yaml-filen för K3s-konfiguration till .kube/config.

    mkdir ~/.kube
    cp ~/.kube/config ~/.kube/config.back
    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
    

Arc aktivera klustret

  1. Logga in med Azure CLI. För att undvika behörighetsproblem senare är det viktigt att du loggar in interaktivt med ett webbläsarfönster:

    az login
    
  2. Ange miljövariabler för installationsstegen. Ersätt värden i <> med giltiga värden eller namn som du väljer. Och CLUSTER_NAME RESOURCE_GROUP skapas baserat på de namn du anger. Se Regioner som stöds av Azure IoT Operations för att välja LOCATION.

    # Id of the subscription where your resource group and Arc-enabled cluster will be created
    $SUBSCRIPTION_ID = "<subscription-id>"
    # Azure region where the created resource group will be located
    $LOCATION = "<region>"
    # Name of a new resource group to create which will hold the Arc-enabled cluster and Azure IoT Operations resources
    $RESOURCE_GROUP = "<resource-group-name>"
    # Name of the Arc-enabled cluster to create in your resource group
    $CLUSTER_NAME = "<cluster-name>"
    
  3. Ange Azure-prenumerationskontexten för alla kommandon:

    az account set -s $SUBSCRIPTION_ID
    
  4. 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"
    
  5. 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 --subscription $SUBSCRIPTION_ID
    
  6. Använd kommandot az connectedk8s connect för att Arc-aktivera ditt Kubernetes-kluster och hantera det i resursgruppen som du skapade i föregående steg:

    az connectedk8s connect -n $CLUSTER_NAME -l $LOCATION -g $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
    

Distribuera förhandsversionstjänsten för layered network management till klustret

När Kubernetes-klustret är Arc-aktiverat kan du distribuera tjänsten Layered Network Management till klustret.

Installera operatorn Layered Network Management Preview

  1. Kör följande kommando. Ersätt platshållarna <RESOURCE GROUP> och <CLUSTER NAME> med information om Arc-registrering från ett tidigare steg.

    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
    
  2. Använd kubectl-kommandot för att kontrollera att operatorn Layered Network Management körs.

    kubectl get pods
    
    NAME                                   READY   STATUS    RESTARTS   AGE
    azedge-lnm-operator-598cc495c-5428j   1/1     Running   0          28h
    

Konfigurera förhandsversionstjänsten för layered network management

Skapa den anpassade resursen Layered Network Management.

  1. Skapa en lnm-cr.yaml fil enligt angiven:

    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
    

    För felsökning eller experimentering kan du ändra värdet för loglevel-parametern till felsökning.

  2. Skapa den anpassade resursen för att skapa en skiktad nätverkshanteringsinstans.

    kubectl apply -f lnm-cr.yaml
    
  3. Visa Kubernetes-tjänsten För lagerbaserad nätverkshantering:

    kubectl get services -n azure-iot-operations
    
    NAME           TYPE           CLUSTER-IP    EXTERNAL-IP   PORT(S)                                      AGE
    lnm-level-4   LoadBalancer   10.43.91.54   192.168.0.4   80:30530/TCP,443:31117/TCP,10000:31914/TCP   95s
    

Lägga till iptables-konfiguration för AKS Edge Essentials

Viktigt!

Det här steget gäller endast när du är värd för Layered Network Management i ett AKS Edge Essentials-kluster.

Distributionen layered network management skapar en Kubernetes-tjänst av typen LoadBalancer. För att säkerställa att tjänsten är tillgänglig utanför Kubernetes-klustret måste du mappa den underliggande Windows-värdens portar till lämpliga portar i layered network management-tjänsten.

netsh interface portproxy add v4tov4 listenport=443 listenaddress=0.0.0.0 connectport=443 connectaddress=192.168.0.4
netsh interface portproxy add v4tov4 listenport=10000 listenaddress=0.0.0.0 connectport=10000 connectaddress=192.168.0.4

När dessa kommandon har körts dirigeras trafik som tas emot på portarna 443 och 10000 på Windows-värden till Kubernetes-tjänsten. När du konfigurerar anpassad DNS för det underordnade nätverksskiktet dirigerar du nätverkstrafiken till IP-adressen för den här Windows-värden och sedan till den Layered Network Management-tjänst som körs på den.