Le déploiement bleu-vert est une stratégie de gestion des versions logicielles largement utilisée. Il implique deux environnements matériels identiques, l'un actif et au service des utilisateurs tandis que l'autre reste en veille. Cette approche facilite la gestion fluide des mises à jour logicielles et atténue le risque d'indisponibilité du système.
Le nouveau code est initialement publié dans des environnements de test, où il subit des tests rigoureux. Une fois que l'équipe a approuvé le code mis à jour, la configuration du routeur est ajustée pour basculer le trafic de l'application vers l'environnement en cours de production. Si des problèmes surviennent, ils reviennent à l'environnement de production précédent pour continuer à utiliser la version originale du logiciel.
Certains avantages notables des déploiements bleu-vert incluent :
Kubernetes gagne en popularité en tant qu'environnement de développement, de test et de déploiement de production. Bien qu'il simplifie le déploiement des applications, Kubernetes n'offre pas de fonctionnalité de déploiement bleu-vert native prête à l'emploi. Au lieu de cela, il fournit un objet Deployment qui permet des mises à jour progressives, qui peuvent, dans une certaine mesure, remplacer les pods d'une application par sa dernière version sans aucun temps d'arrêt.
Les déploiements progressifs s'accompagnent de certaines limitations. Ils peuvent rendre les restaurations difficiles et peuvent nécessiter des vérifications de l'état de Kubernetes pour évaluer l'état des pods au sein d'un déploiement. De plus, les déploiements progressifs peuvent prendre plus de temps par rapport à un modèle bleu-vert pur, où le basculement vers une nouvelle version se produit instantanément.
Pour mettre en œuvre efficacement des déploiements bleu-vert avec Kubernetes, envisagez les outils suivants :
Argo Rollouts est un ensemble open source de contrôleurs Kubernetes et de définitions de ressources personnalisées (CRD) qui ajoute des fonctionnalités de déploiement avancées telles que des déploiements bleu-vert et canari, des expériences et d'autres capacités de livraison progressives. Il s'intègre éventuellement aux contrôleurs d'entrée Kubernetes et aux maillages de service pour gérer le trafic pendant les mises à jour. Il peut même interroger et interpréter les métriques d'autres systèmes pour valider les indicateurs de performance clés (KPI) et promouvoir ou annuler automatiquement les versions.
Flagger est un outil de livraison progressive qui automatise le processus de publication des applications exécutées sur Kubernetes. Il réduit le risque d'introduction de nouvelles versions logicielles en production en détournant progressivement le trafic vers la version mise à jour tout en évaluant les métriques et en effectuant des tests de conformité. Flagger prend en charge plusieurs stratégies de déploiement, telles que les versions Canary, les tests A/B et les déploiements bleu-vert, et s'intègre à divers contrôleurs d'entrée, maillages de services et systèmes de surveillance Kubernetes.
GitLab CI/CD est une plate-forme DevOps riche en fonctionnalités qui rationalise les grands projets de développement logiciel. En plus de son référentiel de code et de ses capacités de suivi des problèmes, GitLab offre une automatisation CI/CD qui prend en charge à la fois les déploiements déclenchés manuellement et les déploiements planifiés sur les systèmes de production Kubernetes, y compris les stratégies de déploiement progressif comme le déploiement bleu-vert.
CircleCI est une plate-forme CI/CD qui aide les équipes d'ingénierie à créer, tester et déployer des logiciels tout en gardant une trace des modifications de code en temps réel via son interface utilisateur de tableau de bord. CircleCI prend en charge le déploiement sur les clusters Kubernetes et s'intègre à d'autres services pour les stratégies de déploiement telles que les drapeaux de fonctionnalités, les déploiements bleu-vert et Canary.
Cet article a présenté le modèle de déploiement bleu-vert, ses différents avantages et les options de mise en œuvre de cette technique dans un environnement Kubernetes. En envisageant des outils comme Argo Rollouts, Flagger, GitLab CI/CD ou CircleCI, vous pouvez obtenir des versions logicielles plus fluides, minimiser les temps d'arrêt et améliorer l'expérience globale des développeurs et des utilisateurs finaux dans votre environnement Kubernetes. Lorsque vous explorez ces outils, tenez compte des exigences uniques de votre pipeline de développement logiciel pour identifier la solution qui correspond le mieux aux besoins de votre équipe.