Aller au contenu

Préférences et cookies

Afin d’améliorer votre expérience sur notre site et de réaliser des statistiques de visites, nous utilisons des cookies. Rien n’est déposé sans votre accord, et le refus n’enlève l’accès à aucun contenu. Ce choix peut être modifié à tout moment.

Gérer les traceursVos données

Personnaliser

ArticleApplications & Développement

Construire sa plate-forme serverless avec Kubernetes et Brigade

Grand pari de Microsoft sur Azure pour supporter les clusters de conteneurs et les microservices, Kubernetes n'est pas seulement indiqué pour les applications critiques. Il est possible de l'utiliser très finement pour monter une plateforme serverless avec Deis Brigade.

La rédaction

Microsoft a beaucoup investi en temps et ressources pour s'assurer que les conteneurs deviennent un composant clef, non seulement sur sa plateforme Azure mais aussi sur n'importe quel autre cloud. Une partie de ce travail est aujourd’hui accessible via des outils conçus pour aider à gérer les charges de travail fonctionnant sur la plate-forme d'orchestration de conteneurs Kubernetes. Le développement de ces outils accéléré grâce à l'acquisition de Deis, une start-up spécialisée dans le support du système d'orchestration de conteneurs Kubernetes qui a apporté ses outils Helm et Draft à Microsoft. Ces derniers ont récemment été rejoints par Brigade, un outil basé sur JavaScript pour construire et gérer les flux de travail fonctionnant sur Kubernetes.

Beaucoup pensent que Kubernetes est un outil pour l'hébergement et la gestion d'applications distribuées à grande échelle, le regroupement de microservices hébergés dans des conteneurs, la gestion des ressources et la gestion de l'évolutivité. Mais Kubernetes est en fait beaucoup plus souple à l’usage puisque le gestionnaire open source est également idéal pour instancier et exécuter de petites applications ou des services ponctuels. Il est ainsi possible de l'utiliser pour héberger une plateforme de test avec un pipeline d'intégration et de livraison continue (CI/CD), ou pour répondre à la demande spécifique d'une application métier ou d'un système d'apprentissage machine.

Kubernetes via le code : un pipeline distribué

Mettre en place une petite application sur Kubernetes n'est pas particulièrement facile. Cela demande la même quantité de travail que de construire le framework pour exécuter une application beaucoup plus grande, y compris l'écriture du YAML nécessaire pour gérer votre code et vos conteneurs. Mais il n’est pas nécessaire d’empiler tout ce code pour tester une nouvelle idée, ou si le service ne s’exécutera que rarement ou bien car il est destiné à héberger un ensemble de tests qui ne sont nécessaires que lorsque vous exécutez une compilation. La plupart des développeurs préfèrent écrire du code que des fichiers de configuration. Il y a quelque chose au sujet de la programmation impérative qui rend la compréhension et le débogage plus facile que l'utilisation de commandes déclaratives. Brigade est conçu pour apporter cette approche impérative à la construction d'applications Kubernetes, en rassemblant les conteneurs et en assurant la transmission des données entre eux.

Les applications « Brigade » sont des pipelines, un modèle de calcul distribué commun qui traite les conteneurs comme des tâches séparées qui peuvent être exécutées en série ou en parallèle. Le code JavaScript Brigade gère le fonctionnement du pipeline, transférant les données entre les tâches et rassemblant les tâches parallèles et en pipeline. Au fond, il s'agit d'un moteur de workflow, avec une grammaire de base qui utilise des conteneurs Docker comme actions, tous scriptés en utilisant un code JavaScript familier.

Utiliser Brigade pour passer au serverless

Alors que beaucoup considèrent le développement d'applications distribuées comme un moyen de construire et de gérer de grandes applications évolutives, les concepts sous-jacents fonctionnent aussi bien pour n'importe quelle application qui peut être décomposée en petits composants, surtout si les éléments peuvent être exécutés en parallèle. Les pipelines Brigade peuvent être utilisés pour gérer des parties importantes de n'importe quelle application cloud, le traitement par lots de grandes quantités de données, la gestion des tâches ETL, et même la gestion de votre environnement et de vos services devops.

Si vous utilisez un cluster Kubernetes, vous pouvez utiliser Brigade pour construire et exécuter vos propres applications sans serveur. En déclenchant un pipeline Brigade, vous lancez une série de conteneurs que vous avez définis et mis en place à l'avance, en transmettant les résultats d'une tâche hébergée par conteneur à la suivante.

Les applications serverless sont capable de beaucoup plus que la familière approche fonction as a service disponible sur Azure Functions ou AWS Lambdas. Avec Brigade, elles démontrent plus de capacités, hébergeant des conteneurs complets exécutant des applications complexes qui se déclenchent au fur et à mesure des besoins, tournent au ralenti jusqu'à ce que le besoin se fasse ressentir et utilisent peu ou pas de ressources de calcul et seulement une petite quantité de stockage. C'est un modèle qui correspond bien à l'économie du cloud public, en tirant parti de la facturation à la seconde pour le calcul et les coûts de stockage en centimes par gigaoctet.

Commencer avec Brigade

Démarrer avec Brigade est assez facile, car il suffit d'une seule ligne de commande dans Kubernetes pour installer le service de Brigade natif. Il fonctionne sur n'importe quelle distribution Kubernetes : un minikube dedéveloppement local, un cloud privé ou un public hyper-scale. Et comme il s'agit d'un code Kubernetes natif, il n'y a pas de verrouillage logiciel sur Azure, ce qui vous donne la possibilité d'utiliser Brigade dans les déploiements multicloud. Les scripts brigades pour les tâches et les conteneurs fonctionneront sur n'importe quelle installation Kubernetes, en puisant dans les répertoires Docker (une collection d’images Docker) si nécessaire.

Les projets Brigade peuvent contenir plusieurs pipelines, en utilisant un fichier de configuration JavaScript pour définir les pipelines et les tâches. Ils n'ont pas uniquement à adresser des conteneurs ; vous pouvez les utiliser pour travailler avec n'importe quelle API RESTful, laissant votre code interagir avec des services comme Slack ou Teams, allant rapidement de devops à chatops (connexion de personnes ou de processus dans un flux de travail). Les demandes peuvent provenir de n'importe quel service, ce qui vous permet de travailler avec des API connues ou d'utiliser des webhooks via la passerelle Brigadier intégrée. Alternativement, vous pouvez écrire vos propres passerelles pour, par exemple, gérer les événements (avec les bibliothèques appropriées) qui proviennent de source exploitant CloudEvents.

Helm pour démarrer un projet

Les nouveaux projets sont créés à l'aide de l’outil Helm, le package manager soutenu et recommandé par Kubernetes. Bien que l'un des objectifs de Brigade soit d'éviter d'utiliser YAML, vous devez l'utiliser pour mettre en place la configuration de base du projet pour gérer une installation sur votre cluster, pour livrer des secrets et des tokens. L'équipe de développement offre également un outil de commandes en ligne appelé Brig qui aidera à tester vos scripts et à configurer votre serveur.

Les pipelines Brigade sont conceptuellement très simples. Ils commencent par importer des objets clés à partir du service Brigadier sous-jacent, qui fournit l'auditeur de l'événement et des liens vers Kubernetes. L'élément principal de votre programme est un gestionnaire d'événements, qui enveloppe votre code pipeline. Une fois l’événement lancé, le code s'exécute, et votre pipeline signale que c'est terminé. Le code lui-même se compose d'une série de fonctions, dont chacune est une image Docker. Vous pouvez utiliser la bibliothèque proposée ou utiliser vos propres images personnalisées. Chaque fonction peut alors se voir attribuer des tâches, une série de commandes qui s'exécutent à l'intérieur de l'image.

Les fonctions peuvent être regroupées pour être exécutés en parallèle à l'aide d’un groupe de commandes Brigade, ou être exécutés l'une après l'autre en série. Avec la fonctionnalité groupe de base, il n'y a pas de contrôle de flux, donc le pipeline continue à fonctionner, lançant les commandes en lot jusqu’à ce que les instructions soient terminés. Vous pouvez utiliser les fonctionnalités propres à JavaScript pour ajouter du contrôle à votre code. Chaque tâche ou groupe de tâches peut utiliser des constructions prometteuses pour assurer des opérations séquentielles, en tirant parti des opérations asynchrones JavaScript. Une fois que toutes les tâches sont terminées et que les travaux dans le pipeline sont marqués comme ayant réussi, l'hôte de Kubernetes détruit le pipeline Brigade et se débarrasse des conteneurs associés jusqu'à la prochaine opération.

Un tableau de bord pour suivre les opérations

Bien qu'une grande partie de Brigade soit focaliser sur l’exécution des conteneurs, il est quand même nécessaire de suivre le déroulement des opérations. C'est là qu'intervient Kashti, un tableau de bord dédié aux opérations exécutées avec Brigade. Avec Kashti, vous pouvez configurer et gérer les logs, en l'utilisant comme une console pour suivre tous les pipelines. Les résultats peuvent être suivis et visualisés, ajoutant non seulement une couche de reporting, mais aussi une meilleure connaissance du fonctionnement des scripts Brigade dont vous aurez besoin pour tester et déboguer votre code.

Il est possible de faire beaucoup de choses avec Kubernetes, surtout si vous utilisez les services gérés de Kubernetes sur Azure et les plateformes concurrentes. Des applications comme Helm, Draft et maintenant Brigade étendent les fonctionnalités de Kubernetes de manière à rendre la plate-forme opérationnelle beaucoup plus conviviale pour les développeurs, et elles valent la peine d'être ajoutées à votre boîte à outils Kubernetes.

Newsletter

La Quotidienne LMI

Recevez chaque matin l’actualité IT de la rédaction.

Construire sa plate-forme serverless avec Kubernetes et Brigade