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.
- Kategorie AKS Edge Essentials - Cluster mit Arc-Verbindung und GitOps in der Anforderungs- und Supportmatrix von AKS Edge Essentials
- K3S Kubernetes-Cluster - Azure Arc-fähiges Kubernetes – Systemanforderungen
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
Ubuntu 22.04 LTS ist die empfohlene Version für den Hostcomputer.
Installieren Sie Helm 3.8.0 oder höher.
Installieren Sie Kubectl.
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.
Installieren Sie die Azure-Befehlszeilenschnittstelle. Führen Sie die Schritte in Installieren der Azure CLI unter Linux aus.
Installieren Sie connectedk8s und andere Erweiterungen.
az extension add --name connectedk8s az extension add --name k8s-extension
Installieren der Azure CLI-Erweiterung mit
az extension add --name azure-iot-ops
.
Erstellen des K3S-Clusters
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.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
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
Legen Sie Umgebungsvariablen für die Setupschritte fest. Ersetzen Sie Werte in
<>
durch gültige Werte oder Namen Ihrer Wahl. DieCLUSTER_NAME
undRESOURCE_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>"
Legen Sie den Azure-Abonnementkontext für alle Befehle fest:
az account set -s $SUBSCRIPTION_ID
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"
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
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
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
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.
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.
Erstellen Sie die benutzerdefinierte Ressource, um eine Layered Network Management-Instanz zu erstellen.
kubectl apply -f lnm-cr.yaml
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.