Dela via


Snabbstart: Konfigurera Azure IoT Layered Network Management (förhandsversion) för att Arc-aktivera ett kluster i Azure-miljön

I den här snabbstarten konfigurerar du Azure IoT Layered Network Management (förhandsversion) i ett Purdue-nätverk på nivå 4 och nivå 3. Nätverksnivå 4 har internetåtkomst och nivå 3 har inte det. Du konfigurerar Layered Network Management (förhandsversion) för att dirigera nätverkstrafik från nivå 3 till Azure. Slutligen kan du Arc-aktivera K3S-klustret på nivå 3, även om det inte är direkt anslutet till Internet.

  • Nivå 4 ett AKS-kluster med Layered Network Management distribuerat.
  • Nivå 3 är ett K3S-kluster som körs på en virtuell Linux-dator som använder instansen Layered Network Management på nivå 4 för att uppnå anslutning till Azure. Nivå 3-nätverket är konfigurerat för att ha utgående åtkomst till nivå 4-nätverket på portarna 443 och 8084. All annan utgående åtkomst är inaktiverad.

Layered Network Management-arkitekturen kräver DNS-konfiguration på nivå 3-nätverket, där de tillåtna URL:erna återpointas till nivå 4-nätverket. I det här exemplet utförs den här installationen med hjälp av en automatiserad konfiguration som bygger på CoreDNS, standardmekanismen för DNS-matchning som levereras med k3s.

Förutsättningar

De här förutsättningarna är bara för att distribuera Layered Network Management oberoende av varandra och Arc-aktivera klustret på den underordnade nivån.

  • Ett AKS-kluster
  • En virtuell Azure Linux Ubuntu 22.04.3 LTS-dator
  • En jumpbox- eller installationsdator som har åtkomst till Internet och både nivå 3- och nivå 4-nätverken

Distribuera Layered Network Management (förhandsversion) till AKS-klustret

De här stegen distribuerar Layered Network Management till AKS-klustret. Klustret är det översta lagret i ISA-95-modellen. I slutet av det här avsnittet har du en instans av Layered Network Management som är redo att ta emot trafik från Azure Arc-aktiverat kluster nedan och som stöder distributionen av Azure IoT Operations-tjänsten.

  1. Konfigurera kubectl för att hantera ditt AKS-kluster från jumpboxen genom att följa stegen i Anslut till klustret.

  2. Installera operatorn Layered Network Management med följande Azure CLI-kommando:

    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. Kontrollera att installationen lyckades genom att köra:

    kubectl get pods
    

    Du bör se utdata som ser ut som i följande exempel:

    NAME                                READY   STATUS        RESTARTS   AGE
    aio-lnm-operator-7db49dc9fd-kjf5x   1/1     Running       0          78s
    
  4. Skapa den anpassade resursen Layered Network Management genom att skapa en fil med namnet level4.yaml med följande innehåll:

    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
    
  5. Om du vill skapa layered Network Management-instansen baserat på filen level4.yaml kör du:

    kubectl apply -f level4.yaml
    

    Det här steget skapar n poddar, en tjänst och två konfigurationskartor. n baseras på antalet repliker i den anpassade resursen.

  6. Verifiera instansen genom att köra:

    kubectl get pods
    

    Utdata bör se ut så här:

    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. Om du vill visa tjänsten kör du:

    kubectl get services
    

    Utdata bör se ut som i följande exempel:

    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. Om du vill visa konfigurationskartor kör du:

    kubectl get cm
    

    Utdata bör se ut som i följande exempel:

    NAME                           DATA   AGE
    aio-lnm-level4-config          1      50s
    aio-lnm-level4-client-config   1      50s
    
  9. I det här exemplet är Layered Network Management-instansen redo att ta emot trafik på den externa IP-adressen 20.81.111.118.

Förbereda nivå 3-klustret

På nivå 3 skapar du ett K3S Kubernetes-kluster på en virtuell Linux-dator. För att förenkla konfigurationen av klustret kan du skapa den virtuella datorn Azure Linux Ubuntu 22.04.3 LTS med internetåtkomst och aktivera ssh från din jumpbox.

Dricks

I ett mer realistiskt scenario som startar installationen i ett isolerat nätverk kan du förbereda datorn med den färdiga avbildningen för din lösning eller metoden För installation av Air-Gap i K3S.

  1. Installera och konfigurera K3S på den virtuella Linux-datorn med hjälp av följande kommandon:

    curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644
    
  2. Konfigurera nätverksisolering för nivå 3. Använd följande steg för att konfigurera nivå 3-klustret så att endast trafik skickas till Layered Network Management på nivå 4.

    • Bläddra till nätverkssäkerhetsgruppen för den virtuella datorns nätverksgränssnitt.
    • Lägg till en extra utgående säkerhetsregel för att neka all utgående trafik från den virtuella datorn på nivå 3.
    • Lägg till ytterligare en regel för utgående trafik med högsta prioritet för att tillåta utgående trafik till IP-adressen för AKS-kluster på nivå 4 på portarna 443 och 8084.

    Skärmbild av utgående regler för nätverkssäkerhetsgrupp.

Etablera klustret i isolerat lager till Arc

Med följande steg kan du Arc-aktivera nivå 3-klustret med hjälp av layered network management-instansen på nivå 4.

  1. Konfigurera jumpboxen så att den har kubectl-åtkomst till klustret.

    Generera konfigurationsfilen på den virtuella Linux-datorn.

    k3s kubectl config view --raw > config.level3
    

    Konfigurera kubectl-åtkomst till nivå 3 k3s-klustret i jumpboxen genom att config.level3 kopiera filen till ~/.kube katalogen och byta namn på den till config. Serverposten i konfigurationsfilen ska anges till IP-adressen eller domännamnet för den virtuella datorn på nivå 3.

  2. Se Konfigurera CoreDNS för att använda tilläggsmekanismer som tillhandahålls av CoreDNS (standard-DNS-servern för K3S-kluster) för att lägga till tillåtna URL:er.

  3. Kör följande kommandon i jumpboxen för att ansluta klustret till Arc. Det här steget kräver Azure CLI. Installera Az CLI om det behövs.

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

    Mer information om connectedk8s finns i Snabbstart: Ansluta ett befintligt Kubernetes-kluster till Azure Arc .

  4. Du bör se utdata som i följande exempel:

    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. Kubernetes-klustret är nu Arc-aktiverat och visas i resursgruppen som du angav i kommandot az connectedk8s connect. Du kan också verifiera etableringen av det här klustret via Azure Portal. Den här snabbstarten är till för att visa kapaciteten för Layered Network Management för att aktivera Arc för ditt Kubernetes-kluster. Nu kan du prova de inbyggda Arc-funktionerna i det här klustret i det isolerade nätverket.

Nästa steg