Condividi tramite


Guida introduttiva: Configurare Azure IoT Layered Network Management Preview per Abilitare arc un cluster nell'ambiente Azure

Importante

Anteprima delle operazioni di Azure IoT: abilitata da Azure Arc è attualmente disponibile in ANTEPRIMA. Non è consigliabile usare questo software di anteprima negli ambienti di produzione.

Vedere le condizioni per l'utilizzo supplementari per le anteprime di Microsoft Azure per termini legali aggiuntivi che si applicano a funzionalità di Azure in versione beta, in anteprima o in altro modo non ancora disponibili a livello generale.

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

  • Livello 4 di un cluster del servizio Azure Kubernetes con gestione di rete a più livelli distribuito.
  • Il livello 3 è un cluster K3S in esecuzione in una macchina virtuale Linux che usa l'istanza di gestione di rete a più livelli nel livello 4 per ottenere la connessione 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 della rete a più livelli richiede la configurazione DNS nella rete di livello 3, in cui gli URL consentiti vengono ripuntati alla rete di livello 4. In questo esempio, questa configurazione viene eseguita usando una configurazione automatizzata basata su CoreDNS, il meccanismo di risoluzione DNS predefinito fornito con k3s.

Prerequisiti

Questi prerequisiti sono solo per la distribuzione della gestione della rete a più livelli in modo indipendente e l'abilitazione di Arc del cluster a livello figlio.

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

Distribuire l'anteprima di Gestione rete a più livelli nel cluster del servizio Azure Kubernetes

Questi passaggi distribuiscono Gestione rete a 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 rete a più livelli pronta per accettare il traffico dal cluster abilitato per Azure Arc di seguito e supportare la distribuzione del servizio Azure IoT Operations Preview.

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

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

    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 verificare che l'installazione sia riuscita, eseguire:

    kubectl get pods -n azure-iot-operations
    

    Verrà visualizzato un output simile all'esempio seguente:

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

    apiVersion: layerednetworkmgmt.iotoperations.azure.com/v1beta1
    kind: Lnm
    metadata:
      name: level4
      namespace: azure-iot-operations
    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: "*.ods.opinsights.azure.com"
          destinationType: external
        - destinationUrl: "*.oms.opinsights.azure.com"
          destinationType: external
        - destinationUrl: "*.monitoring.azure.com"
          destinationType: external
        - destinationUrl: "*.handler.control.monitor.azure.com"
          destinationType: external
        - destinationUrl: "quay.io"
          destinationType: external
        - destinationUrl: "*.quay.io"
          destinationType: external
        - destinationUrl: "docker.io"
          destinationType: external
        - destinationUrl: "*.docker.io"
          destinationType: external
        - destinationUrl: "*.docker.com"
          destinationType: external
        - destinationUrl: "gcr.io"
          destinationType: external
        - destinationUrl: "*.googleapis.com"
          destinationType: external
        - destinationUrl: "login.windows.net"
          destinationType: external
        - destinationUrl: "graph.windows.net"
          destinationType: external
        - destinationUrl: "msit-onelake.pbidedicated.windows.net"
          destinationType: external
        - destinationUrl: "*.vault.azure.net"
          destinationType: external
        - destinationUrl: "*.k8s.io"
          destinationType: external
        - destinationUrl: "*.pkg.dev"
          destinationType: external
        - destinationUrl: "github.com"
          destinationType: external
        - destinationUrl: "raw.githubusercontent.com"
          destinationType: external
        sourceIpRange:
        - addressPrefix: "0.0.0.0"
          prefixLen: 0
    
  5. Per creare l'istanza di Gestione rete a 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 -n azure-iot-operations
    

    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 -n azure-iot-operations
    

    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 -n azure-iot-operations
    

    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 rete a più livelli è pronta per accettare il traffico sull'indirizzo IP 20.81.111.118esterno.

Preparare il cluster di livello 3

Nel livello 3 si crea 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 che avvia la configurazione in rete isolata, è possibile preparare la macchina con l'immagine predefinita per la soluzione o l'approccio air-gap install di K3S.

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

    curl -sfL https://get.k3s.io | sh -s - --disable=traefik --write-kubeconfig-mode 644
    
  2. Configurare l'isolamento di rete per il livello 3. Usare la procedura seguente per configurare il cluster di livello 3 per inviare il traffico solo a Gestione rete a 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'accesso in uscita al cluster del servizio Azure Kubernetes di livello 4 sulle porte 443 e 8084.

    Screenshot of network security group outbound rules.

Effettuare il provisioning del cluster in un livello isolato in Arc

Con i passaggi seguenti, arc-enable the level 3 cluster using the Layered Network Management instance at level 4 (Abilitare arc-level-the level 3 cluster using the Layered Network Management instance at level 4).

  1. Configurare il jumpbox per avere l'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 di livello 3 k3s copiando il config.level3 file nella ~/.kube directory e rinominarlo 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. Vedere Configurare CoreDNS per l'uso dei meccanismi di estensione forniti da CoreDNS (server DNS predefinito per i cluster K3S) per aggiungere gli URL consentiti da risolvere da CoreDNS.

  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 di 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 Avvio rapido: Connessione un cluster Kubernetes esistente in 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 della rete a più livelli per abilitare Arc per il cluster Kubernetes. È ora possibile provare le esperienze Arc predefinite in questo cluster all'interno della rete isolata.

Passaggi successivi