Conteneurs dans l'écosystème Microsoft - Partie 3 : Microsoft Azure

Conteneurs dans l'écosystème Microsoft - Partie 3 : Microsoft Azure

Ce billet est le troisième de la série consacrée aux conteneurs dans l'écosystème des technologies Microsoft. Après nous être intéressés à la technologie Docker en tant que telle dans la seconde partie, je vous propose aujourd'hui de vous présenter comment les conteneurs s'intègrent dans les différents services de la plateforme Microsoft Azure.

Et vous allez le voir : les options sont nombreuses !

En effet, les conteneurs - comme unité de packaging, de déploiement et de passage à l'échelle - sont supportés par de plus en plus de services qui composent la plateforme Microsoft Azure.

Plus concrètement, et comme vous le savez certainement déjà, la plateforme Microsoft Azure supporte un certain nombre de distributions Linux : on citera par exemple Ubuntu, CoreOS, RedHat Enterprise Linux et bien d'autres. Par extension, il est tout à fait possible de le faire sur notre plateforme de cloud, sur n’importe quelle machine virtuelle Linux (dont la distribution est supportée par Docker, bien sûr) ou n’importe quelle machine virtuelle Windows Server 2016.

Seulement, la simple machine virtuelle à ses limitations. Si l’on s’accorde à dire que les conteneurs permettent de multiplier le nombre d’instances d’une même application sur une même machine afin d’optimiser l’usage des ressources et d'avoir le même comportement sur une machine de développement comme partout ailleurs, il est clair qu’il n’est pas envisageable de faire tourner une application - souvent composée de plusieurs images de conteneurs et plusieurs instances de conteneurs - sur une et une seule machine en production.

C’est là que rentrent en jeux les orchestrateurs comme Docker Swarm, Kubernetes, Mesosphere DC/OS

Ces noms-là vous sont familiers ?

S’il est communément admis que Docker s’est imposé comme un standard en ce qui concerne le format d’images, de conteneurs mais aussi d’outillage (tout le monde démarre aujourd’hui par un docker build et un docker run !) aucun n’orchestrateur ne s’est aujourd’hui imposé comme étant LE standard absolu.

Tous ont leurs avantages et leurs inconvénients, certains sont plus simples que d’autres, certains sont plus récents que d’autres, certains sont utilisés depuis plusieurs années en production, d’autres depuis quelques mois, ce qui ne signifie pas qu’ils sont mieux ou moins bien, mais tout simplement que l’on a moins de recul sur leur utilisation.

Le seul dénominateur commun que l’on peut leur trouver aujourd’hui est qu’ils sont tous compatibles avec le format d’image Docker (pour ceux cités ci-dessus) et qu’ils sont tous disponibles sur la plateforme Microsoft Azure – avec certains niveaux d’intégration.

En effet, bien qu’il soit théoriquement possible de faire tourner n’importe quelle solution grâce aux services d’infrastructure de la plateforme Microsoft Azure, nous attachons une importance toute particulière à simplifier la vie de nos clients en proposant des solutions pré-packagées, voir totalement managées pour certaines. Et l’écosystème des conteneurs ne fait pas exception à cette règle !

Dans la suite, nous allons donc parler :

  • Azure Container Service
  • Azure App Service : Web Apps on Linux
  • Azure Service Fabric
  • Azure Marketplace
  • Azure Container Registry

Azure Container Service

Azure Container Service est un service d’infrastructure qui permet de simplifier, d'unifier et de standardiser le déploiement d’orchestrateurs de conteneurs Docker dans Azure. Il supporte aujourd’hui Mesosphere DC/OS, Docker Swarm et Kubernetes :

Concrètement Azure Container Service permet de déployer en quelques clics depuis le portail Azure ou en quelques lignes de commandes avec Azure CLI 2.0 les versions open sources des trois orchestrateurs cités précédemment.

Azure Container Service repose sur Azure Resource Manager : il se charge de déployer l’infrastructure (machines virtuelles, stockage, réseaux…) et de configurer l’orchestrateur qui tourne par-dessus à l’aide de scripts de déploiement.

Une fois déployé, vous utilisez ces orchestrateurs comme avec n’importe quel autre déploiement à demeure, par exemple, à savoir au travers du portail d’administration ou de kubectl pour Kubernetes, du client Docker pour Swarm et du portail ou des APIs REST pour DC/OS.

Azure Container Service permet aussi de passer à l’échelle facilement, puisqu’il est possible d’ajouter ou supprimer des nœuds du cluster à l’aide du portail Microsoft Azure ou de la ligne de commande Azure CLI 2.0.

Contrairement à nos concurrents, nous vous proposons de choisir l'orchestrateur que vous souhaitez utiliser, et nous vous proposons d'en automatiser le déploiement. Nous attachons un point d'honneur à ne pas modifier les orchestrateurs mais à utiliser les versions open sources de ceux-ci. Ainsi, lorsque certaines fonctionnalités ne sont pas présentes, nos équipes d'ingénieries contribuent directement aux projets open sources, en collaboration avec la communautés Kubernetes, Mesosphere ou Docker, Inc.

Pour appuyer l’engagement de Microsoft dans cet écosystème open source, on pourra évoquer la présence dans les équipes Azure Container Service de Ross Gardler (Principal Program Manager), ancien président de la fondation Apache ou encore celle de Brendan Burns, co-fondateur de Kubernetes qui dirige aujourd’hui l’équipe d’ingénierie.

Plus récemment, Microsoft a également annoncé le rachat de Deis, une startup cent-pour-cent dédiée à l’écosystème Kubernetes et qui propose des outils, en open source, pour simplifier le déploiement d’application sur cet orchestrateur.

Azure App Service : les Web Apps sous Linux

Azure App Service est une offre de Platform-as-a-Service disponible sur Microsoft Azure, et dont la promesse est de vous permettre de vous concentrer sur votre code applicatif et de laisser la plateforme gérer l’infrastructure pour vous : auto-scaling, slots de déploiement, déploiements automatisés depuis votre contrôle de code source GitHub, Visual Studio Team Services etc… sont autant de fonctionnalités qui sont totalement managées par Azure App Service, qui s’articule autour de 5 piliers :

  • Web Apps qui permet d’héberger des applications web en .NET, PHP, Node.js, Java, Python, HTML/JavaScript
  • Mobile Apps qui repose sur Web Apps et qui permet de gérer vos backend d’applications mobiles iOS, Android, Windows etc…
  • Api Apps qui permet de déployer et gérer simplement vos APIs web
  • Logic Apps qui permet de déployer des solutions d’intégration / de workflow pour gérer vos processus métiers dans vos applications
  • Azure Functions, une brique « serverless » qui vous permet d’exécuter du code en réaction à certains événements (triggers, webhooks, messages, dépôt de fichiers…)

Historiquement, cette offre tourne sous Windows. Mais depuis peu, une version préliminaire des Web Apps d’App Service fonctionne sous Linux. Et cette nouvelle offre se base sur le format d’image et de conteneur Docker pour ce qui est du déploiement.

Vous avez le choix d’utiliser une des stacks applicatives proposées et supportées par Microsoft, de proposer votre propre stack (une image de conteneur dans le Docker Hub ou une registry privée comme l'Azure Container Registry) ou encore de proposer une image complète de votre application.

Azure App Service sous Linux se charge ensuite d’assurer l’exécution de votre application !

Pour en découvrir plus sur les Web Apps sous Linux, je vous invite à consulter cette étude de cas qui décrit comment nous les avons utilisées avec la startup Content Avenue.

Azure Service Fabric

Azure Service Fabric est l’orchestrateur maison développé par Microsoft et sur lequel repose d’ailleurs certains services qui s’exécutent dans la plateforme Microsoft Azure.

Cet orchestrateur est capable d’orchestrer le déploiement et l’exécution de micro services, développés à l’aide d’un SDK spécifique, sous la forme de « guest executable » et supporte depuis peu en version préliminaire les conteneur Docker. L’un des gros avantages de cette plateforme est qu’il est possible de l’utiliser aussi bien au travers de la plateforme Microsoft Azure que dans un Cloud privés ou public, grâce à son mode standalone. Service Fabric est également capable d’orchestrer des nœuds Windows et Linux.

Concrètement, le support des conteneurs (Linux et Windows) dans Service Fabric signifie qu’il est possible de créer un micro service en indiquant le nom d’une image dans laquelle il a été packagé. Service Fabric se charge ensuite de rapatrier l’image Docker depuis la registry et d’instancier un conteneur Docker, et de gérer son cycle de vie.

Edit: Nous avons d'ailleurs annoncé la disponibilité générale des conteneurs Windows dans Service Fabric lors de la Microsoft Build 2017 !

Pour aller plus loin sur l'orchestration de micro-services conteneurisés avec Service Fabric vous pouvez consulter cette page de la documentation.

Azure Container Registry

Comme évoqué précédemment dans cette série d'articles, la registry Docker est le centre névralgique du pipeline de déploiement en continue d'une application conteneurisées puisque c'est vers et depuis celle-ci que seront envoyées et récupérées les images de conteneurs.

Il est donc extrêment important que celle-ci soit toujours disponible et offre des performances optimales.

Azure Container Registry est une implémentation « as-a-Service » de la registry Docker open source. Cela vous permet d’avoir à votre disposition dans Azure, une registry Docker privée, dans laquelle vous pouvez pousser toutes vos images Docker, aussi bien pour Linux que pour Windows.

Au passage, ce service est gratuit, seuls le stockage des images (dans un compte de stockage Azure Storage) et la bande passante sont facturés.

Comme il s’agit de la registry Docker open source, celle-ci est totalement compatible avec les opérations classiques de LOGIN, PUSH et PULL.

Il est également possible de sécuriser l’accès à cette registry à l’aide de services principaux Azure Active Directory.

Enfin, et cela tombe sous le sens, cette registry est utilisable avec les différents services proposant l’exécution d’applications conteneurisées dans Azure cités précédemment.

Marketplace Azure

La Marketplace Azure permet à nos partenaires éditeurs de logiciels (ISV) de proposer leurs offres à n’importe quel client de la plateforme cloud Microsoft Azure. Soit en mode BYOL (Bring Your On License) soit refacturé directement au travers de l’abonnement Microsoft Azure.

De nombreuses solutions permettant l’exécution de workloads conteneurisées y sont disponibles.

En voici quelques unes.

Docker EE for Azure

Il s’agit de l’Enterprise Edition de Docker. Concrètement, en plus d’avoir un cluster Docker Swarm comme le propose la version CE (Community Edition), Docker vous propose en plus Universal Control Plane (un portail d’administration de vos applications) et Docker Trusted Registry, une registry Docker privée avec possibilité de scanner les images pour détecter d’éventuelles vulnérabilités, mais aussi de les signer.

Il est possible de déployer Docker EE directement depuis la Marketplace Microsoft Azure.

RedHat OpenShift

OpenShift est une offre PaaS de RedHat, basée sur Docker et Kubernetes.

C’est une solution bout en bout qui permet de simplifier la gestion du cycle de vie des applications conteneurisées : build automatisée, déploiement automatisé, monitoring…

Il est possible de déployer OpenShift directement depuis la Marketplace Microsoft Azure.

Mesosphere DC/OS

Il s’agit de la version entreprise de DC/OS proposé par Mesosphere directement dans la Marketplace Azure.

Pivotal Cloud Foundry

Cloud Foundry est une offre PaaS éditée par Pivotal et qui permet elle aussi de simplifier le cycle de vie et la gestion d’application déployée à l’aide de conteneurs Docker (entre autres).

Il est possible de déployer Cloud Foundry directement depuis la Marketplace Microsoft Azure.

Comme vous avez pu le constater à la lecture de ce billet, les conteneurs Docker sont bien présents sur la plateforme Microsoft Azure, que ce soit au travers de nos services d'infrastructures comme les machines virtuelles Linux ou Windows, d'Azure Container Service, de notre offre de plateforme Web Apps sous Linux, de notre orchestrateur maison Service Fabric ou encore de au travers des multiples offres de nos partenaires dans la Marketeplace Azure.

Pour supporter vos déploiements en production, nous vous proposons l'Azure Container Registry, une registry Docker as a service, dont vous n'avez rien à gérer et qui est bien évidemment compatible avec tous les services détaillés dans cet article.

Nous avons également toute une suite d'outils de développement et d'industrialisation logiciel qui sont compatibles avec les technologies Docker, nous aurons l'occasion d'y revenir dans un prochain billet.


Identifiez-vous pour afficher ou ajouter un commentaire

Plus d’articles de Julien Corioland☁️

Autres pages consultées

Explorer les sujets