Zum Hauptinhalt springen
Version: 2.0.2

Déployer RabbitMQ en 5 minutes

Ce guide vous accompagne pas à pas dans le déploiement de votre premier cluster RabbitMQ sur Hikube, du manifeste YAML jusqu'aux premiers tests de messagerie.


Objectifs

À la fin de ce guide, vous aurez :

  • Un cluster RabbitMQ déployé et opérationnel sur Hikube
  • 3 nœuds RabbitMQ répliqués pour la haute disponibilité
  • Un vhost et un utilisateur admin configurés
  • Un stockage persistant pour les données RabbitMQ
  • Un accès à l'interface de gestion (Management UI)

Prérequis

Avant de commencer, assurez-vous d'avoir :

  • kubectl configuré avec votre kubeconfig Hikube
  • Droits administrateur sur votre tenant
  • Un namespace dédié pour héberger votre cluster RabbitMQ
  • Python avec le module pika installé (optionnel, pour les tests)

Étape 1 : Créer le manifeste RabbitMQ

Créez un fichier rabbitmq.yaml avec la configuration suivante :

rabbitmq.yaml
apiVersion: apps.cozystack.io/v1alpha1
kind: RabbitMQ
metadata:
name: example
spec:
replicas: 3
resourcesPreset: small
size: 10Gi
storageClass: replicated
users:
admin:
password: "strongpassword"
vhosts:
default:
roles:
admin: ["admin"]
Tipp

Avec 3 réplicas, RabbitMQ utilise les quorum queues pour garantir la durabilité des messages. Consultez la Référence API pour la configuration complète.


Étape 2 : Déployer le cluster RabbitMQ

Appliquez le manifeste et vérifiez que le déploiement démarre :

# Appliquer le manifeste
kubectl apply -f rabbitmq.yaml

Vérifiez le statut du cluster (peut prendre 2-3 minutes) :

kubectl get rabbitmq

Résultat attendu :

NAME      READY   AGE     VERSION
example True 2m 0.10.0

Étape 3 : Vérification des pods

Vérifiez que tous les pods sont en état Running :

kubectl get pods | grep rabbitmq

Résultat attendu :

rabbitmq-example-rabbitmq-server-0    1/1     Running   0   2m
rabbitmq-example-rabbitmq-server-1 1/1 Running 0 2m
rabbitmq-example-rabbitmq-server-2 1/1 Running 0 2m

Avec replicas: 3, vous obtenez 3 nœuds RabbitMQ formant un cluster haute disponibilité.

PréfixeRôleNombre
rabbitmq-example-rabbitmq-server-*RabbitMQ Server (broker de messages + Management UI)3

Étape 4 : Récupérer les identifiants

Les mots de passe sont stockés dans des Secrets Kubernetes :

# Identifiants de l'utilisateur défini dans le manifeste
kubectl get secret rabbitmq-example-credentials -o json | jq -r '.data | to_entries[] | "\(.key): \(.value|@base64d)"'

Résultat attendu :

admin: strongpassword

Un utilisateur par défaut est également créé automatiquement par l'opérateur :

# Identifiants de l'utilisateur par défaut
kubectl get secret rabbitmq-example-rabbitmq-default-user -o json | jq -r '.data | to_entries[] | "\(.key): \(.value|@base64d)"'

Étape 5 : Connexion et tests

Accès à l'interface de gestion (Management UI)

kubectl port-forward svc/rabbitmq-example-rabbitmq 15672:15672 &

Accédez à l'interface via votre navigateur : http://localhost:15672

Connectez-vous avec les identifiants de l'utilisateur par défaut récupérés à l'étape 4.

Test de messagerie avec Python

kubectl port-forward svc/rabbitmq-example-rabbitmq 5672:5672 &
test_rabbitmq.py
import pika

credentials = pika.PlainCredentials('admin', 'strongpassword')
parameters = pika.ConnectionParameters(
host='localhost',
port=5672,
virtual_host='default',
credentials=credentials
)

connection = pika.BlockingConnection(parameters)
channel = connection.channel()

# Création d'une queue
channel.queue_declare(queue='test')

# Envoi d'un message
channel.basic_publish(exchange='', routing_key='test', body='Hello Hikube!')
print("Message envoyé avec succès")

connection.close()
python test_rabbitmq.py

Résultat attendu :

Message envoyé avec succès
Hinweis

Si vous n'avez pas pika, installez-le avec pip install pika.


Étape 6 : Dépannage rapide

Pods en CrashLoopBackOff

# Vérifier les logs du pod en erreur
kubectl logs rabbitmq-example-rabbitmq-server-0

# Vérifier les events du pod
kubectl describe pod rabbitmq-example-rabbitmq-server-0

Causes fréquentes : mémoire insuffisante (resources.memory trop faible), volume de stockage plein, erreur de résolution DNS entre les nœuds.

RabbitMQ non accessible

# Vérifier que les services existent
kubectl get svc | grep rabbitmq

# Vérifier le service RabbitMQ
kubectl describe svc rabbitmq-example-rabbitmq

Causes fréquentes : port-forward non actif, mauvais port (5672 pour AMQP, 15672 pour Management UI), identifiants incorrects.

Cluster non formé

# Vérifier l'état du cluster RabbitMQ
kubectl exec rabbitmq-example-rabbitmq-server-0 -- rabbitmqctl cluster_status

# Vérifier les logs de formation du cluster
kubectl logs rabbitmq-example-rabbitmq-server-0 | grep -i cluster

Causes fréquentes : problème de résolution DNS entre les nœuds, cookie Erlang non synchronisé, ressources insuffisantes pour le processus de formation du cluster.

Commandes de diagnostic générales

# Events récents sur le namespace
kubectl get events --sort-by=.metadata.creationTimestamp

# État détaillé du cluster RabbitMQ
kubectl describe rabbitmq example

Étape 7 : Nettoyage

Pour supprimer les ressources de test :

kubectl delete -f rabbitmq.yaml
Warnung

Cette action supprime le cluster RabbitMQ et toutes les données associées. Cette opération est irréversible.


Résumé

Vous avez déployé :

  • Un cluster RabbitMQ avec 3 nœuds en haute disponibilité
  • Un utilisateur admin et un vhost par défaut configurés
  • Une interface de gestion (Management UI) accessible localement
  • Un stockage persistant pour la durabilité des données

Prochaines étapes

  • Référence API : Configuration complète de toutes les options RabbitMQ
  • Vue d'ensemble : Architecture détaillée et cas d'usage RabbitMQ sur Hikube