From 4ac1cefe11e0503491de4369f6a985e756ac3297 Mon Sep 17 00:00:00 2001
From: groundhog2k <10630407+groundhog2k@users.noreply.github.com>
Date: Wed, 16 Dec 2020 20:28:25 +0100
Subject: [PATCH] Rabbit fix draft (#155)

* first draft for rabbit fix

* Fixed read-only warning
---
 charts/rabbitmq/Chart.yaml                   |  2 +-
 charts/rabbitmq/README.md                    |  3 +-
 charts/rabbitmq/templates/rabbit-config.yaml |  1 +
 charts/rabbitmq/templates/statefulset.yaml   | 30 +++++++++++++++-----
 charts/rabbitmq/values.yaml                  | 11 ++++++-
 5 files changed, 37 insertions(+), 10 deletions(-)

diff --git a/charts/rabbitmq/Chart.yaml b/charts/rabbitmq/Chart.yaml
index fb930cc4..54e34656 100644
--- a/charts/rabbitmq/Chart.yaml
+++ b/charts/rabbitmq/Chart.yaml
@@ -7,6 +7,6 @@ type: application
 maintainers:
   - name: groundhog2k
 
-version: 0.2.3
+version: 0.2.4
 
 appVersion: 3.8.9
diff --git a/charts/rabbitmq/README.md b/charts/rabbitmq/README.md
index 90693515..8b3d7aa0 100644
--- a/charts/rabbitmq/README.md
+++ b/charts/rabbitmq/README.md
@@ -1,6 +1,6 @@
 # RabbitMQ
 
-![Version: 0.2.3](https://img.shields.io/badge/Version-0.2.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 3.8.9](https://img.shields.io/badge/AppVersion-3.8.9-informational?style=flat-square)
+![Version: 0.2.4](https://img.shields.io/badge/Version-0.2.4-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 3.8.9](https://img.shields.io/badge/AppVersion-3.8.9-informational?style=flat-square)
 
 A Helm chart for a RabbitMQ cluster on Kubernetes
 
@@ -116,3 +116,4 @@ $ helm uninstall my-release
 | options.memoryHighWatermark.type | string | `"relative"` | Type of watermark (relative or absolute) |
 | options.memoryHighWatermark.value | float | `0.4` | Watermark value (default: 40%) |
 | plugins | string | `"rabbitmq_management,rabbitmq_peer_discovery_k8s"` | RabbitMQ plugins (Remove rabbitmq_peer_discovery_k8s to disable cluster replication mode) |
+| disableMetricsCollector: | bool | `false` | Disable internal metrics collector (management_agent.disable_metrics_collector) |
diff --git a/charts/rabbitmq/templates/rabbit-config.yaml b/charts/rabbitmq/templates/rabbit-config.yaml
index c14699a1..55be43b8 100644
--- a/charts/rabbitmq/templates/rabbit-config.yaml
+++ b/charts/rabbitmq/templates/rabbit-config.yaml
@@ -7,6 +7,7 @@ metadata:
 data:
   rabbitmq.conf: |+
     # Common settings
+    management_agent.disable_metrics_collector = {{ .Values.disableMetricsCollector }}
     loopback_users.guest = false
     listeners.tcp.default = 5672
     management.tcp.port = 15672
diff --git a/charts/rabbitmq/templates/statefulset.yaml b/charts/rabbitmq/templates/statefulset.yaml
index d7fd47e2..77b40f55 100644
--- a/charts/rabbitmq/templates/statefulset.yaml
+++ b/charts/rabbitmq/templates/statefulset.yaml
@@ -31,6 +31,26 @@ spec:
       securityContext:
         {{- toYaml . | nindent 8 }}
       {{- end }}
+      initContainers:
+        - name: {{ .Chart.Name }}-init
+          {{- with .Values.securityContext }}
+          securityContext:
+            {{- toYaml . | nindent 12 }}
+          {{- end }}
+          image: "{{ .Values.initImage.repository }}:{{ .Values.initImage.tag }}"
+          imagePullPolicy: {{ .Values.initImage.pullPolicy }}
+          volumeMounts:
+            - name: config
+              mountPath: /etc/rabbitmq
+            - name: rabbitconfig
+              mountPath: /temp/rabbitmq.conf
+              subPath: rabbitmq.conf
+          {{- if .Values.plugins }}
+            - name: plugins
+              mountPath: /temp/enabled_plugins
+              subPath: enabled_plugins
+          {{- end }}
+          command: ['sh', '-c', 'cp /temp/* /etc/rabbitmq && mkdir -p /etc/rabbitmq/conf.d']
       containers:
         - name: {{ .Chart.Name }}
           {{- with .Values.securityContext }}
@@ -132,13 +152,7 @@ spec:
             - name: rabbitmq-volume
               mountPath: /var/lib/rabbitmq
             - name: config
-              mountPath: /etc/rabbitmq/rabbitmq.conf
-              subPath: rabbitmq.conf
-          {{- if .Values.plugins }}
-            - name: plugins
-              mountPath: /etc/rabbitmq/enabled_plugins
-              subPath: enabled_plugins
-          {{- end }}
+              mountPath: /etc/rabbitmq
       {{- with .Values.nodeSelector }}
       nodeSelector:
         {{- toYaml . | nindent 8 }}
@@ -157,6 +171,8 @@ spec:
         - name: logs
           emptyDir: {}
         - name: config
+          emptyDir: {}
+        - name: rabbitconfig
           configMap:
             name: {{ include "rabbitmq.fullname" . }}-config
       {{- if .Values.plugins }}
diff --git a/charts/rabbitmq/values.yaml b/charts/rabbitmq/values.yaml
index 8cbfb5b3..1211b43f 100644
--- a/charts/rabbitmq/values.yaml
+++ b/charts/rabbitmq/values.yaml
@@ -7,6 +7,12 @@ image:
   # Overrides the image tag whose default is the chart appVersion.
   tag: ""
 
+# Default Init container image
+initImage:
+  repository: busybox
+  pullPolicy: IfNotPresent
+  tag: "latest"
+
 ## Pull secrets and name override options
 imagePullSecrets: []
 nameOverride: ""
@@ -55,7 +61,7 @@ ingress:
   enabled: false
 
   ## Additional ingress annotations
-  annotations:
+  annotations: {}
   # kubernetes.io/ingress.class: nginx
   # kubernetes.io/tls-acme: "true"
 
@@ -120,6 +126,9 @@ args: []
 ## Default Kubernetes cluster domain
 clusterDomain: cluster.local
 
+## Disable internal metrics collector (management_agent.disable_metrics_collector)
+disableMetricsCollector: false
+
 # Comma separated list of plugins (without whitespace!) - f.e.: rabbitmq_federation_management,rabbitmq_management,rabbitmq_mqtt,rabbitmq_stomp,rabbitmq_peer_discovery_k8s
 plugins: rabbitmq_management,rabbitmq_peer_discovery_k8s
 
-- 
GitLab