Freigeben über


Konfigurieren von Azure IoT Layered Network Management Preview in einem Ebene 4-Cluster

Wichtig

Die von Azure Arc unterstützte Vorschauversion von „Azure IoT Einsatz“ befindet sich derzeit in der Vorschauphase. Sie sollten diese Vorschausoftware nicht in Produktionsumgebungen verwenden.

Sie müssen eine neue Installation von Azure IoT Einsatz bereitstellen, wenn ein allgemein verfügbares Release verfügbar wird. Sie werden kein Upgrade für eine Preview-Installation durchführen können.

Die zusätzlichen Nutzungsbestimmungen für Microsoft Azure-Vorschauen enthalten rechtliche Bedingungen. Sie gelten für diejenigen Azure-Features, die sich in der Beta- oder Vorschauversion befinden oder aber anderweitig noch nicht zur allgemeinen Verfügbarkeit freigegeben sind.

Azure IoT Layered Network Management Preview ist eine der Vorschaukomponenten von Azure IoT Einsatz. Sie kann jedoch auch eigenständig auf der obersten Netzwerkebene bereitgestellt werden, um Azure IoT Einsatz auf der unteren Ebene zu unterstützen. Auf der obersten Ihrer Netzwerkebenen (in der Regel die Ebene 4 der ISA-95-Netzwerkarchitektur) verfügen der Cluster und der Layered Network Management-Dienst über direkten Internetzugriff. Nach Abschluss der Einrichtung ist der Layered Network Management-Dienst bereit, um Netzwerkdatenverkehr von der untergeordneten Ebene zu empfangen und an Azure Arc weiterzuleiten.

Voraussetzungen

Die folgenden Mindestanforderungen müssen erfüllt sein, damit eine eigenständige Bereitstellung von Layered Network Management im System möglich ist.

Einrichten des Kubernetes-Clusters auf Ebene 4

Um nur Layered Network Management einzurichten, sind die Voraussetzungen einfacher als für eine Azure IoT Einsatz-Bereitstellung. Die in Vorbereiten Ihres Kubernetes-Clusters beschriebenen allgemeinen Anforderungen für Azure IoT Einsatz sind optional.

Die folgenden Schritte zum Einrichten von AKS Edge Essentials und des K3S Kubernetes-Clusters wurden von Microsoft überprüft.

Vorbereiten eines Ubuntu-Computers

  1. Ubuntu 22.04 LTS ist die empfohlene Version für den Hostcomputer.

  2. Installieren Sie Helm 3.8.0 oder höher.

  3. Installieren Sie Kubectl.

  4. Installieren Sie die Azure CLI. Sie können die Azure-Befehlszeilenschnittstelle direkt auf einem Computer der Ebene 4 oder auf einem anderen Entwicklungs- oder Jumpbox-Computer installieren, wenn Sie remote auf den Cluster der Ebene 3 zugreifen möchten. Wenn Sie remote auf den Kubernetes-Cluster zugreifen, um den Clusterhost sauber zu halten, führen Sie die kubectl- und az-Befehle für die restlichen Schritte in diesem Artikel auf dem Entwicklungscomputer aus.

Erstellen des K3S-Clusters

  1. Installieren Sie K3S mit dem folgenden Befehl:

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

    Wichtig

    Stellen Sie sicher, dass Sie den --disable=traefik-Parameter verwenden, um treafik zu deaktivieren. Andernfalls haben Sie möglicherweise ein Problem, wenn Sie versuchen, öffentliche IP für den Layered Network Management-Dienst in späteren Schritten zuzuweisen.

  2. Kopieren Sie die Yaml-Datei für die K3s-Konfiguration in .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-aktivieren des Clusters

  1. Melden Sie sich mit der Azure CLI an. Um später Berechtigungsprobleme zu vermeiden, ist es wichtig, dass die Anmeldung interaktiv über ein Browserfenster erfolgt:

    az login
    
  2. Legen Sie Umgebungsvariablen für die Setupschritte fest. Ersetzen Sie Werte in <> durch gültige Werte oder Namen Ihrer Wahl. Die CLUSTER_NAME und RESOURCE_GROUP werden basierend auf den von Ihnen bereitgestellten Namen erstellt:

    # 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
    # Currently supported regions: : "westus3" or "eastus2"
    $LOCATION = "WestUS3"
    # 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. Legen Sie den Azure-Abonnementkontext für alle Befehle fest:

    az account set -s $SUBSCRIPTION_ID
    
  4. Registrieren Sie die erforderlichen Ressourcenanbieter in Ihrem Abonnement:

    Hinweis

    Dieser Schritt muss nur einmal pro Abonnement durchgeführt werden. Zum Registrieren von Ressourcenanbietern benötigen Sie die Berechtigung zum Ausführen des /register/action-Vorgangs, welche in den Rollen „Mitwirkender“ und „Besitzer“ des Abonnements enthalten ist. Weitere Informationen finden Sie unter Azure-Ressourcenanbieter und -typen.

    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"
    
  5. Verwenden Sie den Befehl az group create, um in Ihrem Azure-Abonnement eine Ressourcengruppe zum Speichern aller Ressourcen zu erstellen:

    az group create --location $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
    
  6. Verwenden Sie den Befehl az connectedk8s connect, um die Arc-Unterstützung Ihres Kubernetes-Clusters zu aktivieren und ihn in der Ressourcengruppe zu verwalten, die Sie im vorherigen Schritt erstellt haben:

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

    Tipp

    Wenn die connectedk8s-Befehle fehlschlagen, versuchen Sie, die Cmdlets in Verbinden Ihres AKS Edge Essentials-Clusters mit Arc.

Bereitstellen des Layered Network Management Preview-Diensts im Cluster

Wenn Ihr Kubernetes-Cluster Arc-fähig ist, können Sie den Layered Network Management-Dienst im Cluster bereitstellen.

Installieren des Layered Network Management Preview-Operators

  1. Führen Sie den folgenden Befehl aus. Ersetzen Sie die Platzhalter <RESOURCE GROUP> und <CLUSTER NAME> durch Ihre Arc-Onboarding-Informationen aus einem früheren Schritt.

    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. Verwenden Sie den Befehl kubectl, um zu überprüfen, ob der Netzwerkverwaltungsoperator mit Ebenen ausgeführt wird.

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

Konfigurieren des Layered Network Management Preview-Diensts

Erstellen Sie die benutzerdefinierte Ressource Layered Network Management.

  1. Erstellen Sie eine lnm-cr.yaml Datei wie angegeben:

    apiVersion: layerednetworkmgmt.iotoperations.azure.com/v1beta1
    kind: Lnm
    metadata:
      name: level4
      namespace: azure-iot-operations
    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: "*.ods.opinsights.azure.com"
          destinationType: external
        - destinationUrl: "*.oms.opinsights.azure.com"
          destinationType: external
        - destinationUrl: "*.monitoring.azure.com"
          destinationType: external
        - destinationUrl: "*.handler.control.monitor.azure.com"
          destinationType: external
        - destinationUrl: "quay.io"
          destinationType: external
        - destinationUrl: "*.quay.io"
          destinationType: external
        - destinationUrl: "docker.io"
          destinationType: external
        - destinationUrl: "*.docker.io"
          destinationType: external
        - destinationUrl: "*.docker.com"
          destinationType: external
        - destinationUrl: "gcr.io"
          destinationType: external
        - destinationUrl: "*.googleapis.com"
          destinationType: external
        - destinationUrl: "login.windows.net"
          destinationType: external
        - destinationUrl: "graph.windows.net"
          destinationType: external
        - destinationUrl: "msit-onelake.pbidedicated.windows.net"
          destinationType: external
        - destinationUrl: "*.vault.azure.net"
          destinationType: external
        - destinationUrl: "*.k8s.io"
          destinationType: external
        - destinationUrl: "*.pkg.dev"
          destinationType: external
        - destinationUrl: "github.com"
          destinationType: external
        - destinationUrl: "raw.githubusercontent.com"
          destinationType: external
        sourceIpRange:
        - addressPrefix: "0.0.0.0"
          prefixLen: 0
    

    Für das Debuggen oder Experimentieren können Sie den Wert des Parameters loglevel zu debug ändern.

  2. Erstellen Sie die benutzerdefinierte Ressource, um eine Layered Network Management-Instanz zu erstellen.

    kubectl apply -f lnm-cr.yaml
    
  3. Anzeigen des Kubernetes-Diensts für das Layered Network Management:

    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
    

Hinzufügen der iptables-Konfiguration

Wichtig

Dieser Schritt gilt nur für AKS Edge Essentials.

Die Layered Network Management-Bereitstellung erstellt einen Kubernetes-Dienst vom Typ LoadBalancer. Um sicherzustellen, dass der Dienst von außerhalb des Kubernetes-Clusters zugänglich ist, müssen Sie die zugrundeliegenden Windows-Hostports den entsprechenden Ports im Layered Network Management-Dienst zuordnen.

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

Nachdem diese Befehle erfolgreich ausgeführt wurden, wird der Datenverkehr an den Ports 443 und 10000 auf dem Windows-Host an den Kubernetes-Dienst weitergeleitet. Wenn Sie benutzerdefiniertes DNS für die Netzwerkebene auf untergeordneter Ebene konfigurieren, leiten Sie den Netzwerkdatenverkehr an die IP dieses Windows-Hosts und dann an den Layered Network Management-Dienst weiter, der darauf ausgeführt wird.