Partager via


Configurer un cluster de niveau 3 dans un réseau isolé avec Gestion du réseau en couches Azure IoT (préversion)

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.

Vous pouvez configurer un environnement réseau isolé spécial pour le déploiement d’Opérations Azure IoT (préversion). Par exemple, niveau 3 ou inférieur dans l’architecture réseau ISA-95. Dans cet article, vous configurez un cluster Kubernetes pour répondre à tous les prérequis d’Opérations Azure IoT et activer le cluster avec Arc via le service Gestion du réseau en couches Azure IoT (préversion) dans le niveau supérieur. Avant de commencer ce processus, le service de gestion réseau en couches doit être prêt à accepter la demande de connexion à partir de ce niveau.

Vous allez effectuer les tâches suivantes :

  • Configurez le système hôte et installez tous les logiciels nécessaires dans un environnement accessible sur Internet.
  • Installez Kubernetes de votre choix.
  • Déplacez l’hôte vers l’environnement réseau isolé.
  • Utilisez un paramètre DNS personnalisé pour diriger le trafic réseau vers le service de gestion réseau en couches au niveau parent.
  • Activez l’arc du cluster.

Prérequis

Suivez les instructions relatives à la configuration matérielle requise et aux conditions préalables dans Préparer votre cluster Kubernetes avec Azure Arc.

Configuration un cluster Kubernetes

Vous pouvez choisir d’utiliser AKS Edge Essentials hébergé sur Windows 11 ou un cluster K3S sur Ubuntu pour le cluster Kubernetes.

Vous devez effectuer cette étape dans un environnement accessible sur Internet en dehors du réseau isolé. Sinon, vous devez préparer le package d’installation hors connexion pour le logiciel suivant dans la section suivante.

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. Exécutez la commande suivante pour augmenter les limites de surveillance/d’instance de l’utilisateur.

    echo fs.inotify.max_user_instances=8192 | sudo tee -a /etc/sysctl.conf
    echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
    
    sudo sysctl -p
    
  5. Pour de meilleures performances, augmentez la limite du descripteur de fichier :

    echo fs.file-max = 100000 | sudo tee -a /etc/sysctl.conf
    
    sudo sysctl -p
    
  6. Installez le logiciel facultatif suivant si vous envisagez d’essayer des démarrages rapides Opérations Azure IoT ou des scénarios liés à MQTT.

  7. Installez Azure CLI. Vous pouvez installer Azure CLI directement sur la machine de niveau 3 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
      az extension add --name customlocation
      
    • 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.

    En guise d’alternative, vous pouvez configurer le K3S hors connexion à l’aide des étapes de la documentation d’installation Air-Gap après avoir déplacé l’appareil vers l’environnement réseau isolé.

  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
    

Déplacer l’appareil vers le réseau isolé de niveau 3

Une fois que l’appareil est déplacé vers votre couche réseau isolée de niveau 3, il est nécessaire d’avoir un DNS personnalisé.

  • Si vous choisissez l’approche CoreDNS, suivez les étapes de l’instruction et votre cluster est prêt à se connecter à Arc.
  • Si vous utilisez un serveur DNS, vous devez disposer du serveur DNS prêt, puis configurer le paramètre DNS d’Ubuntu. L’exemple suivant utilise l’interface utilisateur Ubuntu :
    1. Ouvrez les paramètres Wi-Fi.
    2. Sélectionnez le paramètre de la connexion actuelle.
    3. Sous l’onglet IPv4, désactivez le paramètre automatique pour DNS et entrez l’adresse IP locale du serveur DNS.

Approvisionner le cluster sur Azure Arc

Avant d’approvisionner azure Arc, utilisez la commande suivante pour vous assurer que le serveur DNS fonctionne comme prévu :

dig login.microsoftonline.com

La sortie doit ressembler à celle de l’exemple suivant. Dans la SECTION RÉPONSE, vérifiez que l’adresse IP est l’adresse IP de l’ordinateur de niveau parent que vous avez configuré précédemment.

; <<>> DiG 9.18.12-0ubuntu0.22.04.3-Ubuntu <<>> login.microsoftonline.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28891
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;login.microsoftonline.com.     IN      A

;; ANSWER SECTION:
login.microsoftonline.com. 0    IN      A       100.104.0.165

Cluster Arc-enable

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

    az login
    
  2. Définissez des variables d’environnement pour le reste de la 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.

  7. Récupérez les objectId ou id de l’application Microsoft Entra ID utilisée par le service Azure Arc. Exécutez la commande suivante exactement comme elle est écrite, sans changer la valeur GUID. La commande que vous utilisez dépend de votre version d’Azure CLI :

    # If you're using an Azure CLI version lower than 2.37.0, use the following command:
    az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query objectId -o tsv
    
    # If you're using Azure CLI version 2.37.0 or higher, use the following command:
    az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv
    
  8. Utilisez la commande az connectedk8s enable-features pour activer la prise en charge personnalisée de l’emplacement sur votre cluster. Utilisez la valeur objectId ou id de la commande précédente pour activer les emplacements personnalisés sur le cluster :

    az connectedk8s enable-features -n $CLUSTER_NAME -g $RESOURCE_GROUP --custom-locations-oid <objectId/id> --features cluster-connect custom-locations
    

Configurer le réseau de cluster

Important

Ces étapes concernent uniquement AKS Edge Essentials.

Après avoir déployé Opérations Azure IoT sur votre cluster, activez les connexions entrantes à l’agent MQTT et configurez le transfert de port :

  1. Activez une règle de pare-feu pour le port 18883 :
    New-NetFirewallRule -DisplayName "MQTT broker" -Direction Inbound -Protocol TCP -LocalPort 18883 -Action Allow
    
  2. Exécutez la commande suivante et notez l’adresse IP du service appelé aio-broker :
    kubectl get svc aio-broker -n azure-iot-operations -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
    
  3. Activez le réacheminement de port pour le port 18883. Remplacez <aio-broker IP address> par l’adresse IP que vous avez notée à l’étape précédente :
    netsh interface portproxy add v4tov4 listenport=18883 listenaddress=0.0.0.0 connectport=18883 connectaddress=<aio-broker IP address>