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.
- AKS Edge Essentials - Arc-anslutna kluster och GitOps-kategori i krav och stödmatris för AKS Edge Essentials
- K3S Kubernetes-kluster - – Azure Arc-aktiverade Kubernetes-systemkrav
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
Ubuntu 22.04 LTS är den rekommenderade versionen för värddatorn.
Installera Helm 3.8.0 eller senare.
Installera Kubectl.
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
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.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
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
Ange miljövariabler för installationsstegen. Ersätt värden i
<>
med giltiga värden eller namn som du väljer. OchCLUSTER_NAME
RESOURCE_GROUP
skapas baserat på de namn du anger. Se Regioner som stöds av Azure IoT Operations för att väljaLOCATION
.# 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>"
Ange Azure-prenumerationskontexten för alla kommandon:
az account set -s $SUBSCRIPTION_ID
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"
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
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
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
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.
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.
Skapa den anpassade resursen för att skapa en skiktad nätverkshanteringsinstans.
kubectl apply -f lnm-cr.yaml
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.