Configuration d’un processus de Continuous Delivery sur Docker en 1 clic avec VSTS
Dans le précédent article 5 minutes pour démarrer sur Docker, nous avons vu à quel point le démarrage sur Docker est devenu simple grâce à l'intégration proposée dans Visual Studio 2017.
Dans cet article, il est maintenant temps de s'intéresser à la mise en place d'un processus professionnel, basé sur du Continuous Delivery (déploiement continu) sur une infrastructure de production dans Azure.
Cerise sur le gâteau, l'extension Continuous Delivery Tools for Visual Studio permet de mettre en place ce processus dans son intégralité, et tout cela en 1 seul clic.
Prérequis 1 – Création et configuration d'un Azure Container Service orchestré par DC/OS
Mettre en place une infrastructure pour héberger du Docker, digne d'être qualifiée d'environnement de "Production" n'est pas exactement ce qu'il y a de plus simple. De nombreuses solutions existent, principalement pour des environnements Unix, ce qui ne simplifie pas la tâche des nombreuses personnes plutôt habituées aux environnements Windows.
Heureusement, via Azure, il est possible de monter une infrastructure hébergée dans le cloud, basée sur les solutions les plus éprouvées à l'heure actuelle en matière de clustering pouvant héberger des conteneurs. Ces solutions sont communément appelées "Orchestrateurs" sur le portail Azure. Parmi les solutions disponibles à l'heure actuelle, on en retrouve trois :
- Docker Swarm : L'une des plus simples à prendre en main, notamment pour ceux qui ont commencé à appréhender les conteneurs grâce à Docker. En effet, Docker Swarm se présente comme étant une extension aux classiques lignes de commande "docker", et permettant d'abstraire et piloter simplement des clusters de conteneurs. Bien qu'étant encore assez récente par rapport à ses concurrents, son côté "intégré en standard" en fait une solution de choix pour gérer des conteneurs en production.
- Kubernetes (prononciation anglaise 'koo-ber-nay'-tace', abrégé K8s) : L'une des solutions les plus en vogues du moment. Le système est en open source, et est réputé pour être orienté "conteneur", et surtout pour être basé sur le système interne de gestion de clusters de Google appelé "Borg". C'est indubitablement une solution à surveiller de très près, notamment suite à l’acquisition récente de l'entreprise "Deis" par Microsoft, qui vise à outiller et rendre plus simple l'utilisation de Kubernetes.
- DC/OS (abréviation pour Datacenter Operation System) : Basée sur Apache Mesos, la solution de clustering open source éprouvée depuis des années en production par de nombreuses entreprises très connues telles que Twitter, Airbnb, eBay, Apple Siri, etc. Ce système, comme ses concurrents, simplifie la gestion de clusters en abstrayant les multiples machines et en proposant une gestion similaire à la gestion d'une unique machine (agrégation de la mémoire vive, des processeurs, etc.). Il permet de faire tourner des applications hébergées dans des conteneurs, comme des applications qui ne le seraient pas.
Dans la suite de cet article, c'est la solution DC/OS exécuté sur Azure Container Services qui sera choisie.
La première étape consiste à se rendre sur le portail Azure https://portal.azure.com puis de se laisser guider par le classique assistant de création de ressource Azure : Dans notre cas, un nouvel Azure Container Service (abrégé ACS dans la suite de cet article). Il est ensuite nécessaire de sélectionner l'orchestrateur à utiliser, parmi les 3 orchestrateurs décrits précédemment (Docker Swarm, Kubernetes ou DC/OS)
L'étape suivante permet de choisir un préfixe pour les DNS des éléments qui seront créés (Notamment les machines virtuelles master et machines virtuelles agents), ainsi qu'un login administrateur pour les machines virtuelles master. La clé publique SSH vous permettra de vous connecter via tunnel SSH sur l'infrastructure une fois déployée. (Pour créer une clé publique SSH, suivez la documentation très claire de Microsoft sur le sujet : https://docs.microsoft.com/fr-fr/azure/virtual-machines/linux/ssh-from-windows)
Attention : Le nombre de machines master (1, 3 ou 5) ne peut pas être modifié après création.
La troisième étape vous permet de choisir le nombre d'agent à créer (limité actuellement à 100 agents maximum), ainsi que de choisir leur taille suivant les mêmes critères que les machines virtuelles sous Azure (Nombre de cœurs, nombre de mémoire vive, disques durs, etc.)
La quatrième et dernière étape récapitule l'ensemble des éléments qui vont être créés, puis il faut attendre une dizaine de minute avant que l'ensemble de notre ACS ne soit complètement disponible.
Prérequis 2 – Un projet d'équipe dans VSTS
Si vous êtes déjà familier avec VSTS (Visual Studio Team Services), la version Cloud de TFS (Team Foundation Server), un simple projet d'équipe sous Git suffira pour mettre en place le Continuous Delivery de notre projet Docker.
Si vous ne possédez pas de compte VSTS, n'hésitez pas à en créer un gratuitement sur https://www.visualstudio.com/ (La plupart de l'ensemble des fonctionnalités allant de la gestion Agile, du Bug Tracking, du Code Source, de la Build & de la Release, etc. sont gratuites jusqu'à 5 utilisateurs)
Ajoutez votre application sous Docker dans un Repository Git du projet d'équipe, et le tour est joué !
Prérequis 3 – Un Azure Container Registry
Si vous avez déjà suivi le précédent article de blog, notamment la section concernant la publication de l'application sous Docker sur Azure, vous possédez déjà un Azure Container Registry dans votre compte Azure, réutilisable sans aucun soucis.
Si ce n'est pas le cas, la création d'un Azure Container Registry est très simple et prend quelques minutes à peine
Prérequis 4 – Extension Continuous Delivery Tools for Visual Studio
Dernier prérequis, mais pas le plus complexe fort heureusement : Il ne reste plus qu'à installer l'extension Visual Studio Continuous Delivery Tools for Visual Studio disponible depuis Visual Studio ou le Marketplace : https://marketplace.visualstudio.com/items?itemName=VSIDEDevOpsMSFT.ContinuousDeliveryToolsforVisualStudio
Création automatique d'un pipeline automatisé de Continuous Delivery en 1 clic
Le moment est venu d'effectuer le clic tant attendu. Rendez-vous sur votre application web sous Docker, puis effectuez un clic-droit et sélectionnez Configure Continuous Delivery…
Une page récapitule les différents entrants qui vont être utilisés. Vérifiez qu'il s'agit bien des différents prérequis précédemment créés puis validez le formulaire
Attendez quelques minutes… C'est fait !
Rendez-vous ensuite dans le projet d'équipe pour constater l'apparition d'une nouvelle Build d'intégration continue (déclenchée à chaque Push), ainsi que d'une nouvelle Release configurée pour déployer automatiquement dans l'environnement de Dev, dans notre ACS précédemment créé !
Pour aller plus loin
Cet article fait partie d'une série d'article sur Visual Studio 2017 et Docker
- 5 minutes pour démarrer sur Docker
- Configuration d’un processus de Continuous Delivery sur Docker en 1 clic avec VSTS
- Behind the scene: Configuration d’un environnement ACS orchestré par DC/OS (Postponed)
- Tour d’horizon des conteneurs Windows (En cours)
Commentaires