Binkski - stock.adobe.com

Comment déployer (simplement) Redis sur Kubernetes

Redis est une plateforme puissante avec de nombreux cas d’usage. Suivez ce tutoriel pour exécuter Redis sur Kubernetes afin de simplifier les déploiements et d’augmenter sa fiabilité et ses performances.

Redis est une plateforme puissante et polyvalente qui peut prendre en charge un large éventail de cas d’usage, y compris le fonctionnement d’une base de données primaire, d’un courtier de messagerie ou la mise en cache du contenu d’un site web.

Lorsque vous exécutez Redis sur Kubernetes (K8), la plateforme révèle tout son intérêt, quoique ce ne soit pas forcément la bonne configuration pour tout le monde. Le fait de déployer ce système sur Kubernetes peut en simplifier le déploiement, améliorer sa fiabilité et ses performances.

Qu’est-ce que Redis ?

Redis est un magasin de données en mémoire. Vous pouvez utiliser Redis à diverses fins :

  • Exploiter une base de données de type NoSQL.
  • Un broker de messageries dans le cadre d’un pipeline de données en continu.
  • Mettre en cache des données pour les sites web afin d’améliorer les performances.
  • Exécuter une série d’opérations pour traiter des données ou permettre une transaction.

Étant donné que les données stockées par Redis résident en mémoire, l’accès à ces données est plus rapide que la moyenne des SGBD stockant les fichiers sur disque. C’est le principal avantage de Redis par rapport aux bases de données traditionnelles ou à certaines bases de données clés valeurs.

Redis propose un mode cluster qui répartit les données sur plusieurs nœuds afin d’accroître la fiabilité. Toutes les alternatives à Redis ne proposent pas cette fonctionnalité. Dans les cas où elles le font, le clustering est souvent plus complexe qu’avec Redis. Par exemple, il est possible d’exécuter une base de données MySQL en utilisant une architecture en grappe. Mais cela demande plus de travail, car MySQL est conçu pour fonctionner en mode non distribué.

Avantages de l’exécution de Redis sur Kubernetes

Redis peut fonctionner dans divers environnements, notamment directement sur des serveurs Windows et Linux. Dans certains cas, les déploiements sur Kubernetes sont opportuns. Cela peut améliorer les performances de ce SGBD principalement utilisé comme couche de cache.

Kubernetes peut gérer automatiquement le déploiement des nœuds Redis (ou d’un seul nœud, si vous choisissez d’exécuter Redis en mode non groupé) sur un cluster de nœuds K8s. Si l’un des nœuds hébergeant une partie d’un cluster Redis tombe en panne, l’orchestrateur redémarre automatiquement le nœud du SGBD NoSQL sur un autre serveur.

Dans Redis, les nœuds désignent les serveurs virtuels qui forment un cluster Redis. En revanche, les nœuds Kubernetes sont les serveurs physiques ou virtuels qui fournissent l’infrastructure sur laquelle Kubernetes déploie les charges de travail. Ainsi, si vous exécutez Redis sur Kubernetes, vous déployez des nœuds Redis au-dessus des nœuds Kubernetes. Il s’agit de différents types de nœuds, et il est important de ne pas les confondre.

Pour faire évoluer ce SGBD à la hausse ou à la baisse sur Kubernetes, ajoutez ou supprimez des instances Redis d’un cluster Kubernetes. Vous pouvez gérer l’équilibrage de charge via Kubernetes, ce qui vous permet d’acheminer efficacement les demandes sur plusieurs nœuds Redis. Vous pouvez également gérer la journalisation et la surveillance de Redis via l’orchestrateur. Par exemple, vous pouvez déployer des agents de surveillance aux côtés de Redis au sein du même cluster Kubernetes.

La principale raison pour laquelle vous pourriez ne pas vouloir exécuter Redis sur Kubernetes est que le déploiement et la configuration sont un peu plus compliqués. Vous pouvez installer Redis directement sur un serveur Linux ou Windows en utilisant seulement quelques commandes. Mais si vous l’installez sur Kubernetes, vous devrez suivre quelques étapes supplémentaires.

Conditions préalables au déploiement

Avant de suivre le processus ci-dessous, vous aurez besoin des éléments suivants :

Un cluster Kubernetes. Cet exemple utilise K3s, mais toute distribution Kubernetes moderne devrait prendre en charge Redis.

– Helm. Cet exemple installe Redis à l’aide de Helm, un gestionnaire de paquets pour Kubernetes. Si Helm n’est pas déjà installé sur votre système, reportez-vous à la documentation Helm pour connaître les options d’installation.

– Connaissance de base de Kubernetes. Il n’est pas nécessaire d’être un gourou de K8s pour installer Redis sur Kubernetes. Mais vous devez avoir une connaissance pratique de kubectl et des Helm charts, (si vous choisissez d’installer Redis à l’aide de Helm).

Déployer Redis sur Kubernetes

Cette démonstration utilise un helm chart Redis fournie par Bitnami et hébergé sur GitHub. D’autres méthodes d’installation sont disponibles.

Étape 1

Installez le Helm chart Redis.

helm install my-release oci://registry-1.docker.io/bitnamicharts/redis-cluster​

Étape 2

Vérifiez que les modules Redis sont en cours d’exécution. Les modules Redis seront lancés automatiquement après l’installation du Helm chart. Pour vérifier que les pods ont bien démarré, exécutez la commande suivante.

kubectl get pods --all-namespaces

La sortie devrait contenir une liste de pods Redis comme suit.

NAMESPACE     NAME                                      READY   STATUS              RESTARTS       AGE

default       my-release-redis-cluster-2                0/1     ContainerCreating   0              34s

default       my-release-redis-cluster-5                0/1     ContainerCreating   0              34s

default       my-release-redis-cluster-1                0/1     ContainerCreating   0              34s

default       my-release-redis-cluster-0                0/1     ContainerCreating   0              34s

default       my-release-redis-cluster-4                0/1     ContainerCreating   0              34s

default       my-release-redis-cluster-3                0/1     ContainerCreating   0              34s

Dans la sortie, les pods sont toujours dans l’état ContainerCreating. Si vous attendez une minute ou deux et que vous obtenez à nouveau la liste des pods, vous devriez voir qu’ils sont passés à l’état Running.

NAMESPACE     NAME                                      READY   STATUS              RESTARTS       AGE

default       my-release-redis-cluster-5                1/1     Running             0              3m16s

default       my-release-redis-cluster-1                1/1     Running             0              3m16s

default       my-release-redis-cluster-4                1/1     Running             0              3m16s

default       my-release-redis-cluster-0                1/1     Running             0              3m16s

default       my-release-redis-cluster-2                1/1     Running             0              3m16s

default       my-release-redis-cluster-3                1/1     Running             0              3m16s

Les Pods doivent être dans l’état Running avant de pouvoir se connecter au cluster Redis.

Étape 3

Exportez le mot de passe du cluster en tant que variable d’environnement pour vous connecter au cluster Redis nouvellement installé.

export REDIS_PASSWORD=$(kubectl get secret --namespace "default" my-release-redis-cluster -o jsonpath="{.data.redis-password}" | base64 -d)

Étape 4

Exécutez cette commande pour lancer un nouveau conteneur afin d’héberger le client Redis. Cette commande démarre le conteneur et ouvre automatiquement un shell Bash à l’intérieur de celui-ci.

kubectl run --namespace default my-release-redis-cluster-client --rm --tty -i --restart='Never' \

 --env REDIS_PASSWORD=$REDIS_PASSWORD \

--image docker.io/bitnami/redis-cluster:7.2.4-debian-12-r11 -- bash

Étape 5

À partir de cet emplacement, entrez la commande suivante pour terminer la connexion au cluster.

redis-cli -c -h my-release-redis-cluster -a $REDIS_PASSWORD

Vous êtes maintenant à l’invite de commande où vous pouvez interagir avec votre cluster Redis. Par exemple, si vous exécutez la commande CLUSTER INFO, vous devriez obtenir une sortie telle que la suivante.

my-release-redis-cluster:6379> CLUSTER INFO

cluster_state:ok

cluster_slots_assigned:16384

cluster_slots_ok:16384

cluster_slots_pfail:0

cluster_slots_fail:0

cluster_known_nodes:6

cluster_size:3

cluster_current_epoch:6

cluster_my_epoch:1

cluster_stats_messages_ping_sent:473

cluster_stats_messages_pong_sent:475

cluster_stats_messages_sent:948

cluster_stats_messages_ping_received:470

cluster_stats_messages_pong_received:473

cluster_stats_messages_meet_received:5

cluster_stats_messages_received:948

total_cluster_links_buffer_limit_exceeded:0

Options alternatives de déploiement de Redis pour Kubernetes

Le déploiement de Redis à l’aide d’un Helm chart est le moyen le plus simple de rendre Redis opérationnel sur Kubernetes, mais ce n’est pas la seule méthode.

D’autres approches incluent le déploiement de Redis Enterprise à l’aide d’un opérateur Kubernetes ou la configuration de Redis en tant que service K8s. Ces techniques permettent de mieux contrôler la façon dont vous configurez Redis. Mais si vous êtes novice en matière de Redis et/ou de Kubernetes et que vous souhaitez un moyen simple et rapide d’installer un cluster, la méthode décrite dans ce conseil est la meilleure.

Pour approfondir sur Base de données