Delen via


Quickstart: Azure IoT Layered Network Management Preview configureren om een cluster in te schakelen in een Azure-omgeving

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.

In deze quickstart stelt u de azure IoT Layered Network Management Preview in op een purdue-netwerk op niveau 4 en niveau 3. Netwerkniveau 4 heeft internettoegang en niveau 3 niet. U configureert gelaagd netwerkbeheer om netwerkverkeer van niveau 3 naar Azure te routeren. Ten slotte kunt u het K3S-cluster inschakelen in niveau 3, zelfs niet rechtstreeks verbonden met internet.

  • Niveau 4: een AKS-cluster waarop gelaagd netwerkbeheer is geïmplementeerd.
  • Niveau 3 is een K3S-cluster dat wordt uitgevoerd op een Linux-VM die gebruikmaakt van het gelaagde netwerkbeheerexemplaren in niveau 4 om verbinding te maken met Azure. Het netwerk op niveau 3 is geconfigureerd voor uitgaande toegang tot het netwerk op niveau 443 en 8084. Alle andere uitgaande toegang is uitgeschakeld.

De gelaagde netwerkbeheerarchitectuur vereist DNS-configuratie op het netwerk op niveau 3, waarbij de toegestane URL's worden teruggezet naar het netwerk op niveau 4. In dit voorbeeld wordt deze installatie uitgevoerd met behulp van een geautomatiseerde installatie die is gebouwd op CoreDNS, het standaard-DNS-resolutiemechanisme dat wordt geleverd met k3s.

Vereisten

Deze vereisten zijn alleen bedoeld voor het onafhankelijk implementeren van gelaagd netwerkbeheer en het cluster op onderliggend niveau inschakelen.

  • Een AKS-cluster
  • Een virtuele Linux Ubuntu 22.04.3 LTS-machine
  • Een jumpbox- of installatiemachine die toegang heeft tot internet en zowel de netwerken op niveau 3 als niveau 4

Gelaagd netwerkbeheervoorbeeld implementeren in het AKS-cluster

Met deze stappen implementeert u gelaagd netwerkbeheer in het AKS-cluster. Het cluster is de bovenste laag in het ISA-95-model. Aan het einde van deze sectie hebt u een exemplaar van gelaagd netwerkbeheer dat klaar is om verkeer van het onderstaande Azure Arc-cluster te accepteren en ondersteuning te bieden voor de implementatie van de Azure IoT Operations Preview-service.

  1. Configureer kubectl dit om uw AKS-cluster te beheren vanuit uw jumpbox door de stappen in Verbinding maken met het cluster te volgen.

  2. Installeer de operator Gelaagd netwerkbeheer met de volgende Azure CLI-opdracht:

    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
    
  3. Voer de volgende opdracht uit om te controleren of de installatie is geslaagd:

    kubectl get pods
    

    Als het goed is, ziet u een uitvoer die eruitziet als in het volgende voorbeeld:

    NAME                                READY   STATUS        RESTARTS   AGE
    aio-lnm-operator-7db49dc9fd-kjf5x   1/1     Running       0          78s
    
  4. Maak de aangepaste resource Gelaagd netwerkbeheer door een bestand met de naam level4.yaml te maken met de volgende inhoud:

    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
    
  5. Als u het gelaagde netwerkbeheerexemplaren wilt maken op basis van het bestand level4.yaml , voert u het volgende uit:

    kubectl apply -f level4.yaml
    

    Met deze stap maakt u n pods, één service en twee configuratietoewijzingen. n is gebaseerd op het aantal replica's in de aangepaste resource.

  6. Voer het volgende uit om het exemplaar te valideren:

    kubectl get pods
    

    De uitvoer moet er als volgt uitzien:

    NAME                                    READY       STATUS    RESTARTS       AGE
    aio-lnm-operator-7db49dc9fd-kjf5x       1/1         Running       0          78s
    aio-lnm-level4-7598574bf-2lgss          1/1         Running       0          4s
    
  7. Voer de volgende opdracht uit om de service weer te geven:

    kubectl get services
    

    De uitvoer moet eruitzien als in het volgende voorbeeld:

    NAME              TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)                      AGE
    aio-lnm-level4    LoadBalancer   10.0.141.101   20.81.111.118   80:30960/TCP,443:31214/TCP   29s
    
  8. Voer de volgende opdracht uit om de configuratietoewijzingen weer te geven:

    kubectl get cm
    

    De uitvoer moet eruitzien als in het volgende voorbeeld:

    NAME                           DATA   AGE
    aio-lnm-level4-config          1      50s
    aio-lnm-level4-client-config   1      50s
    
  9. In dit voorbeeld is het gelaagde netwerkbeheerexemplaren gereed om verkeer op het externe IP-adres 20.81.111.118te accepteren.

Het cluster op niveau 3 voorbereiden

In niveau 3 maakt u een K3S Kubernetes-cluster op een virtuele Linux-machine. Om het instellen van het cluster te vereenvoudigen, kunt u de Azure Linux Ubuntu 22.04.3 LTS-VM maken met internettoegang en ssh inschakelen vanuit uw jumpbox.

Tip

In een realistischer scenario dat de installatie in een geïsoleerd netwerk start, kunt u de machine voorbereiden met de vooraf gebouwde installatiekopie voor uw oplossing of de Air-Gap Install-benadering van K3S.

  1. Installeer en configureer K3S op de Linux-VM met behulp van de volgende opdrachten:

    curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644
    
  2. Netwerkisolatie configureren voor niveau 3. Gebruik de volgende stappen om het cluster op niveau 3 te configureren om alleen verkeer naar gelaagd netwerkbeheer in niveau 4 te verzenden.

    • Blader naar de netwerkbeveiligingsgroep van de netwerkinterface van de VIRTUELE machine.
    • Voeg een extra uitgaande beveiligingsregel toe om al het uitgaande verkeer van de virtuele machine op niveau 3 te weigeren.
    • Voeg een andere uitgaande regel toe met de hoogste prioriteit om uitgaand verkeer naar het IP-adres van niveau 4 AKS-cluster toe te staan op poort 443 en 8084.

    Schermopname van uitgaande regels voor netwerkbeveiligingsgroepen.

Het cluster inrichten in geïsoleerde laag naar Arc

Met de volgende stappen schakelt u het cluster op niveau 3 in met behulp van het gelaagde netwerkbeheerexemplaren op niveau 4.

  1. Stel de jumpbox in voor kubectl-toegang tot het cluster.

    Genereer het configuratiebestand op uw Linux-VM.

    k3s kubectl config view --raw > config.level3
    

    Stel in uw jumpbox kubectl-toegang tot het cluster op niveau 3 k3s in door het config.level3 bestand naar de ~/.kube map te kopiëren en de naam ervan te configwijzigen in . De serververmelding in het configuratiebestand moet worden ingesteld op het IP-adres of de domeinnaam van de VM op niveau 3.

  2. Raadpleeg CoreDNS configureren om extensiemechanismen te gebruiken die worden geleverd door CoreDNS (de standaard-DNS-server voor K3S-clusters) om de toegestane URL's toe te voegen die moeten worden omgezet door CoreDNS.

  3. Voer de volgende opdrachten uit op uw jumpbox om het cluster te verbinden met Arc. Voor deze stap is Azure CLI vereist. Installeer zo nodig de Az CLI .

    az login
    az account set --subscription <your Azure subscription ID>
    
    az connectedk8s connect -g <your resource group name> -n <your connected cluster name>
    

    Zie quickstart: Een bestaand Kubernetes-cluster verbinden met Azure Arc voor meer informatie over connectedk8s.

  4. Als het goed is, ziet u uitvoer zoals in het volgende voorbeeld:

    This operation might take a while...
    
    The required pre-checks for onboarding have succeeded.
    Azure resource provisioning has begun.
    Azure resource provisioning has finished.
    Starting to install Azure arc agents on the Kubernetes cluster.
    {
      "agentPublicKeyCertificate": "MIICCgKCAgEAmU+Pc55pc3sOE2Jo5JbAdk+2OprUziCbgfGRFfbMHO4dT7A7LDaDk7tWwvz5KwUt66eMrabI7M52H8xXvy1j7YwsMwR5TaSeHpgrUe1/4XNYKa6SN2NbpXIXA3w4aHgtKzENm907rYMgTO9gBJEZNJpqsfCdb3E7AHWQabUe9y9T8aub+arBHLQ3furGkv8JnN2LCPbvLnmeLfc1J5
      ....
      ....
    
  5. Uw Kubernetes-cluster is nu ingeschakeld voor Arc en wordt vermeld in de resourcegroep die u hebt opgegeven in de opdracht az connectedk8s connect. U kunt het inrichten van dit cluster ook valideren via Azure Portal. Deze quickstart is bedoeld voor het weergeven van de mogelijkheid van gelaagd netwerkbeheer om Arc in te schakelen voor uw Kubernetes-cluster. U kunt nu de ingebouwde Arc-ervaringen op dit cluster in het geïsoleerde netwerk uitproberen.

Volgende stappen