RabbitMQ Cluster Operator Plugin for kubectl
Installing the RabbitMQ Cluster Operator plugin for kubectl makes installing the RabbitMQ Cluster Kubernetes Operator into any Kubernetes instance easier because each plugin command automates many interactions with the kubernetes API and the RabbitMQ Cluster Operator. The plugin also includes several commands for common workflows with RabbitMQ clusters.
To find out more about using the RabbitMQ Cluster operator and how to deploy Custom Resource objects it manages, refer to the Using RabbitMQ Cluster Operator information.
Before Installing the RabbitMQ Cluster Operator Plugin for kubectl
Ensure you have the following tools installed:
After installing krew, verify the installation:
kubectl krew
Install the Cluster Operator Plugin for kubectl
When krew is setup, you can now install the RabbitMQ Cluster Operator plugin.
kubectl krew install rabbitmq
To verify the plugin is installed, get the list of available commands:
kubectl rabbitmq help
# USAGE:
#   Install RabbitMQ Cluster Operator (optionally provide image to use a relocated image or a specific version)
#     kubectl rabbitmq install-cluster-operator [IMAGE]
# [...]
Using the Cluster Operator Plugin for kubectl
Create a RabbitMQ Cluster
kubectl rabbitmq create INSTANCE
The previous command creates a RabbitMQ cluster with some basic configuration where only the cluster name is configured.
Get a RabbitMQ Cluster
kubectl rabbitmq get INSTANCE
Display all of the kubernetes resources associated with the named RabbitMQ cluster including pods, configmaps, statefulsets, services, and secrets.
NAME                     READY   STATUS    RESTARTS   AGE
pod/hello-rmq-server-0   0/1     Pending   0          5h31m
NAME                               DATA   AGE
configmap/hello-rmq-plugins-conf   1      5h31m
configmap/hello-rmq-server-conf    2      5h31m
NAME                                READY   AGE
statefulset.apps/hello-rmq-server   0/1     5h31m
NAME                      TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)              AGE
service/hello-rmq         ClusterIP   10.100.156.4   none        5672/TCP,15672/TCP   5h31m
service/hello-rmq-nodes   ClusterIP   None           none        4369/TCP,25672/TCP   5h31m
NAME                             TYPE     DATA   AGE
secret/hello-rmq-default-user    Opaque   3      5h31m
secret/hello-rmq-erlang-cookie   Opaque   1      5h31m
List all RabbitMQ Clusters
kubectl rabbitmq list
The previous commands lists all RabbitMQ clusters deployed by the RabbitMQ cluster operator on the target kubernetes instance.
Delete a RabbitMQ Cluster
kubectl rabbitmq delete INSTANCE
The previous command deletes a RabbitMQ cluster, or multiple RabbitMQ clusters. When deleting multiple RabbitMQ clusters, provide a space separated list.
kubectl rabbitmq delete rmq1 rmq2 rmq3
Print Default User Secrets for the RabbitMQ Cluster
kubectl rabbitmq secrets INSTANCE
The previous command lists the default user secrets for the named RabbitMQ cluster.
Open the RabbitMQ Management UI
kubectl rabbitmq manage INSTANCE
The previous command opens the RabbitMQ Management UI in a browser.
Set the Log Level on all RabbitMQ Nodes for Debugging
kubectl rabbitmq debug INSTANCE
The previous command sets the log level on all nodes to debug. For a detailed breakdown on RabbitMQ logging, refer to the Logging information.
Tail Logs
kubectl rabbitmq tail INSTANCE
After running the previous command, you will see all log output for the remote RabbitMQ nodes on your console. Note, to run the previous command, you must have the tail plugin installed.
Install the tail plugin by running the following command:
kubectl krew install tail
Observe Nodes on the RabbitMQ Cluster
kubectl rabbitmq observe INSTANCE INDEX
The previous command opens the rabbitmq-diagnostics observer interface for a given node.
Turn on All Feature Flags
kubectl rabbitmq enable-all-feature-flags INSTANCE 
The previous command uses rabbitmqctl to activate or turn on all possible feature flags.
Pause Reconciliation on the RabbitMQ Cluster
kubectl rabbitmq pause-reconciliation INSTANCE 
The previous command adds the label "rabbitmq.com/pauseReconciliation=true" to the target RabbitMQ cluster. The label prevents the Operator from watching and updating the instance.
Resume Reconciliation on the RabbitMQ Cluster
kubectl rabbitmq resume-reconciliation INSTANCE 
The previous command instructs the Operator to resume reconciliation for a RabbitMQ cluster.
List Instances with Paused Reconciliation
kubectl rabbitmq [list pause reconciliation instances](list-pause-reconciliation-instances) INSTANCE
The previous command lists all instances that are not being reconciled by the Operator.
Perf Test
kubectl rabbitmq perf-test INSTANCE --rate 100
The previous command runs perf-test against an instance. You can pass as many perf test parameters as you like here.
To monitor PerfTest, add the following ServiceMonitor:
  apiVersion: monitoring.coreos.com/v1
  kind: ServiceMonitor
  metadata:
    name: kubectl-perf-test
  spec:
    endpoints:
    - interval: 15s
      targetPort: 8080
    selector:
      matchLabels:
        app: perf-test
Please submit feedback and feature requests for the RabbitMQ Cluster Operator on GitHub.