Vai al contenuto principale
Versione: 3.0.0-alpha (Diátaxis)

Riferimento API RabbitMQ

Questo riferimento descrive in dettaglio la configurazione e il funzionamento dei cluster RabbitMQ su Hikube, inclusa la gestione degli utenti, dei vhost e delle code. I deployment si basano sull'operatore ufficiale RabbitMQ, garantendo una gestione semplificata, altamente disponibile e conforme alle buone pratiche del progetto upstream.


Struttura di Base

Risorsa RabbitMQ

Esempio di configurazione 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"]

Parametri

Parametri Comuni

ParametroTipoDescrizioneDefaultRichiesto
externalboolAttiva l'accesso esterno al cluster RabbitMQ (esposizione fuori dal cluster)falseNo
replicasintNumero di repliche RabbitMQ (nodi del cluster)3
resourcesobjectConfigurazione esplicita di CPU e memoria per ogni replica RabbitMQ{}No
resources.cpuquantityCPU disponibile per replicanullNo
resources.memoryquantityRAM disponibile per replicanullNo
resourcesPresetstringPreset di risorse (nano, micro, small, medium, large, xlarge, 2xlarge)"small"
sizequantityDimensione del volume persistente utilizzato per i dati RabbitMQ10Gi
storageClassstringStorageClass utilizzata per archiviare i dati RabbitMQ""No

Esempio YAML

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

Parametri Utenti

ParametroTipoDescrizioneDefaultRichiesto
usersmap[string]objectLista degli utenti RabbitMQ{}
users[name].passwordstringPassword dell'utentenull

Esempio YAML

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

Parametri Virtual Host (vhost)

ParametroTipoDescrizioneDefaultRichiesto
vhostsmap[string]objectLista dei virtual host RabbitMQ{}No
vhosts[name].rolesobjectRuoli e permessi associati a questo virtual host{}No
vhosts[name].roles.admin[]stringLista degli utenti con accesso amministratore su questo vhost[]No
vhosts[name].roles.readonly[]stringLista degli utenti con accesso in sola lettura[]No

Esempio YAML

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

resources e resourcesPreset

Il campo resources consente di definire esplicitamente la configurazione CPU e memoria di ogni replica RabbitMQ. Se questo campo viene lasciato vuoto, viene utilizzato il valore del parametro resourcesPreset.

Esempio YAML

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

⚠️ Se resources è definito, il valore di resourcesPreset viene ignorato.

Nome PresetCPUMemoria
nano100m128Mi
micro250m256Mi
small500m512Mi
medium500m1Gi
large12Gi
xlarge24Gi
2xlarge48Gi

Esempi Completi

Cluster di Produzione

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 di Sviluppo

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"]

Buone Pratiche
  • 3 repliche per le quorum queue: con 3 nodi, RabbitMQ utilizza le quorum queue per garantire la durabilità dei messaggi in caso di guasto
  • Vhost per applicazione: isolate ogni applicazione in un vhost dedicato per limitare l'impatto in caso di sovraccarico
  • Ruoli distinti: separate gli utenti admin, applicativi e di monitoraggio con permessi adeguati
  • Archiviazione replicata: utilizzate storageClass: replicated per proteggere i dati dalla perdita di un nodo
Attenzione
  • Le eliminazioni sono irreversibili: l'eliminazione di una risorsa RabbitMQ comporta la perdita definitiva di tutte le code e i messaggi
  • Repliche sotto 3: con meno di 3 repliche, le quorum queue non possono garantire la durabilità dei messaggi in caso di guasto
  • Porte esposte: se external: true, le porte AMQP (5672) e Management UI (15672) sono accessibili dall'esterno — proteggete le credenziali

Riferimenti esterni