Démarrage rapide : exécuter Opérations Azure IoT dans GitHub Codespaces avec K3s
Dans ce démarrage rapide, vous déployez Opérations Azure IoT sur un cluster Kubernetes avec Azure Arc afin de pouvoir gérer à distance vos appareils et charges de travail. À la fin du démarrage rapide, vous avez un cluster que vous pouvez gérer à partir du cloud. Le reste des démarrages rapides de cette série de bout en bout s’appuient sur celui-ci pour définir des exemples de ressources, des pipelines de traitement de données et des visualisations.
Avant de commencer
Cette série de guides de démarrage rapide est destinée à vous aider à prendre en main Azure IoT Operations le plus rapidement possible afin de pouvoir évaluer un scénario de bout en bout. Dans un environnement de développement ou de production réel, plusieurs équipes travaillant ensemble effectuent ces tâches et certaines tâches peuvent nécessiter des autorisations élevées.
Pour une nouvelle expérience utilisateur optimale, nous vous recommandons d’utiliser un compte gratuit Azure afin que vous disposiez d’autorisations de propriétaire sur les ressources de ces guides de démarrage rapide.
Nous utilisons également GitHub Codespaces comme environnement virtuel pour ce démarrage rapide afin que vous puissiez tester le scénario sans installer de nouveaux outils sur vos machines. Toutefois, si vous souhaitez déployer Opérations Azure IoT sur un cluster local sur Ubuntu ou Azure Kubernetes Service (AKS), consultez Préparer votre cluster Kubernetes avec Azure Arc.
Prérequis
Avant de commencer, respectez les conditions préalables suivantes :
Un abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez-en un gratuitement avant de commencer.
Un compte GitHub.
Visual Studio Code installé sur votre machine de développement. Pour plus d’informations, consultez Télécharger Visual Studio Code.
Autorisations Microsoft.Authorization/roleAssignments/write au niveau du groupe de ressources.
Quel problème résoudrons-nous ?
Opérations Azure IoT est une suite de services de données qui s’exécutent sur des clusters Kubernetes. Vous souhaitez que ces clusters soient gérés à distance à partir du cloud et qu’ils puissent communiquer en toute sécurité avec les ressources et les points de terminaison cloud. Nous abordons ces problèmes avec les tâches suivantes dans ce guide de démarrage rapide :
- Créez un cluster Kubernetes dans GitHub Codespaces.
- Connectez le cluster à Azure Arc pour une gestion à distance.
- Créez un registre de schémas.
- Déployez Opérations Azure IoT sur votre cluster.
Créer un cluster
Vous pouvez déployer Opérations Azure IoT vers K3s sur Ubuntu, Azure Kubernetes Service (AKS) Edge Essentials et AKS sur Azure Local. Cependant, pour des raisons de rapidité et de commodité, ce démarrage rapide utilise GitHub Codespaces pour héberger votre cluster. Pour découvrir comment déployer Opérations Azure IoT sur un cluster sous Windows ou Ubuntu à la place, consultez Préparer votre cluster Kubernetes avec Azure Arc.
Remarque
Les espaces de code sont faciles à configurer rapidement et à détruire ultérieurement, mais ils ne conviennent pas à l’évaluation des performances ou aux tests de mise à l’échelle. Utilisez GitHub Codespaces uniquement pour l’exploration.
L’environnement Codespaces est suffisant pour effectuer les étapes du démarrage rapide, mais il ne prend pas en charge les configurations avancées.
Dans cette section, vous créez un cluster. Si vous souhaitez réutiliser un cluster sur lequel vous avez déployé auparavant Opérations Azure IoT, reportez-vous aux étapes décrites dans Nettoyer les ressources pour désinstaller Opérations Azure IoT avant de continuer.
Le codespace Azure-Samples/explore-iot-operations est préconfiguré avec :
- K3s s’exécutant dans K3d pour un cluster Kubernetes léger
- Azure CLI
- Kubectl pour la gestion des ressources Kubernetes
- D’autres outils utiles tels que Helm et k9s
Pour créer votre codespace et votre cluster, procédez comme suit :
Créez le codespace dans GitHub Codespaces.
Fournissez les secrets recommandés suivants pour votre codespace :
Paramètre Valeur SUBSCRIPTION_ID Votre ID d’abonnement Azure. RESOURCE_GROUP Nom d'un nouveau groupe de ressources Azure dans lequel votre cluster sera créé. LOCATION Une région Azure proche de vous. Pour obtenir la liste des régions actuellement prises en charge, consultez Régions prises en charge. Conseil
Les valeurs que vous fournissez à cette étape sont enregistrées sur votre compte GitHub pour être utilisées dans ce codespace et les suivants. Elles sont ajoutées comme variables d’environnement dans le terminal du codespace, et vous pouvez utiliser ces variables d’environnement dans les commandes CLI de la section suivante.
En outre, ce codespace crée automatiquement une variable d’environnement
CLUSTER_NAME
définie avec le nom du codespace.Sélectionnez Créer un nouvel espace de code.
Une fois l’espace de code prêt, sélectionnez le bouton de menu en haut à gauche, puis sélectionnez Ouvrir dans VS Code Desktop.
Si vous y êtes invité, installez l’extension GitHub Codespaces pour Visual Studio Code et connectez-vous à GitHub.
Dans Visual Studio Code, sélectionnez Afficher>Terminal.
Utilisez ce terminal pour exécuter toutes les commandes CLI pour gérer votre cluster.
Connecter un cluster à Azure Arc
Pour connecter votre cluster à Azure Arc :
Dans votre terminal codespace, connectez-vous à Azure CLI :
az login
Conseil
Si vous utilisez l’environnement codespace GitHub dans un navigateur plutôt que sur le bureau VS Code, l’exécution de
az login
retourne une erreur localhost. Pour corriger l’erreur, effectuez les opérations suivantes :- Ouvrez le codespace dans le bureau VS Code, puis revenez au terminal du navigateur et réexécutez
az login
. - Ou bien, après avoir obtenu l’erreur localhost sur le navigateur, copiez l’URL à partir du navigateur et exécutez
curl "<URL>"
dans un nouvel onglet de terminal. Vous devez voir une réponse JSON avec le message « Vous êtes connecté à Microsoft Azure ! »
- Ouvrez le codespace dans le bureau VS Code, puis revenez au terminal du navigateur et réexécutez
Une fois que vous êtes connecté, 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électionnezEnter
. Sinon, tapez le numéro de l’abonnement Azure que vous voulez utiliser.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
Utilisez la commande az connectedk8s connect pour activer Arc sur votre cluster Kubernetes et le gérer comme partie de votre ressource Azure :
az connectedk8s connect --name $CLUSTER_NAME --location $LOCATION --resource-group $RESOURCE_GROUP
Conseil
La valeur de
$CLUSTER_NAME
est automatiquement définie sur le nom de votre codespace. Remplacez la variable d’environnement si vous souhaitez utiliser un autre nom.Récupérez l’élément
objectId
de l’application Microsoft Entra ID utilisée par le service Azure Arc dans votre tenant et enregistrez-le en tant que variable d’environnement. Exécutez la commande suivante exactement comme elle est écrite, sans changer la valeur GUID.export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
Utilisez la commande az connectedk8s enable-features pour activer la prise en charge personnalisée de l’emplacement sur votre cluster. Cette commande utilise l’élément
objectId
de l’application Microsoft Entra ID utilisée par le service Azure Arc. 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
Créer un compte de stockage et un registre de schémas
Un registre de schémas est un référentiel synchronisé qui stocke les définitions des messages dans le cloud et en périphérie. Opérations Azure IoT nécessite un registre de schémas sur votre cluster. Le registre de schémas nécessite un compte de stockage Azure pour les informations de schémas stockées dans le cloud.
La commande pour créer un registre de schémas dans cette section nécessite l’autorisation Microsoft.Authorization/roleAssignments/write au niveau du groupe de ressources. Cette autorisation est utilisée pour donner au registre de schémas un rôle de contributeur afin qu’il puisse écrire sur le compte de stockage.
Exécutez les commandes CLI suivantes dans votre terminal Codespaces.
Définissez des variables d’environnement pour les ressources que vous créez dans cette section.
Paramètre substituable Valeur <STORAGE_ACCOUNT_NAME> Nom de votre compte de stockage. Les noms des comptes de stockage doivent comporter entre 3 et 24 caractères, et contenir seulement des chiffres et des lettres minuscules. <SCHEMA_REGISTRY_NAME> Un nom pour votre registre de schémas. <SCHEMA_REGISTRY_NAMESPACE> Un nom pour l’espace de noms de votre registre de schémas. L’espace de noms identifie de façon univoque un registre de schémas au sein d’un locataire. STORAGE_ACCOUNT=<STORAGE_ACCOUNT_NAME> SCHEMA_REGISTRY=<SCHEMA_REGISTRY_NAME> SCHEMA_REGISTRY_NAMESPACE=<SCHEMA_REGISTRY_NAMESPACE>
Créez un compte de stockage avec un espace de noms hiérarchique activé.
az storage account create --name $STORAGE_ACCOUNT --location $LOCATION --resource-group $RESOURCE_GROUP --enable-hierarchical-namespace
Créez un registre de schémas qui se connecte à votre compte de stockage. Cette commande crée également un conteneur blob appelé schémas dans le compte de stockage.
az iot ops schema registry create --name $SCHEMA_REGISTRY --resource-group $RESOURCE_GROUP --registry-namespace $SCHEMA_REGISTRY_NAMESPACE --sa-resource-id $(az storage account show --name $STORAGE_ACCOUNT -o tsv --query id)
Déployer Opérations Azure IoT
Dans cette section, vous configurez votre cluster avec les dépendances de vos composants Opérations Azure IoT, puis vous déployez Opérations Azure IoT.
Exécutez les commandes CLI suivantes dans votre terminal Codespaces.
Initialisez votre cluster pour Opérations Azure IoT.
Conseil
La commande
init
ne doit être exécutée qu’une seule fois par cluster. Si vous réutilisez un cluster où la dernière version d’Opérations Azure IoT était déjà déployée, vous pouvez ignorer cette étape.az iot ops init --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP
L’exécution de cette commande peut prendre plusieurs minutes. Vous pouvez observer la progression grâce à l’affichage de la progression du déploiement dans le terminal.
Déployer Opérations Azure IoT.
az iot ops create --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP --name ${CLUSTER_NAME}-instance --sr-resource-id $(az iot ops schema registry show --name $SCHEMA_REGISTRY --resource-group $RESOURCE_GROUP -o tsv --query id) --broker-frontend-replicas 1 --broker-frontend-workers 1 --broker-backend-part 1 --broker-backend-workers 1 --broker-backend-rf 2 --broker-mem-profile Low
L’exécution de cette commande peut prendre plusieurs minutes. Vous pouvez observer la progression grâce à l’affichage de la progression du déploiement dans le terminal.
Si vous obtenez une erreur indiquant que Votre appareil doit être géré pour accéder à votre ressource, exécutez de nouveau
az login
et assurez-vous que vous vous êtes connecté de manière interactive dans un navigateur.
Afficher des ressources dans un cluster
Une fois le déploiement terminé, vous pouvez utiliser des commandes kubectl pour observer les modifications sur le cluster ou, comme le cluster est activé par Arc, vous pouvez utiliser le portail Azure.
Pour afficher les pods sur votre cluster, exécutez la commande suivante :
kubectl get pods -n azure-iot-operations
Pour voir vos ressources dans le portail Azure, effectuez les étapes suivantes :
Dans le Portail Azure, accédez au groupe de ressources qui contient votre instance d’Opérations Azure IoT, ou recherchez et sélectionnez Opérations Azure IoT.
Sélectionnez le nom de votre instance d’Opérations Azure IoT.
Dans la page Vue d’ensemble de votre instance, sélectionnez l’onglet Résumé de ressource pour voir l’état d’approvisionnement des ressources déployées sur votre cluster.
Comment avons-nous résolu le problème ?
Dans ce guide de démarrage rapide, vous avez configuré votre cluster Kubernetes avec Arc afin qu’il puisse communiquer en toute sécurité avec vos composants Opérations Azure IoT. Ensuite, vous avez déployé ces composants sur votre cluster. Pour ce scénario de test, vous disposez d’un seul cluster Kubernetes qui s’exécute dans Codespaces. Dans un scénario de production, toutefois, vous pouvez utiliser les mêmes étapes pour déployer des charges de travail sur de nombreux clusters sur de nombreux sites.
Nettoyer les ressources
Si vous passez au guide de démarrage rapide suivant, conservez toutes vos ressources.
Si vous voulez supprimer le déploiement d’Opérations Azure IoT mais conserver votre cluster, utilisez la commande az iot ops delete :
az iot ops delete --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP
Si vous voulez supprimer toutes les ressources que vous avez créées pour ce démarrage rapide, supprimez le cluster Kubernetes où vous avez déployé Opérations Azure IoT, puis supprimez le groupe de ressources Azure qui contenait le cluster.
Si vous avez utilisé Codespaces pour ces démarrages rapides, supprimez votre codespace de GitHub.