Introduction

Il existe une idée fausse dans l'industrie selon laquelle Kubernetes est nécessaire pour exécuter un service de production sérieux. Cependant, cela n'est pas toujours le cas. Chez StatusDude, nous servons des milliers de vérifications de surveillance par minute, exécutons des travailleurs multi-régions et déployons plusieurs fois par jour, le tout avec Docker Compose et HAProxy, sans temps d'arrêt ni requêtes perdues.

Contexte Technique

Nous avons initialement utilisé Traefik, mais nous avons rencontré des problèmes lors de la mise en œuvre de déploiements sans temps d'arrêt. Traefik refuse de router les requêtes lorsque deux services ont les mêmes étiquettes, ce qui rend difficile la mise en œuvre d'une stratégie de déploiement en roulement. De plus, Traefik ne met pas à jour rapidement sa table de routage interne, ce qui entraîne des erreurs 502 lors de la mise à l'échelle.

Un autre problème majeur avec Traefik est son incapacité à renvoyer une requête échouée à un backend différent. Lorsqu'une requête échoue, Traefik la renvoie sur le même backend, ce qui peut entraîner des erreurs persistantes.

Analyse et Implications

Les déploiements sans temps d'arrêt nécessitent trois éléments clés : plusieurs instances de backend, un équilibreur de charge qui renvoie les requêtes échouées à un backend différent et un script de déploiement qui remplace les instances une à une. HAProxy répond à ces exigences grâce à sa fonctionnalité de renvoi de requêtes échouées sur un backend différent.

La configuration d'HAProxy inclut la définition de plusieurs répliques de backend avec Docker Compose, l'utilisation d'HAProxy comme équilibreur de charge et la mise en œuvre d'un script de déploiement qui remplace les instances une à une.

Perspective

Il est important de noter que les déploiements sans temps d'arrêt nécessitent une planification et une mise en œuvre soigneuses. La sélection d'outils appropriés, tels que Docker Compose et HAProxy, peut grandement faciliter ce processus. Il est également essentiel de surveiller les performances et les erreurs pour garantir que les déploiements se déroulent sans heurts.

En résumé, les déploiements sans temps d'arrêt sont possibles avec Docker Compose et HAProxy, sans nécessiter l'utilisation de Kubernetes. En comprenant les exigences clés et en sélectionnant les outils appropriés, les équipes de développement peuvent mettre en œuvre des déploiements efficaces et fiables.