The RabbitMQ team develop and maintain two kubernetes operators: the RabbitMQ Cluster Kubernetes Operator and the RabbitMQ Messaging Topology Operator.
The RabbitMQ Cluster Kubernetes Operator automates provisioning, management, and operations of RabbitMQ clusters running on Kubernetes.
The RabbitMQ Messaging Topology Operator manages RabbitMQ messaging topologies within a RabbitMQ cluster deployed via the RabbitMQ Cluster Kubernetes Operator.
Kubernetes Operators are software extensions to Kubernetes that provide custom resources for management of applications, services and their components.
In this information and other Operator related information, "Operator" (with a capital O) is used to refer to a Kubernetes Operator pattern implementation and "operator" (with a lowercase o) is used to refer to a technical operations engineer (administrator).
The RabbitMQ Cluster Kubernetes Operator provides a consistent and easy way to deploy RabbitMQ clusters to Kubernetes and run them, including "day two" (continuous) operations. RabbitMQ clusters deployed using the Operator can be used by applications running on Kubernetes or outside of Kubernetes.
Documentation of Cluster Operator spans several guides:
In addition, a separate Operator for managing cluster objects collectively known as the messaging topology: virtual hosts, user, queues, etc. It is covered in the following guides:
The Operator provides the following key features:
RabbitMQ Cluster Kubernetes Operator was designed with the following ideas and concepts in mind:
Following these ideas, the Operator will not modify an existing
RabbitmqCluster spec. This implies that, when the Operator is upgraded, it will not automatically update existing instances of
RabbitmqCluster with new defaults, if any, or to the latest version of RabbitMQ.
The only exception to this, is when a field is removed from the spec, by user action, the Operator will set the default value.
Secret objects will be recreated by the Kubernetes Operator but the newly generated secret value will not be deployed to the RabbitMQ cluster. For example, if the
Secret with administrator credentials is deleted, a new
Secret will be created with new username and password, but those will not be reflected in the RabbitMQ cluster. It works the same way for any
Secret value, e.g. the value of the shared inter-node authentication secret known as the Erlang cookie.
Cluster Operator does not support disabling any RabbitMQ feature flags. The Operator lists all available feature flags and enables all of them at cluster start.
The RabbitMQ Messaging Topology Operator supports managing RabbitMQ messaging topologies objects through the kubernetes declarative API.
Documentation for the Messaging Topology Operator is structured as follows:
Both Operators are open source. You can contribute to its development on GitHub:
Both Operators are released under the Mozilla Public License 2.0.
RabbitMQ Operators are intended to be used with any Kubernetes-compliant platform. If you encounter an issue with a particular distribution of Kubernetes, please check for known issues in the GitHub repo.
For more information on which Kubernetes & RabbitMQ server versions are supported by the Operator, please consult the README.