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.
Configurare
kubectl
per gestire il proprio cluster del servizio Azure Kubernetes dal jumpbox seguendo i passaggi descritti in Connettersi al cluster.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
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
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
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.
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
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
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
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.
Nella macchina virtuale Linux, installare e configurare K3S usando i comandi seguenti:
curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644
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.
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.
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 inconfig
. 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.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).
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 .
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 .... ....
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
- Per informazioni su come configurare un cluster in una rete isolata per le operazioni IoT di Azure da distribuire, vedere Configurare il servizio gestione di rete a più livelli per abilitare le operazioni IoT di Azure in una rete isolata
- Per altre informazioni sulla configurazione di ambienti di rete completi per gli scenari correlati a Operazioni di Azure IoT, vedere Creare un ambiente di rete campione