Implémenter PostgreSQL dans l'univers Kubernetes

Dev

PostgreSQL et Kubernetes : simplification ou surcharge technique ?

Par La rédaction, publié le 12 juin 2025

Pour les entreprises qui mènent une transformation numérique à grande échelle, ou qui ont besoin de déployer de nombreuses applications, Kubernetes change véritablement la donne. Sa capacité à opérer et à contrôler efficacement les applications stateless ont fait de Kubernetes la plateforme la plus plébiscitée pour le déploiement et la gestion d’applications conteneurisées. Cet engouement engendre de nombreux changements, notamment dans l’univers des bases de données, et à fortiori pour PostgreSQL. Mais ce n’est pas une raison pour foncer tête baissée.


De Pierrick Chovelon, administrateur de bases de données et formateur PostgreSQL, Dalibo


La nécessité de fournir de petites bases de données PostgreSQL pour certains micro-services est de plus en plus rencontrée et peut s’avérer complexe dans une infrastructure classique (i.e. sur machine virtuelle ou serveur physique). En effet, ce type d’usage requiert un effort important en matière d’automatisation et de templating. Des outils comme pglift permettent de répondre à ce besoin en industrialisant le processus et en proposant une nouvelle approche intégrée du provisionnement d’instances PostgreSQL. Les instances sont alors déployées déclarativement sur une infrastructure classique, accompagnées d’outils annexes permettant de gérer sauvegarde, surveillance, ou encore haute disponibilité.

Face à l’explosion des volumes de données, du nombre d’applications nécessitant une base et face à au changement de paradigme qu’implique la conteneurisation, les équipes techniques sont parfois tentées d’envisager de nouvelles solutions pour déployer PostgreSQL. D’où l’envie d’utiliser Kubernetes… alors même que ce dernier apporte lui aussi son lot de complexités.

L’automatisation offerte par les opérateurs Kubernetes a considérablement simplifié l’exécution de charges de travail complexes, comme la gestion des bases de données. Néanmoins, cette simplification ne doit pas masquer la nécessité d’une expertise approfondie sur PostgreSQL pour la mise en place et le maintien en conditions opérationnelles des bases. Bien que la sécurité ait été renforcée ou que de bonnes pratiques sont imposées par les opérateurs Kubernetes pour PostgreSQL, la gestion des instances reste toujours à faire : les erreurs de configuration sont toujours une source de problèmes de performance et de vulnérabilités, l’optimisation de requêtes devra toujours être faite, comme la conception d’un modèle de données optimal.

Alors faut-il déployer nos bases de données PostgreSQL dans Kubernetes ?

La réponse repose sur de nombreux facteurs dont il serait difficile de dresser la liste exhaustive. Néanmoins, voici quelques pistes de réflexion.

La quantité et le volume de bases de données à administrer

Déployer quelques instances ou déployer plusieurs milliers d’instances PostgreSQL n’a pas les mêmes implications. Tout dépend également de l’infrastructure existante. Pour le déploiement de seulement quelques instances, ne requérant qu’une maintenance minimale, quelques machines virtuelles peuvent suffire. Si l’infrastructure le permet, cette solution est tout à fait viable et permettra de gérer des bases de données de plusieurs téraoctets sans grande difficulté.

Le savoir-faire, la connaissance et la compétence des équipes

Une fois la légitimité du projet établie, il est essentiel d’évaluer la maturité de l’entreprise sur la technologie Kubernetes. Est-ce que des applications fonctionnent d’ores et déjà sur cette plateforme ? Si la réponse est négative, et que l’entreprise n’a aucune expérience avec Kubernetes, il est préférable de différer le déploiement de bases de données sur cette infrastructure. Il est en effet crucial de disposer d’un environnement Kubernetes opérationnel, ainsi que des compétences et des connaissances nécessaires, avant d’envisager d’y héberger des bases de données.

Avec Kubernetes, viennent s’ajouter de nombreuses couches techniques ainsi que des couches d’abstraction qu’il faut connaître et bien savoir gérer. Certains diraient que Kubernetes fonctionne comme une boîte noire pour le déploiement d’applications et de services, principalement en déployant des applications basées sur des images et des ressources définies dans Kubernetes. Une connaissance de Kubernetes mais également de ce qu’on déploie est nécessaire et cela peut passer par l’inspection des images utilisées.

Le choix de l’opérateur Kubernetes

Dans l’univers Kubernetes, les opérateurs étendent les fonctionnalités de base de la plateforme avec l’apport de nouvelles ressources, telles que des clusters PostgreSQL (i. e instances), des sauvegardes physiques d’instances, des bases de données, des rôles, etc. Les opérateurs apportent aussi des fonctionnalités spécifiques dédiées à PostgreSQL comme la promotion d’instance, la bascule automatique en cas de panne, les montées de version automatisées en mode Rolling Update, etc.).

Bien que les opérateurs simplifient certaines tâches, ils introduisent aussi la nécessité d’une courbe d’apprentissage. L’utilisation d’un opérateur nécessite de comprendre à la fois Kubernetes, l’opérateur lui-même, sans oublier les implications que son usage a sur les instances PostgreSQL. Cela nécessite généralement des changements de méthodes et d’outils de travail pour les DBA, les obligeant à se perfectionner et à monter en compétences sur des champs autres que les bases de données. Cela ajoute des couches d’abstraction et de complexité technique qui doivent être comprises et gérées efficacement.

Par ailleurs, il faut bien comprendre que chaque opérateur est spécifique et possède ses propres particularités (fonctionnalités, images utilisées, extensions disponibles, etc.). Une analyse comparative approfondie des opérateurs est donc nécessaire pour garantir qu’ils répondent adéquatement aux exigences préalablement définies : utilise-t-il une distribution modifiée de PostgreSQL ? Qu’elle est l’implication communautaire du projet ? Quel outil de sauvegarde est utilisé ? Est-ce qu’un plug-in kubectl existe ? etc.

La compréhension du rôle de DBA

Enfin, il est essentiel de rappeler que, fondamentalement, même si la base de données fonctionne dans un environnement Kubernetes, il s’agit toujours de PostgreSQL. Certes, l’opérateur facilite grandement le déploiement, à condition que l’infrastructure soit correctement configurée et opérationnelle. Il offre également des fonctionnalités avancées telles que la haute disponibilité et la bascule automatique.

Cependant, il est important de souligner que l’opérateur ne remplace pas le DBA. Par exemple, la gestion de l’accès, la surveillance et l’exploitation des traces restent des aspects cruciaux qui nécessitent que les bons outils soient déployés. Pour donner un exemple concret, avec une installation standard sur une machine virtuelle, l’accès aux traces de l’instance est direct via le fichier de. log. Dans un environnement Kubernetes, une brique logicielle supplémentaire est nécessaire pour centraliser ces traces comme il n’est plus vraiment possible (en tout cas recommandé) de se connecter au conteneur où se trouve PostgreSQL. Sans cette centralisation, les administrateurs de bases de données risquent de manquer d’informations essentielles et de ne pas pouvoir diagnostiquer les problèmes efficacement.

La décision de déployer PostgreSQL sur Kubernetes est donc loin d’être triviale. Si Kubernetes offre des avantages indéniables en termes d’automatisation et de gestion à grande échelle, possible grâce aux opérateurs, il introduit également une complexité accrue et nécessite une expertise spécifique.

L’évaluation du volume de bases de données à gérer, du savoir-faire interne, du choix de l’opérateur et de la prise en compte des spécificités de PostgreSQL sont autant de facteurs déterminants. Pour les déploiements de petite envergure (en nombre d’instances déployées), une infrastructure plus traditionnelle basée sur des machines virtuelles peut s’avérer suffisante. Avant de se lancer, il est donc crucial d’évaluer la réalité du besoin, la maturité de l’entreprise en matière de Kubernetes et de s’assurer de la maîtrise des compétences nécessaires.


À LIRE AUSSI :

À LIRE AUSSI :

Dans l'actualité

Verified by MonsterInsights