Préparer un cluster pour Opérations Azure IoT

Un cluster Kubernetes compatible Azure Arc est un prérequis pour le déploiement de Opérations Azure IoT. Cet article décrit comment préparer ce cluster, avec des conseils pour Ubuntu, Windows, Azure Local et vSphere Kubernetes Service (VKS).

Si vous souhaitez déployer Opérations Azure IoT rapidement et exécuter un exemple de charge de travail dans un environnement de test, consultez le Quickstart : Run Opérations Azure IoT in GitHub Codespaces with K3s.

Prérequis

Pour les déploiements multi-nœuds, utilisez K3s sur Ubuntu, AKS sur Azure Local, ou vSphere Kubernetes Service (VKS). AKS Edge Essentials sur Windows ne prend en charge que les déploiements à nœud unique.

Pour préparer un cluster Kubernetes compatible avec Azure Arc, vous avez besoin des éléments suivants :

  • Un abonnement Azure avec le rôle Owner ou une combinaison de rôles Contributor et Utilisateur d’accès administrateur. Vous pouvez vérifier votre niveau d’accès en accédant à votre abonnement, en sélectionnant Access control (IAM) sur le côté gauche du portail Azure, puis en sélectionnant View my access. Si vous n'avez pas d'abonnement Azure, créez-en un gratuitement avant de commencer.

  • La Azure CLI installée sur votre ordinateur de développement. Consultez les extensions Azure CLI disponibles pour la version minimale requise de l’extension connectedk8s. Utilisez az --version pour vérifier votre version et az upgrade pour effectuer une mise à jour si nécessaire. Pour plus d’informations, consultez la rubrique Installation de l’interface de ligne de commande Azure (CLI).

  • L’extension connectedk8s pour Azure CLI. Utilisez la commande suivante pour ajouter l’extension ou la mettre à jour vers la dernière version :

    az extension add --upgrade --name connectedk8s
    
  • Groupe de ressources Azure. Une seule instance Opérations Azure IoT est prise en charge par groupe de ressources. Pour créer un groupe de ressources, utilisez la commande az group create. Pour obtenir la liste des régions actuellement prises en charge Azure, consultez Régions prises en charge.

    az group create --location $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
    

Les exemples Azure CLI de cet article utilisent des variables d’environnement afin de pouvoir définir chaque valeur une fois puis copier-coller les commandes as-is. Si vous utilisez l'environnement Opérations Azure IoT Codespaces du quickstart, ces variables sont déjà définies pour vous et vous pouvez sauter cette étape. Sinon, définissez les variables d’environnement suivantes dans votre shell avant d’exécuter les commandes.

Les scripts suivants définissent les variables d’environnement les plus couramment utilisées :

Variable d'environnement Description
SUBSCRIPTION_ID L’identifiant de l’abonnement contenant votre instance Opérations Azure IoT.
RESOURCE_GROUP Le nom du groupe de ressources contenant votre instance Opérations Azure IoT.
AIO_INSTANCE_NAME Le nom de votre instance Opérations Azure IoT. Pour lister vos instances, exécutez az iot ops list -o table.
CLUSTER_NAME Le nom du cluster Kubernetes compatible Azure Arc qui héberge votre instance.
LOCATION La région Azure à utiliser pour de nouvelles ressources, par exemple eastus.
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
AIO_INSTANCE_NAME=<instance-name>
CLUSTER_NAME=<cluster-name>
LOCATION=<region>

Vous n’avez qu’à définir les variables utilisées dans cet article. Cet article peut utiliser des variables d’environnement supplémentaires pour les noms de ressources que vous choisissez. L’article explique comment les placer là où ils sont introduits.

Créer un cluster et l’activer pour Arc

Cette section fournit les étapes pour créer des clusters dans des environnements validés sur Ubuntu, Windows, Azure Local et vSphere Kubernetes Service (VKS).

Pour préparer un cluster Kubernetes K3s sur Ubuntu :

  1. Créez un cluster K3s à nœud unique ou à plusieurs nœuds. Pour obtenir des exemples, consultez le guide de démarrage rapide K3s ou les projets liés à K3s.

  2. Vérifiez que K3s est installé kubectl. Si ce n’est pas le cas, suivez les instructions pour Installer kubectl sur Linux.

    kubectl version --client
    
  3. Suivez les instructions pour Installer Helm.

  4. Créez un fichier YAML de configuration K3s dans .kube/config:

    mkdir ~/.kube
    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
    sudo chmod 644 /etc/rancher/k3s/k3s.yaml
    
  5. 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
    
  6. 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
    

Activez Azure Arc sur votre cluster K3s

Connectez votre cluster à Azure Arc pour pouvoir le gérer à distance.

  1. Depuis une machine ayant kubectl accès à votre cluster, connectez-vous à Azure CLI avec votre compte utilisateur Microsoft Entra qui contient les rôles requis pour l’abonnement Azure :

    az login
    

    Si à un moment donné vous recevez une erreur indiquant « Votre appareil doit être géré pour accéder à votre ressource, relancez-le az login et assurez-vous de vous connecter de manière interactive via un navigateur.

  2. Après votre connexion, l’interface Azure CLI affiche tous vos abonnements et indique votre abonnement par défaut avec un astérisque*. Pour continuer avec votre abonnement par défaut, sélectionnez Enter. Sinon, tapez le nombre de l’abonnement Azure que vous souhaitez utiliser.

  3. Inscrivez les fournisseurs de ressources requis dans votre abonnement.

    Remarque

    Vous devez effectuer cette étape une seule fois par abonnement. Pour enregistrer les fournisseurs de ressources, il faut une autorisation pour effectuer l’opération /register/action , ce que les rôles de contributeur et de propriétaire par abonnement incluent. Pour plus d’informations, consultez les fournisseurs de ressources et types 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"
    
  4. Utilisez la commande az connectedk8s connect pour activer votre cluster Kubernetes et le gérer dans le cadre de votre groupe de ressources Azure.

    az connectedk8s connect --name $CLUSTER_NAME -l $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID --enable-oidc-issuer --enable-workload-identity --disable-auto-upgrade
    

    Pour empêcher les mises à jour non planifiées de Azure Arc et les extensions System Arc que Opérations Azure IoT utilise comme dépendances, cette commande désactive la mise à niveau automatique. À la place, mettez à niveau les agents manuellement si nécessaire.

    Important

    Si votre environnement utilise un serveur proxy ou une passerelle Azure Arc, modifiez la commande az connectedk8s connect avec vos informations de proxy :

    1. Suivez les instructions dans Connectez-vous à l'aide d'un serveur proxy sortant ou dans intégrez des clusters Kubernetes à Azure Arc avec Azure Arc Gateway.
    2. Ajoutez 169.254.169.254 au paramètre --proxy-skip-range de la commande az connectedk8s connect. Azure Device Registry utilise ce point de terminaison local pour obtenir des jetons d’accès pour l’autorisation.

    Opérations Azure IoT ne prend pas en charge les serveurs proxy qui nécessitent un certificat approuvé.

  5. Obtenez l’URL de l’émetteur du cluster.

    az connectedk8s show --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --query oidcIssuerProfile.issuerUrl --output tsv
    

    Enregistrez la sortie de cette commande à utiliser dans les étapes suivantes.

  6. Crée un fichier de configuration K3s.

    sudo nano /etc/rancher/k3s/config.yaml
    
  7. Ajoutez le contenu suivant au fichier config.yaml, en remplaçant l’espace réservé <SERVICE_ACCOUNT_ISSUER> par l’URL de l’émetteur de votre cluster.

    kube-apiserver-arg:
     - service-account-issuer=<SERVICE_ACCOUNT_ISSUER>
     - service-account-max-token-expiration=24h
    
  8. Enregistrez le fichier et quittez l’éditeur nano.

  9. Préparez-vous à activer le service Azure Arc, l’emplacement personnalisé, sur votre cluster Arc en obtenant l’ID d’objet d’emplacement personnalisé et en l’enregistrant en tant que variable d’environnement, OBJECT_ID. Vous devez vous connecter à Azure CLI avec un compte utilisateur Microsoft Entra, et non un principal de service, pour exécuter la commande avec succès. Exécutez la commande suivante exactement comme écrite, sans modifier la valeur du GUID.

    export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
    

    Remarque

    Si vous recevez l'erreur : « Impossible de récupérer l'oid de l'application « custom-locations ». Continuez sans activer la fonctionnalité. « Privilèges insuffisants pour terminer l’opération » alors votre principal de service pourrait ne pas disposer des autorisations nécessaires pour récupérer l’ID d’objet de l’emplacement personnalisé. Connectez-vous à Azure CLI avec un compte utilisateur Microsoft Entra qui remplit les prérequis. Pour plus d’informations, consultez Créer et gérer des emplacements personnalisés.

  10. Utilisez la commande az connectedk8s enable-features pour activer la fonctionnalité d’emplacement personnalisé sur votre cluster Arc. Cette commande utilise la variable d’environnement OBJECT_ID que vous avez enregistrée à l’étape précédente pour définir la valeur du paramètre custom-locations-oid. Sur l’ordinateur sur lequel vous avez déployé le cluster Kubernetes, exécutez la commande suivante :

    az connectedk8s enable-features -n $CLUSTER_NAME -g $RESOURCE_GROUP --custom-locations-oid $OBJECT_ID --features cluster-connect custom-locations
    
  11. Redémarrez K3s.

    systemctl restart k3s
    

Configurez Azure Container Storage activé par Azure Arc

Les fonctionnalités telles que les points de terminaison de stockage locaux de flux de données et le connecteur multimédia utilisent éventuellement Azure Container Storage activé par Azure Arc (ACSA) pour synchroniser les données locales dans le cloud. ACSA n'est pas installé dans Opérations Azure IoT, donc vous devez l'installer séparément.

Pour apprendre à installer ACSA sur votre cluster Kubernetes :

Étapes suivantes

Maintenant que vous disposez d’un cluster Kubernetes compatible avec Azure Arc, vous pouvez déployer Opérations Azure IoT.