Prérequis et environnement
Ce guide suppose que vous disposez déjà d’un cluster Kubernetes fonctionnel ainsi que de Helm installé en version 3. Les composants suivants sont utilisés dans cet exemple :
| Composant | Version |
|---|---|
| Chart Helm | 16.11.2 |
| Redis | 6.2.7 |
| Kubernetes | v1.19.3 |
| Helm | v3.8.1 |
Assurez-vous également qu’un StorageClass est disponible (ex: NFS, OpenEBS, Ceph) pour la persistance des données.
Ajout du dépôt Bitnami et installation du chart Redis
1. Ajouter le dépôt Helm Bitnami
helm repo add bitnami https://charts.bitnami.com/bitnami
2. Synchronsier les charts disponibles
helm repo update
3. Télécharger le chart Redis localement
mkdir -p /opt/redis-deploy && cd /opt/redis-deploy
helm pull bitnami/redis --version 16.11.2
tar -xzf redis-16.11.2.tgz
cp redis/values.yaml custom-values.yaml
4. Configuration personnalisée du cluster Redis
Le fichier custom-values.yaml doit être ajusté pour activer l’architecture de réplication avec Sentinel. Voici les sections clés à modifier :
global:
storageClass: "openebs-jiva-default"
redis:
password: "secureRedisPass123"
fullnameOverride: "redis-cluster"
architecture: replication
commonConfiguration: |-
appendonly yes
save ""
master:
persistence:
enabled: true
size: 8Gi
service:
type: ClusterIP
ports:
redis: 6379
replica:
replicaCount: 2
persistence:
enabled: true
size: 8Gi
service:
type: ClusterIP
ports:
redis: 6379
sentinel:
enabled: true
containerPorts:
sentinel: 26379
persistence:
enabled: true
size: 100Mi
service:
type: ClusterIP
ports:
redis: 6379
sentinel: 26379
5. Déploiement du cluster dans un namespace dédié
kubectl create namespace redis-prod
helm install redis-cluster bitnami/redis \
--namespace redis-prod \
--values custom-values.yaml
6. Vérification du déploiement
Lister les releases Helm dans le namespace :
helm -n redis-prod list
Vérifier les pods déployés :
kubectl get pods -n redis-prod
# Sortie attendue :
# redis-node-0 2/2 Running
# redis-node-1 2/2 Running
# redis-node-2 2/2 Running
Consulter les PersistentVolumeClaims :
kubectl get pvc -n redis-prod
7. Validation du fonctionnement du cluster
Récupérer le mot de passe depuis le secret Kubernetes :
export REDIS_PASSWORD=$(kubectl get secret -n redis-prod redis-cluster -o jsonpath="{.data.redis-password}" | base64 -d)
Lancer un conteneur temporaire pour tester la connexion :
kubectl run -n redis-prod redis-client --rm -it --restart='Never' \
--env REDIS_PASSWORD=$REDIS_PASSWORD \
--image=bitnami/redis:6.2.7 --command -- bash
Dans le shell du client, vérifier la configuration de réplication :
REDISCLI_AUTH=$REDIS_PASSWORD redis-cli -h redis-cluster -p 6379 info replication
Exemple de sortie attendue :
role:master
connected_slaves:2
slave0:ip=redis-node-1.redis-headless.redis-prod.svc.cluster.local,port=6379,...
Interroger les sentinelles :
REDISCLI_AUTH=$REDIS_PASSWORD redis-cli -h redis-cluster -p 26379 info sentinel
Sortie typique :
# Sentinel
sentinel_masters:1
master0:name=mymaster,status=ok,address=redis-node-0.redis-headless.redis-prod.svc.cluster.local:6379,slaves=2,sentinels=3
Le cluster est opérationnel si une seule instance maîtresse est détectée avec deux esclaves connectés, et que les trois senitnelles surveillent correctement le groupe.