diff --git a/stable/rabbitmq/Chart.yaml b/stable/rabbitmq/Chart.yaml index e21c68ce2a..f6f697eba1 100644 --- a/stable/rabbitmq/Chart.yaml +++ b/stable/rabbitmq/Chart.yaml @@ -1,5 +1,5 @@ name: rabbitmq -version: 3.3.6 +version: 3.4.0 appVersion: 3.7.8 description: Open source message broker software that implements the Advanced Message Queuing Protocol (AMQP) keywords: diff --git a/stable/rabbitmq/README.md b/stable/rabbitmq/README.md index f7b7a54772..88def3a747 100644 --- a/stable/rabbitmq/README.md +++ b/stable/rabbitmq/README.md @@ -96,6 +96,12 @@ The following table lists the configurable parameters of the RabbitMQ chart and | `readinessProbe.periodSeconds ` | number of seconds | 5 | | `readinessProbe.failureThreshold` | number of failures | 3 | | `readinessProbe.successThreshold` | number of successes | 1 | +| `metrics.enabled` | Start a side-car prometheus exporter | `false` | +| `metrics.image.registry` | Exporter image registry | `docker.io` | +| `metrics.image.repository` | Exporter image name | `kbudde/rabbitmq-exporter` | +| `metrics.image.tag` | Exporter image tag | `v0.29.0` | +| `metrics.image.pullPolicy` | Exporter image pull policy | `IfNotPresent` | +| `metrics.resources` | Exporter resource requests/limit | `nil` | The above parameters map to the env variables defined in [bitnami/rabbitmq](http://github.com/bitnami/bitnami-docker-rabbitmq). For more information please refer to the [bitnami/rabbitmq](http://github.com/bitnami/bitnami-docker-rabbitmq) image documentation. diff --git a/stable/rabbitmq/templates/_helpers.tpl b/stable/rabbitmq/templates/_helpers.tpl index bbbb2e33d3..9c785ecadc 100644 --- a/stable/rabbitmq/templates/_helpers.tpl +++ b/stable/rabbitmq/templates/_helpers.tpl @@ -30,3 +30,13 @@ Create chart name and version as used by the chart label. {{- define "rabbitmq.chart" -}} {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} {{- end -}} + +{{/* +Return the proper metrics image name +*/}} +{{- define "metrics.image" -}} +{{- $registryName := .Values.metrics.image.registry -}} +{{- $repositoryName := .Values.metrics.image.repository -}} +{{- $tag := .Values.metrics.image.tag | toString -}} +{{- printf "%s/%s:%s" $registryName $repositoryName $tag -}} +{{- end -}} diff --git a/stable/rabbitmq/templates/statefulset.yaml b/stable/rabbitmq/templates/statefulset.yaml index a4241353a7..3ce2b086fd 100644 --- a/stable/rabbitmq/templates/statefulset.yaml +++ b/stable/rabbitmq/templates/statefulset.yaml @@ -48,7 +48,7 @@ spec: {{- end }} terminationGracePeriodSeconds: 10 containers: - - name: {{ template "rabbitmq.fullname" . }} + - name: rabbitmq image: "{{ .Values.image.registry }}/{{ .Values.image.repository }}:{{ .Values.image.tag }}" imagePullPolicy: {{ .Values.image.pullPolicy | quote }} command: @@ -68,6 +68,9 @@ spec: ulimit -n "${RABBITMQ_ULIMIT_NOFILES}" #replace the default password that is generated sed -i "s/CHANGEME/$RABBITMQ_PASSWORD/g" /opt/bitnami/rabbitmq/etc/rabbitmq/rabbitmq.conf + # Move logs to stdout + ln -sF /dev/stdout /opt/bitnami/rabbitmq/var/log/rabbitmq/rabbit@${MY_POD_IP}.log + ln -sF /dev/stdout /opt/bitnami/rabbitmq/var/log/rabbitmq/rabbit@${MY_POD_IP}_upgrade.log exec rabbitmq-server {{- if .Values.resources }} resources: @@ -153,6 +156,39 @@ spec: secretKeyRef: name: {{ template "rabbitmq.fullname" . }} key: rabbitmq-password +{{- if .Values.metrics.enabled }} + - name: metrics + image: {{ template "metrics.image" . }} + imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }} + env: + - name: RABBIT_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "rabbitmq.fullname" . }} + key: rabbitmq-password + - name: RABBIT_URL + value: "http://localhost:{{ .Values.rabbitmq.managerPort }}" + - name: RABBIT_USER + value: {{ .Values.rabbitmq.username }} + ports: + - name: metrics + containerPort: 9090 + livenessProbe: + httpGet: + path: /metrics + port: metrics + initialDelaySeconds: 15 + timeoutSeconds: 5 + readinessProbe: + httpGet: + path: /metrics + port: metrics + initialDelaySeconds: 5 + timeoutSeconds: 1 + resources: +{{ toYaml .Values.metrics.resources | indent 10 }} +{{- end }} + {{- if .Values.securityContext.enabled }} securityContext: fsGroup: {{ .Values.securityContext.fsGroup }} diff --git a/stable/rabbitmq/templates/svc.yaml b/stable/rabbitmq/templates/svc.yaml index 3f744e3c6f..5e7e146093 100644 --- a/stable/rabbitmq/templates/svc.yaml +++ b/stable/rabbitmq/templates/svc.yaml @@ -7,6 +7,10 @@ metadata: chart: {{ template "rabbitmq.chart" . }} release: "{{ .Release.Name }}" heritage: "{{ .Release.Service }}" +{{- if .Values.metrics.enabled }} + annotations: +{{ toYaml .Values.metrics.annotations | indent 4 }} +{{- end }} spec: type: {{ .Values.serviceType }} ports: @@ -25,6 +29,11 @@ spec: - name: stats port: {{ .Values.rabbitmq.managerPort }} targetPort: stats +{{- if .Values.metrics.enabled }} + - name: metrics + port: 9090 + targetPort: metrics +{{- end }} selector: app: {{ template "rabbitmq.name" . }} release: "{{ .Release.Name }}" diff --git a/stable/rabbitmq/values-production.yaml b/stable/rabbitmq/values-production.yaml index 73bf1671c3..d308b32eaf 100644 --- a/stable/rabbitmq/values-production.yaml +++ b/stable/rabbitmq/values-production.yaml @@ -186,3 +186,15 @@ readinessProbe: periodSeconds: 5 failureThreshold: 3 successThreshold: 1 + +metrics: + enabled: true + image: + registry: docker.io + repository: kbudde/rabbitmq-exporter + tag: v0.29.0 + pullPolicy: IfNotPresent + resources: {} + annotations: + prometheus.io/scrape: "true" + prometheus.io/port: "9090" diff --git a/stable/rabbitmq/values.yaml b/stable/rabbitmq/values.yaml index 874b643b82..2e37e2a9d1 100644 --- a/stable/rabbitmq/values.yaml +++ b/stable/rabbitmq/values.yaml @@ -195,3 +195,15 @@ readinessProbe: periodSeconds: 5 failureThreshold: 3 successThreshold: 1 + +metrics: + enabled: false + image: + registry: docker.io + repository: kbudde/rabbitmq-exporter + tag: v0.29.0 + pullPolicy: IfNotPresent + resources: {} + annotations: + prometheus.io/scrape: "true" + prometheus.io/port: "9090"