Utilisez Bridge to Kubernetes avec un exemple

Remarque

Microsoft prévoit de ne plus maintenir activement le projet Bridge to Kubernetes. Au cours des prochains mois, nous allons faire passer le projet à un état d’archivage. Entre-temps, le projet reste disponible à l’utilisation et au téléchargement. Pendant cette période, nous espérons explorer et recommander des projets communautaires qui offrent des avantages similaires à Bridge to Kubernetes pour votre usage futur. Si vous avez des questions, veuillez nous contacter sur notre tableau des problèmes sur GitHub.

Cet exemple montre comment Bridge to Kubernetes peut être utilisé pour développer une version de micro-service d’une application TODO simple sur n’importe quel cluster Kubernetes. Cet exemple, à l’aide de Visual Studio Code, a été adapté à partir du code fourni par TodoMVC. Dans cet exemple, nous utilisons MiniKube pour héberger l’application, mais ces étapes devraient fonctionner avec n’importe quel cluster Kubernetes.

L’exemple d’application TODO est composé d’un front-end et d’un back-end qui fournit un stockage persistant. Cet exemple étendu ajoute un composant de statistiques et décompose l’application en un certain nombre de micro-services, en particulier :

  • Le serveur front-end appelle l’API de base de données pour conserver et mettre à jour les éléments TODO ;
  • Le service de l’API de base de données s’appuie sur une base de données Mongo pour conserver les éléments TODO ;
  • Le serveur front-end écrit des événements d’ajout, de fin et de suppression dans une file d’attente RabbitMQ ;
  • Un worker de statistiques reçoit des événements de la file d’attente RabbitMQ et met à jour un cache Redis ;
  • Une API de statistiques expose les statistiques mises en cache que le serveur front-end doit afficher.

En tout, cette application TODO étendue est composée de six composants liés entre eux.

Prérequis

  • Tout cluster Kubernetes ou gestionnaire de package Chocolatey pour installer MiniKube
  • Sur Windows 10, Hyper-V
  • Kubectl installé et sur le chemin dans un environnement de ligne de commande de votre choix
  • Extension Visual Studio Code de Bridge to Kubernetes

Installez Minikube

Vous pouvez utiliser n’importe quel fournisseur Kubernetes avec Bridge to Kubernetes. Dans cet article, nous utilisons MiniKube. MiniKube est un fournisseur Kubernetes léger qui vous permet d’héberger Kubernetes sur votre ordinateur local. Suivez les instructions d’installation pour installer MiniKube sur Windows 10, Linux ou macOS.

Pour obtenir de meilleurs résultats sur Windows 10, vous devez utiliser le gestionnaire de machines virtuelles Hyper-V et créer un commutateur virtuel.

Une fois installé, démarrez MiniKube, spécifiez l’utilisation d’Hyper-V et indiquez le nom du commutateur virtuel principal. Cette commande doit être exécutée à partir d’une invite de commandes avec des privilèges d’administrateur.

minikube start --vm-driver hyperv --hyperv-virtual-switch "Primary Virtual Switch"

Déployer l’application

Clonez le référentiel Bridge to Kubernetes et ouvrez une fenêtre de commande avec le dossier de travail actuel pour todo-app.

Créez un espace de noms pour l’exemple.

kubectl create namespace todo-app

Ensuite, appliquez le manifeste de déploiement :

kubectl apply -n todo-app -f deployment.yaml

Il s’agit d’un déploiement simple qui expose le front-end à l’aide d’un service de type LoadBalancer. Attendez que tous les pods soient en cours d’exécution et que l’IP externe du service frontend devienne disponible.

Si vous testez avec MiniKube, vous devez utiliser minikube tunnel pour résoudre une IP externe.

kubectl get services -n todo-app

NAME          TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)        AGE
frontend      LoadBalancer   10.0.49.177    127.0.0.1   80:30145/TCP   18h

Accédez à l’application à l’aide de l’adresse IP externe et du port local (le premier numéro de la colonne PORT[S]).

http://{external-ip}:{local-port}

Testez l’application en cours d’exécution dans le navigateur. Lorsque vous ajoutez, complétez et supprimez des éléments todo, notez que la page statistiques est mise à jour avec les métriques attendues.

Déboguez le service stats-api

Vous pouvez maintenant utiliser l’extension Bridge to Kubernetes pour montrer comment le trafic du cluster Kubernetes peut être redirigé vers une version en cours d’exécution locale de stats-api.

cd stats-api/

Ouvrez le code source de l’API stats-api dans VS Code.

code .

Une fois VS Code lancé, ouvrez le volet Kubernetes dans la barre latérale gauche de VS Code, puis sélectionnez l’espace de noms todo-app dans votre cluster MiniKube. Faites un clic droit sur le nœud todo-app, puis choisissez Utiliser l’espace de noms.

Sélectionnez l'espace de noms

Installez les dépendances en exécutant npm install dans une fenêtre de terminal (CTRL + ~).

npm install

Ensuite, placez un point d’arrêt sur la ligne 17 de server.js.

Ouvrez la palette de commandes (CTRL+MAJ+P ou Cmd+Maj+P sur un Mac) et tapez Bridge to Kubernetes. Sélectionnez l’option Bridge to Kubernetes : Configurer.

Bridge to Kubernetes : Configurer la commande

Vous êtes invité à configurer le service que vous souhaitez remplacer, le port à transférer à partir de votre ordinateur de développement et la tâche de lancement à utiliser.

Choisissez le service stats-api.

Sélectionnez le service auquel vous souhaitez vous connecter

Une fois que vous avez sélectionné votre service, vous êtes invité à entrer le port TCP de votre application locale. Pour cet exemple, entrez 3001.

Entrez le numéro de port

Choisissez Exécuter le script  dev comme tâche de lancement.

Choisir la tâche de lancement du débogueur

Vous avez la possibilité d’exécuter isolément ou non. Si vous exécutez isolément, seules vos demandes sont routées vers votre processus local ; d’autres développeurs peuvent utiliser le cluster sans être affectés. Si vous n’exécutez pas isolément, tout le trafic est redirigé vers votre processus local. Pour plus d’informations sur cette option, consultez Utilisation des fonctionnalités de routage pour le développement en isolation. Pour cet exemple, utilisons l’option non isolée.

Choisir l’isolation

Remarque

VS Code vous demande d’autoriser EndpointManager à exécuter des tâches élevées et à modifier votre fichier d’hôtes.

Le profil de débogage Bridge to Kubernetes a été correctement configuré.

Sélectionnez l’icône Déboguer à gauche, puis sélectionnez Exécuter le script : dev avec Kubernetes. Cliquez sur le bouton Démarrer en regard de Exécuter le script : dev avec Kubernetes.

Choisir le profil de lancement de débogage

Votre ordinateur de développement est connecté lorsque la barre d’état de VS Code devient orange et que l’extension Kubernetes indique que vous êtes connecté. Une fois que votre ordinateur de développement est connecté, le trafic commence à être redirigé vers votre ordinateur de développement pour le stats-api que vous remplacez.

Débogage avec Bridge to Kubernetes

Accédez au point d’entrée front-end de votre todo-app. Pour minikube, nous allons utiliser 127.0.0.1. Pour accéder à l’URL du point de terminaison local de votre application, ouvrez le menu Kubernetes dans la barre d’état et choisissez l’entrée de point de terminaison.

Effectuez une demande à l’api stats en choisissant le lien stats.

Site web en cours d’exécution : choisissez le lien d’état

Notez que le trafic qui a démarré initialement dans votre cluster a été redirigé vers votre version en cours d’exécution locale (en dehors du cluster) où le point d’arrêt a été déclenché.

Appuyez sur lecture et laissez la requête continuer de façon transparente.

Ce n’est qu’un exemple d’utilisation de Bridge to Kubernetes sur des clusters non AKS. Essayez-le sur votre propre projet ensuite !

Nettoyage

Pour nettoyer les ressources produites par cet exemple, exécutez :

kubectl delete namespace todo-app

Étapes suivantes

Vous pouvez également déployer votre application sur Azure Kubernetes Service (AKS) avec Bridge to Kubernetes. Consultez Utiliser Bridge to Kubernetes avec AKS