The RabbitMQ team develop and maintain two kubernetes operators:
Kubernetes Operators are software extensions to Kubernetes that provide custom resources for management of applications, services and their components.
In this and other Operator related guides, we use "Operator" (with a capital O) to refer to a Kubernetes Operator pattern implementation and "operator" (with a lowercase o) to refer to a technical operations engineer (administrator).
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.
Deleted 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.
RabbitMQ Messaging Topology Operator supports managing RabbitMQ messaging topologies objects through kubernetes declarative API.
Documentation of Messaging Topology Operator structured as following:
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.