Skip to content

Share TLS config between RabbitMQ plugins by default #267

@ferozjilla

Description

@ferozjilla

Is your feature request related to a problem? Please describe.

TLS for AMQP can be enabled by following - https://www.rabbitmq.com/kubernetes/operator/using-operator.html#tls-conf.

TLS for other RabbitMQ plugins - the management plugin for example, must be done through a few CR changes. For example, by configuring the TLS properties for the plugin through additionalConfig and opening the TLS port through the statefulSetOverride.

The extra work for enabling TLS for plugins may not be justified given that in most cases:

  1. When a user enables TLS, they wish to enable TLS for all plugins and not just AMQP
  2. The same TLS credentials are used across plugins anyway

This most cases belief came up in our public slack channel and was confirmed by a member of the core team, and a platform architect.

Given this, we can extend the AMQP TLS setting to all plugins.

Scenario: TLS is configured for all enabled plugins
Given I deploy a RabbitMQ cluster with `spec.tls` set, and the plugins - management and stomp
When I try with contact RabbitMQ over the default TLS ports for each of the plugins - amqp, management, stomp
Then the connection succeeds and uses TLS

Scenario: Adding a plugin when TLS is enabled
Given I have a RabbitMQ cluster with TLS enabled
And I update the cluster by adding the MQTT plugin in the `additionalPlugins` section
When I try to connect to RabbitMQ using MQTTS over the default TLS port for MQTT
Then the connection succeeds and uses TLS

Scenario: Overriding the default TLS settings
Given I have a RabbitMQ cluster with TLS enabled and the management plugin
And I update the cluster to change the TLS port for management to 15678
By adding `management.ssl.port = 15678` to the `additionalConfig`
By opening port 15678 using the `statefulSetOverride`
When I try to connect over the new port
Then the connection succeeds and uses TLS

Scenario: Disable non-ssl listeners
Given I have a RabbitMQ cluster with TLS enabled and the management plugin
When I try to connect to the non-TLS management port (15672)
Then I see that the connection fails

Additional Context

RabbitMQ ships with some tier-1 plugins. We will need to decide which of these plugins to auto-enable TLS for. For example, enabling TLS for the management plugin involves much the same work as enabling TLS for AMQP. However, for the shovel and federation plugins, since another cluster is involved, this may be trickier.

The changes for AMQP TLS can be found in it's PR.

Metadata

Metadata

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions