Konfigurieren der mehrschichtigen Azure IoT-Netzwerkverwaltung (Vorschau) in einem Cluster der Ebene 4
Azure IoT Layered Network Management (Vorschau) ist eine Komponente für Azure IoT Einsatz. Sie muss jedoch einzeln 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 (Vorschau) 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
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
Weitere Informationen finden Sie in der Schnellstartanleitung zu K3s.
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.CLUSTER_NAME
undRESOURCE_GROUP
werden basierend auf den von Ihnen bereitgestellten Namen erstellt. Informationen zum Auswählen vonLOCATION
finden Sie unter Unterstützte Regionen für „Azure IoT Einsatz“.# 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>"
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"
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
Bereitstellen des Schichtnetzwerkverwaltungsdiensts im Cluster
Wenn Ihr Kubernetes-Cluster Arc-fähig ist, können Sie den Layered Network Management-Dienst im Cluster bereitstellen.
Installieren des Netzwerkverwaltungsoperators Layered Network Management
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
NAME READY STATUS RESTARTS AGE azedge-lnm-operator-598cc495c-5428j 1/1 Running 0 28h
Konfigurieren des Layered Network Management Service
Erstellen Sie die benutzerdefinierte Ressource Layered Network Management.
Erstellen Sie eine
lnm-cr.yaml
Datei wie angegeben:- Für das Debuggen oder Experimentieren können Sie den Wert des Parameters loglevel zu debug ändern.
- Weitere Details zu den Endpunkten finden Sie unter Azure IoT Einsatz-Endpunkte.
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: "management.azure.com" destinationType: external - destinationUrl: "*.dp.kubernetesconfiguration.azure.com" destinationType: external - destinationUrl: "login.microsoftonline.com" destinationType: external - destinationUrl: "*.login.microsoft.com" destinationType: external - destinationUrl: "login.windows.net" destinationType: external - destinationUrl: "mcr.microsoft.com" destinationType: external - destinationUrl: "*.data.mcr.microsoft.com" destinationType: external - destinationUrl: "gbl.his.arc.azure.com" destinationType: external - destinationUrl: "*.his.arc.azure.com" destinationType: external - destinationUrl: "k8connecthelm.azureedge.net" destinationType: external - destinationUrl: "guestnotificationservice.azure.com" destinationType: external - destinationUrl: "*.guestnotificationservice.azure.com" destinationType: external - destinationUrl: "sts.windows.net" destinationType: external - destinationUrl: "k8sconnectcsp.azureedge.net" destinationType: external - destinationUrl: "*.servicebus.windows.net" destinationType: external - destinationUrl: "graph.microsoft.com" destinationType: external - destinationUrl: "*.arc.azure.net" destinationType: external - destinationUrl: "*.obo.arc.azure.com" destinationType: external - destinationUrl: "linuxgeneva-microsoft.azurecr.io" destinationType: external - destinationUrl: "graph.windows.net" destinationType: external - destinationUrl: "*.azurecr.io" destinationType: external - destinationUrl: "*.blob.core.windows.net" destinationType: external - destinationUrl: "*.vault.azure.net" destinationType: external - destinationUrl: "*.blob.storage.azure.net" destinationType: external sourceIpRange: - addressPrefix: "0.0.0.0" prefixLen: 0
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
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 für AKS Edge Essentials
Wichtig
Dieser Schritt gilt nur, wenn „Layered Network Management“ in einem AKS Edge Essentials-Cluster gehostet wird.
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.