Condividi tramite


Guida introduttiva: Configurare Azure IoT Layered Network Management (anteprima) per abilitare un cluster nell'ambiente Azure

In questa guida introduttiva si configura Gestione rete a più livelli di Azure IoT (anteprima) in una rete di livello 4 e di livello 3 Purdue. Il livello di rete 4 ha accesso a Internet e il livello 3 no. Configurare Gestione rete a più livelli (anteprima) per instradare il traffico di rete dal livello 3 ad Azure. Infine, è possibile abilitare per Arc il cluster K3S nel livello 3 anche se non è connesso direttamente a Internet.

  • Il livello 4 è un cluster del servizio Azure Kubernetes con una distribuzione di Gestione di rete su più livelli.
  • Il livello 3 è un cluster K3S in esecuzione su una macchina virtuale Linux che usa l'istanza di Gestione di rete su più livelli nel livello 4 per connettersi ad Azure. La rete di livello 3 è configurata per avere accesso in uscita alla rete di livello 4 sulle porte 443 e 8084. Tutti gli altri accessi in uscita sono disabilitati.

L'architettura di Gestione di rete su più livelli richiede la configurazione DNS nella rete di livello 3, in cui viene eseguito un nuovo puntamento degli URL consentiti alla rete di livello 4. In questo esempio, detta configurazione viene eseguita tramite una configurazione automatizzata basata su CoreDNS, il meccanismo di risoluzione DNS predefinito fornito con k3s.

Prerequisiti

Questi prerequisiti sono applicabili solo per la distribuzione di Gestione di rete su più livelli in modo indipendente e per l'abilitazione di Arc nel cluster di livello figlio.

  • Un cluster del servizio Azure Kubernetes
  • Una macchina virtuale Linux Ubuntu 22.04.3 LTS di Azure
  • Un jumpbox o un computer di configurazione con accesso a Internet e ad entrambe le reti di livello 3 e di livello 4

Distribuire Gestione rete a più livelli (anteprima) nel cluster del servizio Azure Kubernetes

Questi passaggi distribuiscono Gestione di rete su più livelli nel cluster del servizio Azure Kubernetes. Il cluster è il livello superiore nel modello ISA-95. Alla fine di questa sezione è disponibile un'istanza di Gestione di rete a più livelli pronta per accettare il traffico dal cluster abilitato per Azure Arc di seguito e supportare la distribuzione del servizio Operazioni di Azure IoT.

  1. Configurare kubectl per gestire il proprio cluster del servizio Azure Kubernetes dal jumpbox seguendo i passaggi descritti in Connettersi al cluster.

  2. Installare l'operatore di Gestione di rete su più livelli con il seguente comando dell'interfaccia della riga di comando di Azure:

    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. Per convalidare l'installazione, eseguire:

    kubectl get pods
    

    Verrà visualizzato un output che è simile all'esempio seguente:

    NAME                                READY   STATUS        RESTARTS   AGE
    aio-lnm-operator-7db49dc9fd-kjf5x   1/1     Running       0          78s
    
  4. Creare la risorsa personalizzata di Gestione di rete su più livelli generando un file denominato level4.yaml con il contenuto seguente:

    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. Per creare l'istanza di Gestione di rete su più livelli in base al file level4.yaml, eseguire:

    kubectl apply -f level4.yaml
    

    Questo passaggio crea n pod, un servizio e due mappe di configurazione. n si basa sul numero di repliche nella risorsa personalizzata.

  6. Per convalidare l'istanza, eseguire:

    kubectl get pods
    

    L'output sarà simile al seguente:

    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. Per visualizzare il servizio, eseguire:

    kubectl get services
    

    L'output dovrebbe essere simile all'esempio seguente:

    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. Per visualizzare le mappe di configurazione, eseguire:

    kubectl get cm
    

    L'output dovrebbe essere simile all'esempio seguente:

    NAME                           DATA   AGE
    aio-lnm-level4-config          1      50s
    aio-lnm-level4-client-config   1      50s
    
  9. In questo esempio, l'istanza di Gestione di rete su più livelli può iniziare subito ad accettare il traffico sull'indirizzo IP 20.81.111.118 esterno.

Preparare il cluster di livello 3

Nel livello 3 viene creato un cluster Kubernetes K3S in una macchina virtuale Linux. Per semplificare la configurazione del cluster, è possibile creare la macchina virtuale Linux Ubuntu 22.04.3 LTS di Azure con accesso a Internet e abilitare ssh dal jumpbox.

Suggerimento

In uno scenario più realistico dove si avvia la configurazione in una rete isolata, è possibile preparare la macchina con l'immagine predefinita per la propria soluzione o l'approccio di installazione isolata di K3S.

  1. Nella macchina virtuale Linux, installare e configurare K3S usando i comandi seguenti:

    curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644
    
  2. Configurare l'isolamento per il livello 3. Usare la procedura seguente per configurare il cluster di livello 3 in modo che il traffico venga inviato solo a Gestione di rete su più livelli nel livello 4.

    • Passare al gruppo di sicurezza di rete dell'interfaccia di rete della macchina virtuale.
    • Aggiungere una regola di sicurezza in uscita aggiuntiva per negare tutto il traffico in uscita dalla macchina virtuale di livello 3.
    • Aggiungere un'altra regola in uscita con la priorità più alta per consentire l'uscita all'indirizzo IP del cluster del servizio Azure Kubernetes di livello 4 sulle porte 443 e 8084.

    Screenshot delle regole in uscita del gruppo di sicurezza di rete.

Effettuare il provisioning del cluster in un livello isolato di Arc

I passaggi seguenti consentono di abilitare per Arc il cluster di livello 3 usando l'istanza di Gestione di rete su più livelli nel livello 4.

  1. Configurare il jumpbox per avere un accesso kubectl al cluster.

    Generare il file di configurazione nella macchina virtuale Linux.

    k3s kubectl config view --raw > config.level3
    

    Nel jumpbox, configurare l'accesso kubectl al cluster k3s di livello 3 copiando il file config.level3 nella directory ~/.kube e rinominandolo in config. La voce del server nel file di configurazione deve essere impostata sull'indirizzo IP o sul nome di dominio della macchina virtuale di livello 3.

  2. Per aggiungere gli URL consentiti, vedere Configurare CoreDNS per l'uso dei meccanismi di estensione forniti da CoreDNS (server DNS predefinito per i cluster K3S).

  3. Eseguire i comandi seguenti nel jumpbox per connettere il cluster ad Arc. Questo passaggio richiede l'interfaccia della riga di comando di Azure. Installare l'interfaccia della riga di comando Az, se necessario.

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

    Per altre informazioni su connectedk8s, vedere Guida introduttiva: Connettere un cluster Kubernetes esistente ad Azure Arc .

  4. Verrà visualizzato un output simile all'esempio seguente:

    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. Il cluster Kubernetes è ora abilitato per Arc ed elencato nel gruppo di risorse fornito nel comando az connectedk8s connect. È anche possibile convalidare il provisioning di questo cluster tramite il portale di Azure. Questa guida introduttiva illustra la funzionalità di Gestione di rete su più livelli per abilitare Arc nel cluster Kubernetes. È ora possibile provare le esperienze Arc predefinite in questo cluster all'interno della rete isolata.

Passaggi successivi