RabbitMQ is an open source message broker that implements the Advanced Message Queuing Protocol (AMQP) to serve a variety of messaging applications.
rabbitmq-k8s-app-architecture.png
RabbitMQ cluster is deployed within a Kubernetes StatefulSet. The
configuration is attached with a ConfigMap (which contents is copied to
writable location at /etc/rabbitmq by an init container). An Erlang cookie
required by the application is generated dynamically and passed to the
deployment with a Secret object.
The deployment creates two services:
- A client-facing service, to be used for client connections to the RabbitMQ cluster with port forwarding or using a LoadBalancer
- Service discovery - a headless service for connections between the RabbitMQ nodes.
The RabbitMQ K8s application has the following ports configured:
- ports
5671and5672are enabled for communication from AMQP clients - port
15692is enabled to Prometheus metrics for/metricsendpoint - port
15672is enabled for RabbitMQ administration over HTTP API - port
25672is enabled as a distribution port for communication with CLI and for clustering purpose tools
This deployment applies an High Availability (HA) policy, which configures
mirroring for all RabbitMQ nodes in the cluster, and automatically synchronizes
with new mirrors that join the cluster. It is enabled as part of the
installation, on each node's postStart event.
To read more about rabbitmq on kubernetes,refer to below documentation: https://www.rabbitmq.com/clustering.html