Partager via


Configurer Gestion du réseau en couches Azure IoT (préversion) sur un cluster de niveau 4

Important

Opérations Azure IoT Préversion avec Azure Arc est actuellement en préversion. Vous ne devez pas utiliser ce logiciel en préversion dans des environnements de production.

Lorsqu’une version en disponibilité générale sera publiée, vous devrez déployer une nouvelle installation d’Opérations Azure IoT. Vous ne pourrez pas mettre à niveau une installation en préversion.

Pour connaître les conditions juridiques qui s’appliquent aux fonctionnalités Azure en version bêta, en préversion ou plus généralement non encore en disponibilité générale, consultez l’Avenant aux conditions d’utilisation des préversions de Microsoft Azure.

Le service de gestion en couches du réseau (préversion) Azure IoT est un des composants de Opérations Azure IoT (préversion). Cependant, il peut être déployé individuellement dans la couche réseau supérieure pour prendre en charge les opérations Azure IoT dans la couche inférieure. Dans le niveau supérieur de vos couches réseau (généralement au niveau 4 de l’architecture réseau ISA-95), le service de gestion de réseau en couches et de cluster dispose d’un accès Internet direct. Une fois l’installation terminée, le service de gestion réseau en couches est prêt à recevoir le trafic réseau de la couche enfant et à le transférer vers Azure Arc.

Prérequis

Les exigences minimales suivantes doivent être respectées pour déployer individuellement la gestion de réseau en couches sur le système.

Configurer un cluster Kubernetes au niveau 4

Pour configurer uniquement la gestion de réseau en couches, les conditions préalables sont plus simples que pour un déploiement d’Azure IoT Operations. Il est facultatif de répondre aux exigences générales relatives aux opérations Azure IoT dans Préparer votre cluster Kubernetes.

Les étapes suivantes pour configurer AKS Edge Essentials et le cluster Kubernetes K3S sont vérifiées par Microsoft.

Préparer une machine Ubuntu

  1. Ubuntu 22.04 LTS est la version recommandée pour l’ordinateur hôte.

  2. Installez Helm 3.8.0 ou version ultérieure.

  3. Installez Kubectl.

  4. Installez Azure CLI. Vous pouvez installer Azure CLI directement sur la machine de niveau 4 ou sur un autre ordinateur de développement ou jumpbox si vous envisagez d’accéder au cluster de niveau 3 à distance. Si vous choisissez d’accéder au cluster Kubernetes à distance pour nettoyer l’hôte du cluster, vous exécutez les commandes associées kubectl et az » à partir de l’ordinateur de développement pour le reste des étapes décrites dans cet article.

    • Installez Azure CLI. Suivez les étapes de l’installation d’Azure CLI sur Linux.

    • Installez connectedk8s et d’autres extensions.

      az extension add --name connectedk8s
      az extension add --name k8s-extension
      
    • Installez l’extension Azure CLI à l’aide de az extension add --name azure-iot-ops.

Créer le cluster K3S

  1. Installez K3S avec la commande suivante :

    curl -sfL https://get.k3s.io | sh -s - --disable=traefik --write-kubeconfig-mode 644
    

    Important

    Veillez à utiliser le paramètre --disable=traefik pour désactiver Treafik. Sinon, vous pouvez avoir un problème lorsque vous essayez d’allouer une adresse IP publique pour le service de gestion réseau en couches dans les étapes ultérieures.

  2. Copiez le fichier yaml de configuration K3s dans .kube/config.

    mkdir ~/.kube
    cp ~/.kube/config ~/.kube/config.back
    sudo KUBECONFIG=~/.kube/config:/etc/rancher/k3s/k3s.yaml kubectl config view --flatten > ~/.kube/merged
    mv ~/.kube/merged ~/.kube/config
    chmod  0600 ~/.kube/config
    export KUBECONFIG=~/.kube/config
    #switch to k3s context
    kubectl config use-context default
    

Activer le cluster par Arc

  1. Se connecter avec Azure CLI. Pour éviter les problèmes d’autorisation ultérieurement, il est important que vous vous connectiez de manière interactive à l’aide d’une fenêtre de navigateur :

    az login
    
  2. Définissez des variables d’environnement pour les étapes de configuration. Remplacez les valeurs dans <> par des valeurs ou des noms valides de votre choix. Le CLUSTER_NAME et RESOURCE_GROUP sont créés en fonction des noms que vous fournissez :

    # Id of the subscription where your resource group and Arc-enabled cluster will be created
    $SUBSCRIPTION_ID = "<subscription-id>"
    # Azure region where the created resource group will be located
    # Currently supported regions: : "westus3" or "eastus2"
    $LOCATION = "WestUS3"
    # Name of a new resource group to create which will hold the Arc-enabled cluster and Azure IoT Operations resources
    $RESOURCE_GROUP = "<resource-group-name>"
    # Name of the Arc-enabled cluster to create in your resource group
    $CLUSTER_NAME = "<cluster-name>"
    
  3. Définissez le contexte d’abonnement Azure pour toutes les commandes :

    az account set -s $SUBSCRIPTION_ID
    
  4. Inscrivez les fournisseurs de ressources demandés dans votre abonnement :

    Remarque

    Cette étape doit être exécutée une seule fois par abonnement. Pour inscrire des fournisseurs de ressources, vous devez disposer de l’autorisation d’effectuer l’opération /register/action qui est incluse dans les rôles Contributeur et Propriétaire de l’abonnement. Pour plus d’informations, consultez Fournisseurs et types de ressources Azure.

    az provider register -n "Microsoft.ExtendedLocation"
    az provider register -n "Microsoft.Kubernetes"
    az provider register -n "Microsoft.KubernetesConfiguration"
    az provider register -n "Microsoft.IoTOperations"
    az provider register -n "Microsoft.DeviceRegistry"
    az provider register -n "Microsoft.SecretSyncController"
    
  5. Utilisez la commande az group create pour créer un groupe de ressources dans votre abonnement Azure pour stocker toutes les ressources :

    az group create --location $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
    
  6. Utilisez la commande az connectedk8s connect pour activer votre cluster Kubernetes avec Arc et le gérer dans le groupe de ressources que vous avez créé durant l’étape précédente :

    az connectedk8s connect -n $CLUSTER_NAME -l $LOCATION -g $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
    

    Conseil

    Si les commandes connectedk8s échouent, essayez d’utiliser les cmdlets dans Connecter votre cluster AKS Edge Essentials à Arc.

Déployer le service en préversion de gestion réseau en couches sur le cluster

Une fois que votre cluster Kubernetes est compatible avec Arc, vous pouvez déployer le service Layered Network Management sur le cluster.

Installer l’opérateur de gestion réseau en couches préversion

  1. Exécutez la commande suivante : Remplacez les espaces réservés <RESOURCE GROUP> et <CLUSTER NAME> par vos informations d’intégration Arc d’une étape précédente.

    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
    
  2. Utilisez la commande kubectl pour vérifier que l’opérateur de gestion réseau en couches est en cours d’exécution.

    kubectl get pods -n azure-iot-operations
    
    NAME                                   READY   STATUS    RESTARTS   AGE
    azedge-lnm-operator-598cc495c-5428j   1/1     Running   0          28h
    

Configurer le service de gestion réseau en couches préversion

Créez la ressource personnalisée de gestion du réseau en couches.

  1. Créez un fichier lnm-cr.yaml comme indiqué :

    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
    

    Pour le débogage ou l’expérimentation, vous pouvez modifier la valeur du paramètre loglevel en débogage.

  2. Créez la ressource personnalisée pour créer une instance de gestion réseau en couches.

    kubectl apply -f lnm-cr.yaml
    
  3. Affichez le service Kubernetes de gestion réseau en couches :

    kubectl get services -n azure-iot-operations
    
    NAME           TYPE           CLUSTER-IP    EXTERNAL-IP   PORT(S)                                      AGE
    lnm-level-4   LoadBalancer   10.43.91.54   192.168.0.4   80:30530/TCP,443:31117/TCP,10000:31914/TCP   95s
    

Ajouter une configuration iptables

Important

Cette étape concerne uniquement AKS Edge Essentials.

Le déploiement de gestion réseau en couches crée un service Kubernetes de type LoadBalancer. Pour vous assurer que le service est accessible en dehors du cluster Kubernetes, vous devez mapper les ports de l’hôte Windows sous-jacents aux ports appropriés au niveau du service de gestion réseau en couches.

netsh interface portproxy add v4tov4 listenport=443 listenaddress=0.0.0.0 connectport=443 connectaddress=192.168.0.4
netsh interface portproxy add v4tov4 listenport=10000 listenaddress=0.0.0.0 connectport=10000 connectaddress=192.168.0.4

Une fois ces commandes exécutées, le trafic reçu sur les ports 443 et 10000 sur l’hôte Windows est acheminé vers le service Kubernetes. Lors de la configuration du DNS personnalisé pour la couche réseau au niveau enfant, vous dirigez le trafic réseau vers l’adresse IP de cet hôte Windows, puis vers le service de gestion réseau en couches s’exécutant sur celui-ci.