Zum Hauptinhalt springen
Version: 3.0.0-alpha (Diátaxis)

API-Referenz RabbitMQ

Diese Referenz beschreibt die Konfiguration und Funktionsweise der RabbitMQ-Cluster auf Hikube, einschließlich der Verwaltung von Benutzern, Vhosts und Queues. Die Bereitstellungen basieren auf dem offiziellen RabbitMQ-Operator, der eine vereinfachte, hochverfügbare und den Best Practices des Upstream-Projekts konforme Verwaltung gewährleistet.


Grundstruktur

RabbitMQ-Ressource

Beispiel einer YAML-Konfiguration

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

Parameter

Allgemeine Parameter

ParameterTypBeschreibungStandardErforderlich
externalboolAktiviert den externen Zugang zum RabbitMQ-Cluster (Exposition außerhalb des Clusters)falseNein
replicasintAnzahl der RabbitMQ-Replikate (Cluster-Knoten)3Ja
resourcesobjectExplizite CPU- und Speicherkonfiguration pro RabbitMQ-Replikat{}Nein
resources.cpuquantityVerfügbare CPU pro ReplikatnullNein
resources.memoryquantityVerfügbarer RAM pro ReplikatnullNein
resourcesPresetstringRessourcen-Preset (nano, micro, small, medium, large, xlarge, 2xlarge)"small"Ja
sizequantityGröße des persistenten Volumes für RabbitMQ-Daten10GiJa
storageClassstringStorageClass für die Speicherung der RabbitMQ-Daten""Nein

YAML-Beispiel

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

Benutzerparameter

ParameterTypBeschreibungStandardErforderlich
usersmap[string]objectListe der RabbitMQ-Benutzer{}Ja
users[name].passwordstringPasswort des BenutzersnullJa

YAML-Beispiel

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

Virtual-Host-Parameter (Vhosts)

ParameterTypBeschreibungStandardErforderlich
vhostsmap[string]objectListe der RabbitMQ Virtual Hosts{}Nein
vhosts[name].rolesobjectRollen und Berechtigungen für diesen Virtual Host{}Nein
vhosts[name].roles.admin[]stringListe der Benutzer mit Administratorzugriff auf diesen Vhost[]Nein
vhosts[name].roles.readonly[]stringListe der Benutzer mit Lesezugriff[]Nein

YAML-Beispiel

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

resources und resourcesPreset

Das Feld resources ermöglicht die explizite Definition der CPU- und Speicherkonfiguration jedes RabbitMQ-Replikats. Wenn dieses Feld leer gelassen wird, wird der Wert des Parameters resourcesPreset verwendet.

YAML-Beispiel

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

⚠️ Wenn resources definiert ist, wird der Wert von resourcesPreset ignoriert.

Preset-NameCPUSpeicher
nano100m128Mi
micro250m256Mi
small500m512Mi
medium500m1Gi
large12Gi
xlarge24Gi
2xlarge48Gi

Vollständige Beispiele

Produktionscluster

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

Entwicklungscluster

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

Best Practices
  • 3 Replikate für Quorum Queues: Mit 3 Knoten verwendet RabbitMQ die Quorum Queues, um die Nachrichtenhaltbarkeit bei Ausfällen zu gewährleisten
  • Vhosts pro Anwendung: Isolieren Sie jede Anwendung in einem dedizierten Vhost, um die Auswirkungen bei Überlastung zu begrenzen
  • Getrennte Rollen: Trennen Sie Admin-, Anwendungs- und Monitoring-Benutzer mit angepassten Berechtigungen
  • Replizierter Speicher: Verwenden Sie storageClass: replicated, um die Daten vor dem Verlust eines Knotens zu schützen
Achtung
  • Löschungen sind unwiderruflich: Das Löschen einer RabbitMQ-Ressource führt zum endgültigen Verlust aller Queues und Nachrichten
  • Weniger als 3 Replikate: Mit weniger als 3 Replikaten können die Quorum Queues die Nachrichtenhaltbarkeit bei Ausfällen nicht gewährleisten
  • Exponierte Ports: Wenn external: true, sind die Ports AMQP (5672) und Management UI (15672) von außen zugänglich — sichern Sie die Zugangsdaten

Externe Referenzen