Aller au contenu principal
Version: 2.0.2

Référence API RabbitMQ

Cette référence détaille la configuration et le fonctionnement des clusters RabbitMQ sur Hikube, incluant la gestion des utilisateurs, des vhosts, et des queues. Les déploiements s’appuient sur l’opérateur officiel RabbitMQ, garantissant une gestion simplifiée, hautement disponible et conforme aux bonnes pratiques du projet upstream.


Structure de Base

Ressource RabbitMQ

Exemple de configuration YAML

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

Paramètres

Paramètres Communs

ParamètreTypeDescriptionDéfautRequis
externalboolActive l’accès externe au cluster RabbitMQ (exposition hors du cluster)falseNon
replicasintNombre de réplicas RabbitMQ (nœuds du cluster)3Oui
resourcesobjectConfiguration explicite CPU et mémoire pour chaque réplique RabbitMQ{}Non
resources.cpuquantityCPU disponible par répliquenullNon
resources.memoryquantityRAM disponible par répliquenullNon
resourcesPresetstringPreset de ressources (nano, micro, small, medium, large, xlarge, 2xlarge)"small"Oui
sizequantityTaille du volume persistant utilisé pour les données RabbitMQ10GiOui
storageClassstringStorageClass utilisé pour stocker les données RabbitMQ""Non

Exemple YAML

rabbitmq.yaml
replicas: 3
resourcesPreset: medium
size: 20Gi
storageClass: replicated
external: true

Paramètres Utilisateurs

ParamètreTypeDescriptionDéfautRequis
usersmap[string]objectListe des utilisateurs RabbitMQ{}Oui
users[name].passwordstringMot de passe de l’utilisateurnullOui

Exemple YAML

rabbitmq.yaml
users:
admin:
password: "securepassword"
app:
password: "apppassword123"

Paramètres Virtual Hosts (vhosts)

ParamètreTypeDescriptionDéfautRequis
vhostsmap[string]objectListe des virtual hosts RabbitMQ{}Non
vhosts[name].rolesobjectRôles et permissions associés à ce virtual host{}Non
vhosts[name].roles.admin[]stringListe des utilisateurs ayant un accès administrateur sur ce vhost[]Non
vhosts[name].roles.readonly[]stringListe des utilisateurs avec accès lecture seule[]Non

Exemple YAML

rabbitmq.yaml
vhosts:
"default":
roles:
admin: ["admin"]
readonly: ["app"]
"analytics":
roles:
admin: ["admin"]
readonly: ["analyst"]

resources et resourcesPreset

Le champ resources permet de définir explicitement la configuration CPU et mémoire de chaque réplique RabbitMQ. Si ce champ est laissé vide, la valeur du paramètre resourcesPreset est utilisée.

Exemple YAML

rabbitmq.yaml
resources:
cpu: 4000m
memory: 4Gi

⚠️ Si resources est défini, la valeur de resourcesPreset est ignorée.

Preset nameCPUMémoire
nano100m128Mi
micro250m256Mi
small500m512Mi
medium500m1Gi
large12Gi
xlarge24Gi
2xlarge48Gi

Exemples Complets

Cluster de Production

rabbitmq-production.yaml
apiVersion: apps.cozystack.io/v1alpha1
kind: RabbitMQ
metadata:
name: production
spec:
replicas: 3
resources:
cpu: 2000m
memory: 4Gi
size: 20Gi
storageClass: replicated
external: false

users:
admin:
password: SecureAdminPassword
appuser:
password: SecureAppPassword
monitoring:
password: SecureMonitoringPassword

vhosts:
production:
roles:
admin: ["admin"]
readonly: ["monitoring"]
analytics:
roles:
admin: ["admin"]
readonly: ["appuser"]

Cluster de Développement

rabbitmq-development.yaml
apiVersion: apps.cozystack.io/v1alpha1
kind: RabbitMQ
metadata:
name: development
spec:
replicas: 1
resourcesPreset: nano
size: 5Gi
external: true

users:
dev:
password: devpassword

vhosts:
default:
roles:
admin: ["dev"]

Bonnes Pratiques
  • 3 réplicas pour les quorum queues : avec 3 noeuds, RabbitMQ utilise les quorum queues pour garantir la durabilité des messages en cas de panne
  • Vhosts par application : isolez chaque application dans un vhost dédié pour limiter l'impact en cas de surcharge
  • Rôles distincts : séparez les utilisateurs admin, applicatifs et de monitoring avec des permissions adaptées
  • Stockage répliqué : utilisez storageClass: replicated pour protéger les données contre la perte d'un noeud
Attention
  • Les suppressions sont irréversibles : la suppression d'une ressource RabbitMQ entraîne la perte définitive de toutes les queues et messages
  • Réplicas sous 3 : avec moins de 3 réplicas, les quorum queues ne peuvent pas garantir la durabilité des messages en cas de panne
  • Ports exposés : si external: true, les ports AMQP (5672) et Management UI (15672) sont accessibles depuis l'extérieur — sécurisez les identifiants

Références externes