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.
- AKS Edge Essentials - Cluster connecté à Arc et GitOps catégorie dans Exigences et matrice de pris en charge AKS Edge Essentials
- Cluster Kubernetes K3S - Configuration système requise pour Kubernetes avec Azure Arc
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
Ubuntu 22.04 LTS est la version recommandée pour l’ordinateur hôte.
Installez Helm 3.8.0 ou version ultérieure.
Installez Kubectl.
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
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.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
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
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. LeCLUSTER_NAME
etRESOURCE_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>"
Définissez le contexte d’abonnement Azure pour toutes les commandes :
az account set -s $SUBSCRIPTION_ID
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"
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
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
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
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.
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.
Créez la ressource personnalisée pour créer une instance de gestion réseau en couches.
kubectl apply -f lnm-cr.yaml
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.