skills/kubeblocks-addon-rabbitmq/SKILL.md
Deploy and manage RabbitMQ clusters on KubeBlocks. RabbitMQ is an open-source message broker supporting AMQP, MQTT, and STOMP protocols. Use when the user mentions RabbitMQ, message broker, AMQP, message queue, or explicitly wants to create a RabbitMQ cluster. Provides cluster creation, connection methods (Management UI, rabbitmqctl), and Day-2 operations. For generic cluster creation across all engines, see kubeblocks-create-cluster. For Day-2 operations (scaling, etc.), use the corresponding operation skill.
npx skillsauth add apecloud/kubeblocks-skills kubeblocks-addon-rabbitmqInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Deploy RabbitMQ clusters on Kubernetes using KubeBlocks. RabbitMQ is a lightweight message broker supporting AMQP, MQTT, and STOMP. Multiple replicas form a cluster with queue mirroring and quorum queues. Default ports: 5672 (AMQP), 15672 (Management UI), 15692 (Prometheus metrics).
Official docs: https://kubeblocks.io/docs/preview/kubeblocks-for-rabbitmq/01-overview Quickstart: https://kubeblocks.io/docs/preview/kubeblocks-for-rabbitmq/02-quickstart
# Check if rabbitmq addon is installed
helm list -n kb-system | grep rabbitmq
# Install if missing
helm install kb-addon-rabbitmq kubeblocks/rabbitmq --namespace kb-system --version 1.0.0
| Topology | Value | Component | Use Case |
|---|---|---|---|
| Cluster Mode | clustermode | rabbitmq | Single topology; multiple replicas form a cluster with queue mirroring/quorum queues |
| Version | serviceVersion |
|---|---|
| RabbitMQ 3.8 | 3.8.34 |
| RabbitMQ 3.9 | 3.9.29 |
| RabbitMQ 3.10 | 3.10.25 |
| RabbitMQ 3.11 | 3.11.28 |
| RabbitMQ 3.12 | 3.12.14 |
| RabbitMQ 3.13 | 3.13.7 |
| RabbitMQ 4.0 | 4.0.9 |
| RabbitMQ 4.1 | 4.1.6 |
| RabbitMQ 4.2 | 4.2.1 |
List available versions: kubectl get cmpv rabbitmq
- [ ] Step 1: Ensure addon is installed
- [ ] Step 2: Create namespace
- [ ] Step 3: Create cluster (dry-run, then apply)
- [ ] Step 4: Wait for cluster to be ready
- [ ] Step 5: Connect (Management UI or rabbitmqctl)
helm list -n kb-system | grep rabbitmq
If not found:
helm install kb-addon-rabbitmq kubeblocks/rabbitmq --namespace kb-system --version 1.0.0
kubectl create namespace demo --dry-run=client -o yaml | kubectl apply -f -
apiVersion: apps.kubeblocks.io/v1
kind: Cluster
metadata:
name: rabbitmq-cluster
namespace: demo
spec:
clusterDef: rabbitmq
topology: clustermode
terminationPolicy: Delete
componentSpecs:
- name: rabbitmq
serviceVersion: "3.13.7"
replicas: 3
resources:
limits: {cpu: "0.5", memory: "0.5Gi"}
requests: {cpu: "0.5", memory: "0.5Gi"}
volumeClaimTemplates:
- name: data
spec:
accessModes: [ReadWriteOnce]
resources: {requests: {storage: 20Gi}}
Dry-run before apply:
kubectl apply -f cluster.yaml --dry-run=server
If dry-run succeeds:
kubectl apply -f cluster.yaml
kubectl -n demo get cluster rabbitmq-cluster -w
Success condition: STATUS shows Running. Typical duration: 1-2 minutes. Investigate after 10 min if stuck.
Check pods:
kubectl -n demo get pods -l app.kubernetes.io/instance=rabbitmq-cluster
Credentials are in Secret <clusterName>-<componentName>-account-root (e.g. rabbitmq-cluster-rabbitmq-account-root):
# Get credentials
NAME=$(kubectl get secrets -n demo rabbitmq-cluster-rabbitmq-account-root -o jsonpath='{.data.username}' | base64 -d)
PASSWD=$(kubectl get secrets -n demo rabbitmq-cluster-rabbitmq-account-root -o jsonpath='{.data.password}' | base64 -d)
# Port-forward Management UI (port 15672)
kubectl port-forward svc/rabbitmq-cluster-rabbitmq -n demo 15672:15672
Access http://localhost:15672 and log in with the credentials.
kubectl -n demo exec -it rabbitmq-cluster-rabbitmq-0 -- rabbitmqctl cluster_status
Cluster stuck in Creating:
kubectl -n demo describe cluster rabbitmq-cluster
kubectl -n demo get events --sort-by='.lastTimestamp'
Pod not starting:
kubectl -n demo logs rabbitmq-cluster-rabbitmq-0
Cluster formation issues:
| Operation | Skill | External Docs | |---|---|---| | Stop / Start / Restart | cluster-lifecycle | Docs | | Scale CPU / Memory | vertical-scaling | Docs | | Add / Remove replicas | horizontal-scaling | Docs | | Expand storage | volume-expansion | Docs | | Expose externally | expose-service | Docs |
Follow safety-patterns: dry-run before apply, confirm status after apply, pre-deletion checklist for delete.
devops
Expand persistent volume storage for KubeBlocks database clusters via OpsRequest. Requires the StorageClass to support volume expansion (allowVolumeExpansion=true). Use when the user needs more disk space, wants to increase storage, expand volumes, or resize PVCs. NOT for changing CPU/memory (see vertical-scaling) or adding more replicas (see horizontal-scaling). Note that volume shrinking is not supported by Kubernetes.
data-ai
Scale CPU and memory resources for KubeBlocks database clusters via OpsRequest (vertical scaling). Supports in-place updates when the feature gate is enabled. Use when the user wants to change, increase, decrease, resize, or adjust CPU or memory resources of a database cluster. NOT for adding/removing replicas or shards (see horizontal-scaling) or expanding disk storage (see volume-expansion).
data-ai
Upgrade the KubeBlocks operator itself via Helm. Covers update operator, upgrade to v1.0, update kubeblocks version, and CRD updates. Use when the user wants to upgrade KubeBlocks, update the operator, or upgrade to a new KubeBlocks release. NOT for upgrading database engine versions (see minor-version-upgrade).
development
Diagnostic guide for KubeBlocks-managed database clusters. Use when the user reports troubleshoot, debug, diagnose, not working, error, failed, stuck, CrashLoopBackOff, cluster exception, or similar problems with their database cluster. This skill guides the agent through diagnostic steps — it does NOT perform actions.