Partager via


Démarrage rapide : configurer la préversion de la gestion de réseau en couches Azure IoT pour activer un cluster avec Arc dans un environnement Azure

Important

Opérations Azure IoT (préversion) – activé parc Azure Arc est actuellement en PRÉVERSION. Vous ne devez pas utiliser ce logiciel en préversion dans des environnements de production.

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.

Dans ce guide de démarrage rapide, vous configurez la préversion de la gestion de réseau en couches Azure IoT sur un réseau Purdue de niveau 4 et de niveau 3. Le niveau 4 du réseau a accès à l'internet et le niveau 3 n'y a pas accès. Vous configurez la gestion de réseau en couches pour router le trafic de niveau 3 vers Azure. Enfin, vous pouvez activer avec Arc le cluster K3S au niveau 3, même s’il n’est pas directement connecté à Internet.

  • Le niveau 4 est un cluster AKS avec une gestion en couches du réseau déployée.
  • Le niveau 3 est un cluster K3S s’exécutant sur une machine virtuelle Linux qui utilise l’instance de gestion réseau en couches au niveau 4 pour obtenir la connexion à Azure. Le réseau de niveau 3 est configuré pour avoir un accès sortant au réseau de niveau 4 sur les ports 443 et 8084. Tous les autres accès sortants sont désactivés.

L’architecture de gestion du réseau en couches nécessite une configuration DNS sur le réseau de niveau 3, où les URL autorisées sont repointées au réseau de niveau 4. Dans cet exemple, cette configuration s’effectue à l’aide d’une configuration automatisée basée sur CoreDNS, le mécanisme de résolution DNS par défaut fourni avec k3s.

Prérequis

Ces conditions préalables sont uniquement destinées au déploiement de la gestion de réseau en couches indépendamment et à l’activation par Arc du cluster au niveau enfant.

  • Un cluster AKS
  • Une machine virtuelle Ubuntu 22.04.3 LTS Azure Linux
  • Une machine de rebond ou de configuration qui a accès à Internet et aux réseaux de niveau 3 et de niveau 4

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

Ces étapes déploient la gestion du réseau en couches sur le cluster AKS. Le cluster est la couche supérieure du modèle ISA-95. À la fin de cette section, vous disposez d’une instance de gestion de réseau en couches prête à accepter le trafic à partir du cluster avec Azure Arc ci-dessous et de prendre en charge le déploiement du service de la préversion d’Opérations Azure IoT.

  1. Configurez kubectl pour gérer votre cluster AKS à partir de votre jumpbox en suivant les étapes de connexion au cluster.

  2. Installez l’opérateur de gestion du réseau en couches avec la commande Azure CLI suivante :

    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. Pour vérifier que l’installation a abouti, exécutez :

    kubectl get pods -n azure-iot-operations
    

    Vous devez obtenir une liste de sorties qui ressemble à ce qui suit :

    NAME                                READY   STATUS        RESTARTS   AGE
    aio-lnm-operator-7db49dc9fd-kjf5x   1/1     Running       0          78s
    
  4. Créez la ressource personnalisée de gestion réseau en couches en créant un fichier nommé level4.yaml avec le contenu suivant :

    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. Pour créer l’instance de gestion réseau en couches en fonction du fichier level4.yaml, exécutez :

    kubectl apply -f level4.yaml
    

    Cette étape crée n pods, un service et deux mappages de configuration. n est basé sur le nombre de réplicas dans la ressource personnalisée.

  6. Pour valider l’instance, exécutez :

    kubectl get pods -n azure-iot-operations
    

    La sortie doit ressembler à :

    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. Pour afficher le service, exécutez :

    kubectl get services -n azure-iot-operations
    

    La sortie doit ressembler à cet exemple :

    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. Pour afficher les mappages de configuration, exécutez :

    kubectl get cm -n azure-iot-operations
    

    La sortie doit ressembler à cet exemple :

    NAME                           DATA   AGE
    aio-lnm-level4-config          1      50s
    aio-lnm-level4-client-config   1      50s
    
  9. Dans cet exemple, l’instance de gestion réseau en couches est prête à accepter le trafic sur l’adresse IP externe 20.81.111.118.

Préparer le cluster de niveau 3

Au niveau 3, vous créez un cluster Kubernetes K3S sur une machine virtuelle Linux. Pour simplifier la configuration du cluster, vous pouvez créer la machine virtuelle Ubuntu 22.04.3 LTS Azure Linux avec un accès Internet et activer ssh à partir de votre serveur de rebond.

Conseil

Dans un scénario plus réaliste qui consiste à démarrer la configuration dans un réseau isolé, vous pouvez préparer la machine avec l’image prédéfinie de votre solution ou l’approche de l’installation Air-Gap de K3S.

  1. Sur la machine virtuelle Linux, installez et configurez K3S à l’aide des commandes suivantes :

    curl -sfL https://get.k3s.io | sh -s - --disable=traefik --write-kubeconfig-mode 644
    
  2. Configurez l’isolation réseau pour le niveau 3. Utilisez les étapes suivantes pour configurer le cluster de niveau 3 afin d’envoyer uniquement le trafic vers la gestion de réseau en couches au niveau 4.

    • Accédez au groupe de sécurité réseau de l’interface réseau de la machine virtuelle.
    • Ajoutez une règle de sécurité sortante supplémentaire pour refuser tout le trafic sortant à partir de la machine virtuelle de niveau 3.
    • Ajoutez une autre règle de trafic sortant avec la priorité la plus élevée pour autoriser le trafic sortant vers l’adresse IP du cluster AKS de niveau 4 sur les ports 443 et 8084.

    Screenshot of network security group outbound rules.

Approvisionner le cluster dans une couche isolée sur Arc

Les étapes suivantes vous permettent d’activer avec Arc le cluster de niveau 3 à l’aide de l’instance de gestion de réseau en couches au niveau 4.

  1. Configurez le jumpbox pour avoir un accès kubectl au cluster.

    Générez le fichier de configuration sur votre machine virtuelle Linux.

    k3s kubectl config view --raw > config.level3
    

    Sur votre jumpbox, configurez l’accès kubectl au cluster de niveau 3 k3s en copiant le fichier config.level3 dans le répertoire ~/.kube et en le renommant config. L’entrée du serveur dans le fichier de configuration doit être définie sur l’adresse IP ou le nom de domaine de la machine virtuelle de niveau 3.

  2. Reportez-vous à Configurer CoreDNS pour utiliser des mécanismes d’extension fournis par CoreDNS (le serveur DNS par défaut pour les clusters K3S) pour ajouter les URL autorisées à résoudre par CoreDNS.

  3. Exécutez les commandes suivantes sur votre jumpbox pour connecter le cluster à Arc. Cette étape nécessite Azure CLI. Installez l’interface Az CLI si nécessaire.

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

    Pour plus d’informations sur connectedk8s, consultez Démarrage rapide : Connecter un cluster Kubernetes existant à Azure Arc .

  4. Un résultat similaire à ce qui suit devrait s’afficher :

    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. Votre cluster Kubernetes est désormais activé par Arc et est répertorié dans le groupe de ressources que vous avez fourni dans la commande az connectedk8s connect. Vous pouvez également valider l’approvisionnement de ce cluster via le Portail Azure. Ce guide de démarrage rapide présente la fonctionnalité de gestion du réseau en couches pour activer Arc pour votre cluster Kubernetes. Vous pouvez maintenant essayer les expériences Arc intégrées sur ce cluster au sein du réseau isolé.

Étapes suivantes