From 4a2884cdeb5267bf94dcbb8c8ae30ca71d453323 Mon Sep 17 00:00:00 2001 From: Juan Ariza Toledano Date: Wed, 8 Jul 2020 13:08:07 +0200 Subject: [PATCH] [bitnami/rabbitmq] Add support for multiple LDAP servers (#3066) Signed-off-by: juan131 --- bitnami/rabbitmq/Chart.yaml | 2 +- bitnami/rabbitmq/README.md | 16 ++++++++-------- bitnami/rabbitmq/templates/_helpers.tpl | 7 ++++--- bitnami/rabbitmq/templates/statefulset.yaml | 10 +++++----- bitnami/rabbitmq/values-production.yaml | 17 +++++++++++++---- bitnami/rabbitmq/values.yaml | 16 +++++++++++++--- 6 files changed, 44 insertions(+), 24 deletions(-) diff --git a/bitnami/rabbitmq/Chart.yaml b/bitnami/rabbitmq/Chart.yaml index b6a06d2dd..137acf26a 100644 --- a/bitnami/rabbitmq/Chart.yaml +++ b/bitnami/rabbitmq/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v1 name: rabbitmq -version: 7.4.8 +version: 7.5.0 appVersion: 3.8.5 description: Open source message broker software that implements the Advanced Message Queuing Protocol (AMQP) keywords: diff --git a/bitnami/rabbitmq/README.md b/bitnami/rabbitmq/README.md index 4fb315bb9..f36f11d56 100644 --- a/bitnami/rabbitmq/README.md +++ b/bitnami/rabbitmq/README.md @@ -108,9 +108,9 @@ The following table lists the configurable parameters of the RabbitMQ chart and | `extraConfiguration` | Extra configuration to be appended to RabbitMQ configuration | Check `values.yaml` file | | `advancedConfiguration` | Extra configuration (in classic format) | Check `values.yaml` file | | `ldap.enabled` | Enable LDAP support | `false` | -| `ldap.server` | LDAP server | `""` | -| `ldap.port` | LDAP port | `389` | -| `ldap.user_dn_pattern` | DN used to bind to LDAP | `cn=${username},dc=example,dc=org` | +| `ldap.servers` | List of LDAP servers hostnames | `[]` | +| `ldap.port` | LDAP servers port | `389` | +| `ldap.user_dn_pattern` | Pattern used to translate the provided username into a value to be used for the LDAP bind | `cn=${username},dc=example,dc=org` | | `ldap.tls.enabled` | Enable TLS for LDAP connections (check advancedConfiguration parameter in values.yml) | `false` | ### Statefulset parameters @@ -432,16 +432,16 @@ extraConfiguration: | LDAP support can be enabled in the chart by specifying the `ldap.` parameters while creating a release. The following parameters should be configured to properly enable the LDAP support in the chart. - `ldap.enabled`: Enable LDAP support. Defaults to `false`. -- `ldap.server`: LDAP server host. No defaults. -- `ldap.port`: LDAP server port. `389`. -- `ldap.user_dn_pattern`: DN used to bind to LDAP. `cn=${username},dc=example,dc=org`. +- `ldap.servers`: List of LDAP servers hostnames. No defaults. +- `ldap.port`: LDAP servers port. `389`. +- `ldap.user_dn_pattern`: Pattern used to translate the provided username into a value to be used for the LDAP bind. Defaults to `cn=${username},dc=example,dc=org`. - `ldap.tls.enabled`: Enable TLS for LDAP connections. Defaults to `false`. For example: ```console -ldap.enabled="true" -ldap.server="my-ldap-server" +ldap.enabled=true +ldap.serverss[0]="my-ldap-server" ldap.port="389" ldap.user_dn_pattern="cn=${username},dc=example,dc=org" ``` diff --git a/bitnami/rabbitmq/templates/_helpers.tpl b/bitnami/rabbitmq/templates/_helpers.tpl index 1ff8a59aa..20dcae3ac 100644 --- a/bitnami/rabbitmq/templates/_helpers.tpl +++ b/bitnami/rabbitmq/templates/_helpers.tpl @@ -173,14 +173,15 @@ Validate values of rabbitmq - LDAP support */}} {{- define "rabbitmq.validateValues.ldap" -}} {{- if .Values.ldap.enabled }} -{{- if not (and .Values.ldap.server .Values.ldap.port .Values.ldap.user_dn_pattern) }} +{{- $serversListLength := len .Values.ldap.servers }} +{{- if or (not (gt $serversListLength 0)) (not (and .Values.ldap.port .Values.ldap.user_dn_pattern)) }} rabbitmq: LDAP - Invalid LDAP configuration. When enabling LDAP support, the parameters "ldap.server", + Invalid LDAP configuration. When enabling LDAP support, the parameters "ldap.servers", "ldap.port", and "ldap. user_dn_pattern" are mandatory. Please provide them: $ helm install {{ .Release.Name }} bitnami/rabbitmq \ --set ldap.enabled=true \ - --set ldap.server="lmy-ldap-server" \ + --set ldap.servers[0]="lmy-ldap-server" \ --set ldap.port="389" \ --set user_dn_pattern="cn=${username},dc=example,dc=org" {{- end -}} diff --git a/bitnami/rabbitmq/templates/statefulset.yaml b/bitnami/rabbitmq/templates/statefulset.yaml index 6d63161c4..ef162f497 100644 --- a/bitnami/rabbitmq/templates/statefulset.yaml +++ b/bitnami/rabbitmq/templates/statefulset.yaml @@ -122,14 +122,14 @@ spec: - name: RABBITMQ_NODE_NAME value: "rabbit@$(MY_POD_NAME)" {{- end }} - {{- if .Values.ldap.enabled }} - name: RABBITMQ_LDAP_ENABLE - value: "yes" + value: {{ ternary "yes" "no" .Values.ldap.enabled | quote }} + {{- if .Values.ldap.enabled }} - name: RABBITMQ_LDAP_TLS value: {{ ternary "yes" "no" .Values.ldap.tls.enabled | quote }} - - name: RABBITMQ_LDAP_SERVER - value: {{ .Values.ldap.server }} - - name: RABBITMQ_LDAP_SERVER_PORT + - name: RABBITMQ_LDAP_SERVERS + value: {{ .Values.ldap.servers | join "," | quote }} + - name: RABBITMQ_LDAP_SERVERS_PORT value: {{ .Values.ldap.port | quote }} - name: RABBITMQ_LDAP_USER_DN_PATTERN value: {{ .Values.ldap.user_dn_pattern }} diff --git a/bitnami/rabbitmq/values-production.yaml b/bitnami/rabbitmq/values-production.yaml index c807e0c0f..b50384c55 100644 --- a/bitnami/rabbitmq/values-production.yaml +++ b/bitnami/rabbitmq/values-production.yaml @@ -209,8 +209,9 @@ configuration: |- {{- if .Values.ldap.enabled }} auth_backends.1 = rabbit_auth_backend_ldap auth_backends.2 = internal - auth_ldap.servers.1 = {{ .Values.ldap.server }} - auth_ldap.port = {{ .Values.ldap.port }} + {{- range $index, $server := .Values.ldap.servers }} + auth_ldap.servers.{{ add $index 1 }} = {{ $server }} + {{- end }} auth_ldap.port = {{ .Values.ldap.port }} auth_ldap.user_dn_pattern = {{ .Values.ldap.user_dn_pattern }} {{- if .Values.ldap.tls.enabled }} auth_ldap.use_ssl = true @@ -257,11 +258,19 @@ advancedConfiguration: |- ## ldap: enabled: false - server: "" + ## List of LDAP servers hostnames + ## + servers: [] + ## LDAP servers port + ## port: "389" + ## Pattern used to translate the provided username into a value to be used for the LDAP bind + ## ref: https://www.rabbitmq.com/ldap.html#usernames-and-dns + ## user_dn_pattern: cn=${username},dc=example,dc=org tls: - # If you enabled TLS/SSL you can set advaced options using the advancedConfiguration parameter. + ## If you enabled TLS/SSL you can set advaced options using the advancedConfiguration parameter. + ## enabled: false ## extraVolumes and extraVolumeMounts allows you to mount other volumes diff --git a/bitnami/rabbitmq/values.yaml b/bitnami/rabbitmq/values.yaml index d5a9b8930..6e3442715 100644 --- a/bitnami/rabbitmq/values.yaml +++ b/bitnami/rabbitmq/values.yaml @@ -209,7 +209,9 @@ configuration: |- {{- if .Values.ldap.enabled }} auth_backends.1 = rabbit_auth_backend_ldap auth_backends.2 = internal - auth_ldap.servers.1 = {{ .Values.ldap.server }} + {{- range $index, $server := .Values.ldap.servers }} + auth_ldap.servers.{{ add $index 1 }} = {{ $server }} + {{- end }} auth_ldap.port = {{ .Values.ldap.port }} auth_ldap.user_dn_pattern = {{ .Values.ldap.user_dn_pattern }} {{- if .Values.ldap.tls.enabled }} @@ -257,11 +259,19 @@ advancedConfiguration: |- ## ldap: enabled: false - server: "" + ## List of LDAP servers hostnames + ## + servers: [] + ## LDAP servers port + ## port: "389" + ## Pattern used to translate the provided username into a value to be used for the LDAP bind + ## ref: https://www.rabbitmq.com/ldap.html#usernames-and-dns + ## user_dn_pattern: cn=${username},dc=example,dc=org tls: - # If you enabled TLS/SSL you can set advaced options using the advancedConfiguration parameter. + ## If you enabled TLS/SSL you can set advaced options using the advancedConfiguration parameter. + ## enabled: false ## extraVolumes and extraVolumeMounts allows you to mount other volumes