Rappelons que Kubernetes est un système open source qui s'impose rapidement comme le système d'orchestration de conteneur préféré pour les applications de toutes formes et tailles, en simplifiant le déploiement, la mise à l'échelle et les opérations des conteneurs d'applications. Il s'exécute dans divers environnements, y compris sur site, ainsi qu'au sein de solutions de cloud, telles qu’Azure Container Service de Microsoft.
Microsoft s’est avéré un grand contributeur au projet Kubernetes et a développé également des logiciels pour faciliter l'utilisation de la technologie d'orchestration de conteneurs par les développeurs. Outre le fait que Microsoft a rejoint la Cloud Native Computing Foundation l'année dernière pour accélérer le déploiement et l'adoption de Kubernetes, notons que c'est Brendan Burns, co-créateur de Kubernetes, qui dirige maintenant les projets de conteneur d'Azure. Microsoft a également fait l'acquisition de Deis, une entreprise à la base de plusieurs outils Kubernetes open source. Tout cela témoigne de l'importance qu'accorde Microsoft à la technologie qui est devenue rapidement le standard de facto pour l'orchestration de conteneurs. L'une des dernières initiatives pro-Kubernetes de Microsoft a été le lancement en octobre dernier d'un nouvel Azure Container Service (ACS) qui se concentre désormais sur Kubernetes. Il a été d'ailleurs lancé sous l’acronyme AKS au lieu d’ACS. Le « K » ici a été mis pour Kubernetes, en vue d'indiquer la nouvelle orientation de la firme de Redmond.
Cette fois-ci, durant la conférence Build dédiée aux développeurs qui s’est tenue la semaine dernière, l’éditeur a annoncé la disponibilité générale d’Azure Dev Spaces. Cet add-on pour Azure Kubernetes Service (AKS) permet à votre équipe de développer des applications avec la vélocité du cloud. Grâce à Azure Dev Spaces, vous pouvez entre autres :
- exécuter votre service dans un cluster AKS en direct et le testez de bout en bout, sans affecter vos coéquipiers ;
- économiser du temps et de la maintenance en permettant à toute votre équipe de développement de partager un cluster AKS, au lieu de requérir des environnements distincts pour chaque développeur.
Lisa Guthrie, Senior Program Manager, Azure Developer Experience de Microsoft indique « qu’Azure Dev Spaces est issu des conversations que nous avons eues avec des entreprises dotées d'architectures natives sur le cloud basées sur des microservices. Nous avons appris que nombre d'entre eux construisaient leurs propres services internes, ce qui permettait à leurs développeurs de déployer rapidement un nouveau code dans un environnement isolé et de le tester dans le contexte de l'application entière. Ces entreprises ont consacré beaucoup de temps et d’efforts à la mise en place de ces capacités. Azure Dev Spaces vous permet d’apporter les mêmes fonctionnalités à votre propre équipe en quelques clics ».
Configurer votre cluster AKS
Supposons que vous exécutiez tous les services composant votre application dans un cluster AKS servant d’environnement de test d’intégration de votre équipe.
Vous pouvez activer les Dev Spaces sur le cluster à partir du portail Azure ou de l'interface de ligne de commande Azure. L'écran ci-dessous montre où activer les espaces de développement dans le portail Azure.
Ensuite, vous pouvez configurer l'espace de noms dans lequel les services s'exécutent en tant qu'espace dev, ce qui active la fonctionnalité Dev Spaces.
Maintenant que vous avez correctement configuré le cluster et l’application, voyons comment les développeurs de votre équipe peuvent tester leur code dans le contexte de l’application complète à l’aide de Dev Spaces.
Exécuter un service dans AKS
Supposons qu'un nouveau développeur nommé Jane ait rejoint votre équipe. Vous souhaitez créer une nouvelle fonctionnalité dans un microservice existant appelé Bikes.
Traditionnellement, Jane écrivait le code de la fonctionnalité sur son poste de travail de développement local et en effectuait une validation élémentaire en exécutant le service Bikes localement. Par chance, votre équipe a déjà investi dans des tests d'intégration automatisés qu'elle peut exécuter pour confirmer qu'elle n'a rien cassé. Mais comme elle découvre l’application et sa base de code, elle risque de ne pas pouvoir vérifier son code tant qu’elle ne l’a pas vue fonctionner correctement dans le contexte de l’application complète. Les tests automatisés ne permettent pas de tout comprendre et personne ne veut casser l’environnement de développement de l’équipe, en particulier lors de la première journée dans l’équipe!
C’est là qu'Azure Dev Spaces peut rendre la première expérience de Jane facile et positive.
Jane peut créer un espace de développement enfant appelé newfeature. Le parent de newfeature est l'espace de développement que vous avez configuré lors de la configuration initiale des espaces de développement pour votre équipe, qui exécute l'ensemble de l'application.
La version de l'application qui s'exécute dans l'espace de développement enfant a sa propre URL. Il s’agit simplement de l’URL de la version de l’application de l’équipe, préfixée par newfeature.s. Azure Dev Spaces intercepte les demandes qui entrent avec ce préfixe d'URL et les achemine de manière appropriée. Si une version du service s'exécute dans l'espace de développement de newfeature, Dev Spaces achemine la demande vers cette version. Sinon, Dev Spaces achemine la demande vers la version du service de l'équipe, qui s'exécute dans l'espace de développement racine.
Test de bout en bout
Jane peut exploiter cette fonctionnalité pour tester rapidement ses modifications de bout en bout, avant même de vérifier son code. Tout ce dont elle a besoin, c'est d'exécuter sa version mise à jour du service Bikes dans l'espace de développement de newfeature. Maintenant, elle peut accéder à sa version de l'application en utilisant l'URL newfeature.s. Azure Dev Spaces gérera automatiquement les demandes de routage entre la version mise à jour de Jane de Bikes (exécutée dans l’espace de développement newfeature) et le reste des services constituant l’application (exécutée dans l’espace de développement parent).
Dans l'exemple ci-dessous, le site affiche actuellement une icône de vélo générique pour chaque vélo répertorié. Un des coéquipiers de Jane a mis à jour la base de données pour inclure une photo du vélo réel. Jane doit mettre à jour le service Bikes pour extraire cette image de la base de données et l'envoyer aux services en amont:
Dépannage d'un bogue avec Azure Dev Spaces
Et si Jane découvre que ses modifications ne fonctionnent pas correctement ? Tout d'abord, son code erroné ne fonctionne que dans son nouvel espace de développement de fonctionnalités. Les requêtes de ses coéquipiers utilisent toujours la version originale de Bikes fonctionnant dans l’espace réservé aux parents. Elle peut prendre son temps pour résoudre le problème, sachant qu’elle ne bloque pas ses coéquipiers.
En outre, elle peut utiliser les extensions Azure Dev Spaces pour Visual Studio ou Code Visual Studio pour déboguer son code en direct dans le cloud en un seul clic. Cela lui permet de cerner rapidement le problème, de le résoudre et de valider son correctif. Elle peut même exécuter et déboguer des services supplémentaires dans l'espace de développement de newfeature, si le problème concerne plusieurs services.
Voici le débogage d'un service Node.js via VS Code, mais les mêmes fonctionnalités sont disponibles pour .NET Core et Java, dans Visual Studio ou VS Code:
Une fois que Jane a entièrement testé sa nouvelle fonctionnalité à l'aide d'Azure Dev Spaces, elle peut s'enregistrer en toute confiance, sachant qu'elle a validé son code de bout en bout.
Source : Microsoft