Au programme aujourd’hui, le déploiement sur un cluster Azure Kubernetes Services (AKS) d’une application hébergée sur GitHub grâce à un pipeline Azure DevOps !
Aujourd’hui je vous partage une liste d’outil et de documentation de référence pour votre travail d’architecte sur Azure. Cette liste est forcément incomplète, n’hésitez pas à indiquez ce que vous utilisez dans les commentaires ou sur twitter !
Le line-up de l’événement CloudOuest à été rendu public cette semaine et j’ai la chance d’en faire parti !
Comme présenté ici, cet événement à lieu le 18 juin et rassemblera des conférences sur les principaux cloud providers, Azure, AWS et GCP !
J’aurais le plaisir d’y donner un talk :
DU DEVOPS MULTI CLOUD AVEC KUBERNETES ET TERRAFORM
Avec mes chers collègues, Yves et Sébastien nous présenterons la mise en oeuvre, à partir d’un projet .Net Core et de script Terraform, d’un pipeline d’intégration et déploiement continu avec Azure DevOps pour déployer une application dans un cluster Kubernetes sur Azure, AWS et GCP.
Hi ! “Les idées, en général, cela ne manque pas. Pour ce qui est du temps, c’est déjà plus délicat. Durant cette présentation, nous verrons quels outils et services Azure peuvent nous aider à développer un PoC rapidement”.
Ci-dessous les sujets abordés au Meetup Mug .Net de mars. Meetup organisé par Nicolas Mariot et présenté par Christophe Maneu !
Azure Functions : Offre Serverless : on déploie une méthode et on définit un trigger qui déclenche cette fonction (appel http, enregistrement en base, arrivée d’un message sur un ServiceBus…).
Azure App Service : Offre PAAS : hébergement d’application web . Net ou .Net Core (et même Java, Php, Node) . Dockerisé ou non.
Nous allons maintenant détailler la mise en place de VSTS (Azure DevOps), notre outil ALM, pour notre projet Service Fabric.
Intégrations
Premier besoin, un outil de gestion de version. J’ai utilisé Git et le pattern d’utilisation GitFlow pour la gestion des branches. Ce pattern propose une façon d’utiliser Git. Pour mes besoins je n’ai utilisé que les branche Develop et Master.
J’ai donc créé un projet sur VSTS. il faut ensuite utiliser l’URL du dépôt pour s’y connecter depuis Team Services de Visual Studio et pousser son code. J’ai ensuite configuré mon build à partir du template Azure Service Fabric :
En exécution ça donne ça :
Déploiements
Pour le déploiement vers notre environnement Cloud Service Fabric c’est très simple, une seule étape VSTS suffit :
Bien sur dans un vrai contexte projet le pipeline sera plus fournis, avec de multiples environnement : dev, qualification, intégration, pre-production …
Pour la configuration de ma tache de déploiement, il faudra configurer correctement la section Cluster Connexion qui fera le lien entre VSTS et ma plateforme Azure :
Les informations demandées par cet écran sont expliquées par les infobulle. Si vous n’avez pas associé de mot de passe à votre certificat, laissez le champ vide.
Pendant l’étape de déploiement de notre projet Service Fabric, l’Explorer affichera également des informations sur le déploiement :
La mise à jour se fait sans interruption de service puisque le déploiement se fait par nœud. A un instant T du déploiement il y aura donc deux versions de votre application en exécution simultanée. A chaque mise à jour de nœuds, Azure Service Fabric réalise des tests pour vérifier que votre installation s’est bien passée. Si l’update à échoué, un rollback vers la précédente version est automatiquement réalisé.
Pour une gestion plus poussée des montée de version, on pourra mettre en place le « Blue / Green Deployment » qui nous permettra de valider la version à jour de notre service (par des tests sur l’interface swagger par exemple) sur un nœud précis avant de la déployer sur les autres.
Pour mon test dans le précédent article, j’avais besoin de créer et déployer rapidement dans Azure une WebAPI.
Deux possibilités !
J’ai créé le projet sous Visual Studio, je l’ai publié sur Azure. Si je veux ensuite gérer le projet sous Azure DevOps (VSTS ) je peux utiliser le module Centre de déploiement de la Web Application. J’obtiens alors très simplement une configuration de build et release pour le déploiement vers Azure et je n’ai plus qu’a pousser mon code sur le dépôt créé :
Cette outils permet depuis Azure et sans besoin préalable de :
Créer une Web Application du langage / framework de votre choix.
Créer un projet et un repository git dans VSTS
Configurer CI et CD.
Cet outils est très facile à utiliser, il suffit de quatre étapes pour générer un pipe d’intégration et de déploiement continue vers Azure.
Il ne reste plus qu’a récupérer le code source créée par Azure DevOps en se connectant au repository pour pouvoir commencer à travailler. Notre configuration de builds et de releases est déjà opérationnelle.
A l’heure actuelle, février 2019, Azure DevOps Project s’enrichit :
Pour les projets basés sur le Framework Core nous pouvons générer le code, et le pipeline CI/CD en quelques clics pour les solutions :
WebApplication Windows ou Linux
WebApp conteneurisé avec Docker
Fonction pour faire du serverless
Service Fabric pour du microservices made in Microsoft
Kubernetes Service pour du microservices managé via K8s.
Pour tester un nouveau produit, il n’y a rien de plus facile !
Nous pouvons conclure qu’Azure Service Fabric propose une solution clé en main pour la conception d’une architecture microservices dans Azure car il offre des réponses aux différentes problématiques de mise en œuvre de microservices.
Grâce à cette offre PAAS, les développeurs ont à leur disposition :
Un Framework de développement en .Net et des templates de projet pour VS2017
Une solution CI/CD compatible avec VSTS depuis peu renommé Azure DevOps 🙂
Une offre PAAS pour l’intégration de la solution dans le cloud Azure. Cette offre PAAS garantis :
Scalabilité de nos services.
Découvrabilité via le Reverse Proxy.
Intégration avec API Management pour les appels clients.
Monitoring avec Application Insights.
Communication avec Azure Service Bus pour les appels asynchrone.
De plus, un des avantages majeurs de cette solution à mon sens est que les développeurs retrouveront leur marque assez rapidement par rapport au développement d’API REST en ASP .Net Core.
A contrario une solution comme Azure Container Service implique la montée en compétence sur :
La gestion des conteneurs avec Docker
Un orchestrateur de conteneur Docker tel que Kubernetes
La plateforme AKS en elle-même.
Maintenant que nous en avons terminé avec l’analyse de cette solution nous allons passer à la mise en oeuvre 🙂