Créer un cluster RabbitMQ en 5 minutes
Ce guide vous accompagne dans la création de votre premier cluster RabbitMQ depuis la console Hikube, jusqu'à l'envoi d'un premier message.
Objectifs
À la fin de ce guide, vous aurez :
- Un cluster RabbitMQ opérationnel dans votre projet
- Un vhost et un utilisateur avec ses droits
- Le mot de passe de cet utilisateur et l'adresse de connexion du cluster
- Un premier message publié avec un client AMQP
Prérequis
- Un compte Hikube et un projet (voir le démarrage rapide Hikube)
- Un quota de projet suffisant pour le cluster (CPU, mémoire et stockage)
- Python 3 avec le module
pikainstallé, pour le test de l'étape 5 (pip install pika) - Pour l'onglet API : une clé d'API
admindu projet et les variablesHIKUBE_API,HIKUBE_API_KEYetPROJECT_ID(voir Préparer l'environnement) ; les exemples utilisentcurletjq
Étape 1 : Ouvrir l'assistant de création
- Console
- API
- Connectez-vous à la console Hikube et sélectionnez votre projet.
- Dans le menu latéral, ouvrez DB & Messaging → RabbitMQ. La page Clusters RabbitMQ s'affiche.
- Cliquez sur Créer un cluster. L'assistant Créer un cluster RabbitMQ s'ouvre.
Avec l'API, il n'y a pas d'assistant. Vérifiez que la clé donne accès au projet en listant ses clusters RabbitMQ, puis consultez les préconfigurations disponibles :
curl -sS "$HIKUBE_API/rabbitmq/v1alpha1/projects/$PROJECT_ID/clusters" \
-H "X-Hikube-Api-Key: $HIKUBE_API_KEY"
curl -sS "$HIKUBE_API/rabbitmq/v1alpha1/presets" \
-H "X-Hikube-Api-Key: $HIKUBE_API_KEY" | jq '.presets[] | {name, cpu, memory}'
Résultat attendu : un objet {"totalCount": ..., "clusters": [...]}, puis la liste des préconfigurations avec leur CPU et leur mémoire.
Étape 2 : Configurer et créer le cluster
- Console
- API
L'assistant comporte cinq étapes. Un bandeau affiche le coût estimé et, à l'étape Configuration, la consommation de quota du projet.
Général
Saisissez le Nom du cluster (un nom est proposé par défaut). Il doit comporter 3 à 16 caractères : minuscules, chiffres et tirets, commencer par une lettre et se terminer par une lettre ou un chiffre. Exemple : rabbit-demo.
Configuration
| Champ | Valeur conseillée pour ce guide | Remarque |
|---|---|---|
| Version RabbitMQ | 4.2 | Versions proposées : 4.2, 4.1, 4.0, 3.13 |
| Préconfiguration (Preset) | s1.small — 1 CPU / 2Gi | Aucun preset n'est présélectionné ; non modifiable après création |
| Taille du disque (Go) | 10 | Capacité par nœud |
| Nombre de réplicas | 3 (Haute disponibilité max) | 1 (Standalone), 3 ou 5 ; non modifiable après création |
| Accès externe | Activé | Expose le cluster sur Internet ; nécessaire pour le test depuis votre poste |
Si le quota de stockage du projet est dépassé, la console affiche « Quota de stockage dépassé pour ce projet » et le bouton Suivant reste inactif. Réduisez la taille ou le nombre de réplicas, ou faites augmenter le quota du projet.
VHosts
Saisissez un Nom du VHost (par exemple demo ; minuscules, chiffres et tirets, en commençant par une lettre et en terminant par une lettre ou un chiffre) puis cliquez sur Ajouter. Au moins un vhost est nécessaire pour passer à l'étape suivante.
Utilisateurs
- Dans Ajouter un nouvel utilisateur, saisissez le Nom de l'utilisateur (par exemple
app-user; minuscules, chiffres et tirets). - Dans Accès aux VHosts, choisissez Administrateur pour le vhost
demo. - Cliquez sur Ajouter l'utilisateur.
Au moins un utilisateur est nécessaire pour continuer.
Vérification
Relisez le récapitulatif (nom, version, préconfiguration, réplicas, taille, réseau Public ou Privé, coût estimé, nombre de vhosts et d'utilisateurs à créer), puis cliquez sur Déployer.
Résumé : copier le mot de passe
À la fin du déploiement, l'écran Résumé affiche Création terminée ! et, pour chaque utilisateur créé, son Mot de passe.
Copiez le mot de passe immédiatement et conservez-le dans un gestionnaire de mots de passe. Il ne sera plus affiché après avoir quitté cet écran. En cas de perte, générez-en un nouveau avec l'action Changer le mot de passe (voir Gérer les vhosts et utilisateurs).
Cliquez ensuite sur Terminer pour revenir à la liste des clusters.
L'assistant de la console enchaîne trois opérations que l'API expose séparément : créer le cluster, créer le vhost, puis créer l'utilisateur. Le vhost et l'utilisateur peuvent être créés dès que le cluster existe, sans attendre qu'il soit prêt.
1. Créer le cluster avec POST /rabbitmq/v1alpha1/projects/{projectId}/clusters :
curl -sS -X POST "$HIKUBE_API/rabbitmq/v1alpha1/projects/$PROJECT_ID/clusters" \
-H "X-Hikube-Api-Key: $HIKUBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "rabbitdemo",
"version": "v4.2",
"preset": "s1.small",
"size": 10,
"replicas": 3,
"external": true
}'
| Champ | Valeur | Remarque |
|---|---|---|
name | rabbitdemo | 16 caractères maximum, en minuscules ; identifie le cluster dans les chemins de l'API |
version | v4.2 | v3.13, v4.0, v4.1 ou v4.2 |
preset | s1.small | Une préconfiguration de GET /rabbitmq/v1alpha1/presets (séries u1, s1 et m1) ; non modifiable après la création |
size | 10 | Taille du disque de chaque nœud, en Go (1 à 4096) |
replicas | 3 | La console propose 1, 3 ou 5 ; le mode (un nœud ou plusieurs) ne peut plus changer après la création |
external | true | Accès externe depuis Internet |
2. Créer le vhost demo :
curl -sS -X POST "$HIKUBE_API/rabbitmq/v1alpha1/projects/$PROJECT_ID/clusters/rabbitdemo/vhosts" \
-H "X-Hikube-Api-Key: $HIKUBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"vhostName": "demo"}'
3. Créer l'utilisateur appuser, administrateur du vhost demo. Les droits sont une table « nom du vhost → rôle », avec le rôle admin ou readonly :
curl -sS -X POST "$HIKUBE_API/rabbitmq/v1alpha1/projects/$PROJECT_ID/clusters/rabbitdemo/users" \
-H "X-Hikube-Api-Key: $HIKUBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"username": "appuser",
"config": {
"vhosts": {
"demo": {"role": "admin"}
}
}
}' | jq '{username, password}'
Les noms de vhost et d'utilisateur acceptés par l'API se limitent aux minuscules, chiffres et tirets.
La réponse de création de l'utilisateur contient le champ password. Il n'est renvoyé qu'ici : enregistrez-le aussitôt dans votre gestionnaire de secrets. En cas de perte, voir Gérer les vhosts et utilisateurs.
Étape 3 : Vérifier l'état du cluster
- Console
- API
- Dans la liste Clusters RabbitMQ, le cluster apparaît avec le statut En création, puis Prêt lorsqu'il est opérationnel.
- Cliquez sur le cluster pour ouvrir sa page de détail :
- Informations générales : Version, Réplicas, Taille du volume ;
- VHosts et Utilisateurs : les éléments créés par l'assistant ;
- Connexion : les zones d'adresses Interne et Externe, et le Statut.
curl -sS "$HIKUBE_API/rabbitmq/v1alpha1/projects/$PROJECT_ID/clusters/rabbitdemo" \
-H "X-Hikube-Api-Key: $HIKUBE_API_KEY" | jq '{name, status, version, replicas, size, external, host, internalHost}'
curl -sS "$HIKUBE_API/rabbitmq/v1alpha1/projects/$PROJECT_ID/clusters/rabbitdemo/vhosts" \
-H "X-Hikube-Api-Key: $HIKUBE_API_KEY" | jq '.vhosts[] | {vhostName, roles}'
curl -sS "$HIKUBE_API/rabbitmq/v1alpha1/projects/$PROJECT_ID/clusters/rabbitdemo/users" \
-H "X-Hikube-Api-Key: $HIKUBE_API_KEY" | jq '.users[] | {username, vhosts: .config.vhosts}'
Résultat attendu : status passe de provisioning à ready (error en cas d'échec) ; host contient l'adresse publique lorsque external vaut true, internalHost l'hôte interne joignable depuis les ressources du projet ; le vhost demo liste appuser dans roles.admin.
Étape 4 : Récupérer les identifiants
- Console
- API
Pour vous connecter, il vous faut :
| Information | Où la trouver |
|---|---|
| Nom d'utilisateur | Section Utilisateurs de la page du cluster |
| Mot de passe | Copié à l'écran Résumé de l'assistant (étape 2) |
| VHost | Section VHosts de la page du cluster |
| Hôte | Section Connexion : zone Interne depuis le projet, zone Externe depuis Internet |
| Port | 5672 (AMQP) |
La zone Interne affiche toujours l'hôte interne du cluster, joignable depuis les VM et les clusters Kubernetes du projet. La zone Externe affiche l'adresse publique lorsque l'Accès externe est activé ; sinon elle indique Désactivé, et « En attente d'attribution… » tant que l'adresse n'est pas attribuée. Copiez l'adresse avec le bouton de copie.
L'écran Résumé de l'assistant affiche aussi, lorsque l'hôte est déjà connu, une chaîne de connexion de la forme :
amqp://app-user:<password>@<hôte>:5672
| Information | Où la trouver |
|---|---|
| Nom d'utilisateur | username de GET .../clusters/rabbitdemo/users |
| Mot de passe | password de la réponse de création de l'utilisateur (étape 2) ; aucun GET ne le renvoie |
| VHost | vhostName de GET .../clusters/rabbitdemo/vhosts |
| Hôte | host de GET .../clusters/rabbitdemo, renseigné lorsque external vaut true |
| Port | 5672 (AMQP) |
curl -sS "$HIKUBE_API/rabbitmq/v1alpha1/projects/$PROJECT_ID/clusters/rabbitdemo" \
-H "X-Hikube-Api-Key: $HIKUBE_API_KEY" | jq -r '.host'
Tant que l'adresse n'est pas attribuée, host est vide.
Étape 5 : Connexion et test
Créez le script suivant en remplaçant l'hôte et le mot de passe par vos valeurs :
import pika
credentials = pika.PlainCredentials('app-user', '<password>')
parameters = pika.ConnectionParameters(
host='<hôte>',
port=5672,
virtual_host='demo',
credentials=credentials,
)
connection = pika.BlockingConnection(parameters)
channel = connection.channel()
# Déclaration d'une quorum queue (répliquée sur les nœuds du cluster)
channel.queue_declare(queue='test', durable=True, arguments={'x-queue-type': 'quorum'})
# Envoi d'un message
channel.basic_publish(exchange='', routing_key='test', body='Hello Hikube!')
print("Message envoyé avec succès")
# Lecture du message
method, properties, body = channel.basic_get(queue='test', auto_ack=True)
print(f"Message reçu : {body.decode()}")
connection.close()
python test_rabbitmq.py
Résultat attendu :
Message envoyé avec succès
Message reçu : Hello Hikube!
Étape 6 : Dépannage rapide
| Symptôme | Causes fréquentes | Action |
|---|---|---|
| Le cluster reste En création | Provisionnement en cours | Patientez quelques minutes ; si le statut ne change pas, consultez le dépannage |
| Statut Erreur | La plateforme n'a pas pu appliquer la création ou la dernière modification du cluster | Contactez le support en indiquant le nom et l'identifiant du cluster |
ACCESS_REFUSED à la connexion | Mot de passe erroné, ou utilisateur sans droit sur le vhost | Vérifiez le vhost dans Gérer les accès ; régénérez le mot de passe si nécessaire |
| Connexion impossible (timeout) | Accès externe désactivé, mauvais hôte ou port | Vérifiez la zone Externe de la section Connexion (depuis le projet, la zone Interne) ; le port AMQP est 5672 |
NOT_FOUND - no vhost | Nom de vhost incorrect dans le client | Utilisez exactement le nom affiché dans la section VHosts |
Étape 7 : Nettoyage
- Console
- API
- Ouvrez la page de détail du cluster et cliquez sur Supprimer (ou, depuis la liste, ouvrez le menu d'actions du cluster et choisissez Supprimer le cluster).
- Dans la fenêtre de confirmation, saisissez le nom exact du cluster dans Nom de la ressource à confirmer.
- Cliquez sur Supprimer définitivement.
curl -sS -X DELETE "$HIKUBE_API/rabbitmq/v1alpha1/projects/$PROJECT_ID/clusters/rabbitdemo" \
-H "X-Hikube-Api-Key: $HIKUBE_API_KEY"
Une réponse 200 avec un objet vide {} confirme la suppression. L'API ne demande pas de confirmation.
Cette action est irréversible : le cluster, ses vhosts, ses utilisateurs et tous les messages stockés sont définitivement supprimés.
Résumé
Vous avez créé depuis la console :
- Un cluster RabbitMQ de 3 nœuds en haute disponibilité
- Un vhost et un utilisateur administrateur de ce vhost
- Une connexion AMQP fonctionnelle depuis votre poste