Delen via


Azure IoT Layered Network Management Preview configureren op cluster op niveau 4

Belangrijk

Azure IoT Operations Preview: ingeschakeld door Azure Arc is momenteel in preview. Gebruik deze preview-software niet in productieomgevingen.

U moet een nieuwe Azure IoT Operations-installatie implementeren wanneer er een algemeen beschikbare release beschikbaar komt. U kunt geen preview-installatie upgraden.

Zie de aanvullende gebruiksvoorwaarden voor Microsoft Azure Previews voor juridische voorwaarden die van toepassing zijn op Azure-functies die in de bètaversie, in preview of anderszins nog niet zijn uitgebracht in algemene beschikbaarheid.

Azure IoT Layered Network Management Preview is een onderdeel ter ondersteuning van Azure IoT Operations Preview. Het moet echter afzonderlijk worden geïmplementeerd op de bovenste netwerklaag voor het ondersteunen van De Azure IoT-bewerkingen in de onderste laag. Op het hoogste niveau van uw netwerklagen (meestal niveau 4 van de ISA-95-netwerkarchitectuur) hebben de cluster- en gelaagde netwerkbeheerservice directe internettoegang. Zodra de installatie is voltooid, is de service Gelaagd netwerkbeheer gereed voor het ontvangen van netwerkverkeer van de onderliggende laag en stuurt deze door naar Azure Arc.

Vereisten

Voldoen aan de volgende minimale vereisten voor het afzonderlijk implementeren van gelaagd netwerkbeheer op het systeem.

Kubernetes-cluster instellen in niveau 4

Als u alleen gelaagd netwerkbeheer wilt instellen, zijn de vereisten eenvoudiger dan een Azure IoT Operations-implementatie. Het is optioneel om te voldoen aan de algemene vereisten voor Azure IoT-bewerkingen in Uw Kubernetes-cluster voorbereiden.

De volgende stappen voor het instellen van AKS Edge Essentials en K3S Kubernetes-cluster worden gecontroleerd door Microsoft.

Een Ubuntu-machine voorbereiden

  1. Ubuntu 22.04 LTS is de aanbevolen versie voor de hostcomputer.

  2. Installeer Helm 3.8.0 of hoger.

  3. Installeer Kubectl.

  4. Installeer de Azure CLI. U kunt de Azure CLI rechtstreeks installeren op de computer op niveau 4 of op een andere ontwikkelaar of jumpbox-machine als u van plan bent om op afstand toegang te krijgen tot het cluster op niveau 3. Als u ervoor kiest om het Kubernetes-cluster op afstand te openen om de clusterhost schoon te houden, voert u de kubectl - en az-gerelateerde opdrachten uit vanaf de ontwikkelcomputer voor de rest van de stappen in dit artikel.

    • Installeer Azure CLI. Volg de stappen in Azure CLI installeren in Linux.

    • Installeer connectedk8s en andere extensies.

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

Het K3S-cluster maken

  1. Installeer K3S met de volgende opdracht:

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

    Raadpleeg de snelstartgids voor K3s voor meer informatie.

    Belangrijk

    Zorg ervoor dat u de --disable=traefik parameter gebruikt om treafik uit te schakelen. Anders kunt u in latere stappen een probleem ondervinden wanneer u probeert een openbaar IP-adres toe te wijzen voor de service Gelaagd netwerkbeheer.

  2. Kopieer het yaml-bestand van de K3s-configuratie naar .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 schakelt het cluster in

  1. Meld u aan met Azure CLI. Om later problemen met machtigingen te voorkomen, is het belangrijk dat u zich interactief aanmeldt met behulp van een browservenster:

    az login
    
  2. Stel omgevingsvariabelen in voor de installatiestappen. Vervang waarden door <> geldige waarden of namen van uw keuze. De CLUSTER_NAME en RESOURCE_GROUP worden gemaakt op basis van de namen die u opgeeft. Raadpleeg ondersteunde regio's van Azure IoT Operations voor het kiezen van de 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. Stel de context van het Azure-abonnement in voor alle opdrachten:

    az account set -s $SUBSCRIPTION_ID
    
  4. Registreer de vereiste resourceproviders in uw abonnement:

    Notitie

    Deze stap hoeft slechts één keer per abonnement te worden uitgevoerd. Als u resourceproviders wilt registreren, moet u gemachtigd zijn om de /register/action bewerking uit te voeren, die is opgenomen in de rollen Inzender en Eigenaar van het abonnement. Zie Azure-resourceproviders en -typen voor meer informatie.

    az provider register -n "Microsoft.ExtendedLocation"
    az provider register -n "Microsoft.Kubernetes"
    az provider register -n "Microsoft.KubernetesConfiguration"
    
  5. Gebruik de opdracht az group create om een resourcegroep in uw Azure-abonnement te maken om alle resources op te slaan:

    az group create --location $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
    
  6. Gebruik de opdracht az connectedk8s connect om uw Kubernetes-cluster in te schakelen en te beheren in de resourcegroep die u in de vorige stap hebt gemaakt:

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

Preview-service voor gelaagd netwerkbeheer implementeren in het cluster

Zodra uw Kubernetes-cluster Arc is ingeschakeld, kunt u de service Gelaagd netwerkbeheer implementeren in het cluster.

De preview-operator voor gelaagd netwerkbeheer installeren

  1. Voer de volgende opdracht uit. Vervang de tijdelijke aanduidingen <RESOURCE GROUP> en <CLUSTER NAME> door uw Arc-onboardinggegevens uit een eerdere stap.

    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. Gebruik de kubectl-opdracht om te controleren of de operator Gelaagd netwerkbeheer wordt uitgevoerd.

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

Preview-service voor gelaagd netwerkbeheer configureren

Maak de aangepaste resource gelaagd netwerkbeheer.

  1. Maak een lnm-cr.yaml bestand zoals opgegeven:

    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
    

    Voor foutopsporing of experimenten kunt u de waarde van de parameter loglevel wijzigen in foutopsporing.

  2. Maak de aangepaste resource om een gelaagd netwerkbeheerexemplaren te maken.

    kubectl apply -f lnm-cr.yaml
    
  3. Bekijk de Kubernetes-service Gelaagd netwerkbeheer:

    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
    

Iptables-configuratie toevoegen voor AKS Edge Essentials

Belangrijk

Deze stap is alleen van toepassing wanneer u het gelaagde netwerkbeheer host in een AKS Edge Essentials-cluster.

Met de implementatie gelaagd netwerkbeheer wordt een Kubernetes-service van het type LoadBalancer gemaakt. Om ervoor te zorgen dat de service toegankelijk is van buiten het Kubernetes-cluster, moet u de poorten van de onderliggende Windows-host toewijzen aan de juiste poorten in de service Gelaagd netwerkbeheer.

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

Nadat deze opdrachten zijn uitgevoerd, wordt verkeer dat is ontvangen op poort 443 en 10000 op de Windows-host doorgestuurd naar de Kubernetes-service. Wanneer u aangepaste DNS configureert voor de netwerklaag op onderliggend niveau, stuurt u het netwerkverkeer naar het IP-adres van deze Windows-host en vervolgens naar de service Gelaagd netwerkbeheer die erop wordt uitgevoerd.