From fb175e78a68cd6c6842d99717f1393b9fb1f5a74 Mon Sep 17 00:00:00 2001
From: Guillermo Facundo Colunga <guillermo.facundo.colunga@cern.ch>
Date: Thu, 11 Jul 2024 14:27:35 +0200
Subject: [PATCH] [MONIT-3965] Add support for user defined service monitors in
 values file

This commits updates the values file to add a new field named `metrics.prometheus.server.serviceMonitors` that is a list that can be used to tell the helm chart to create service monitors on cluster creation time.
Also adds a template to generate this new resource.
---
 templates/prometheus/genericservicemonitor.yaml | 15 +++++++++++++++
 values.yaml                                     | 17 ++++++++++++++++-
 2 files changed, 31 insertions(+), 1 deletion(-)
 create mode 100644 templates/prometheus/genericservicemonitor.yaml

diff --git a/templates/prometheus/genericservicemonitor.yaml b/templates/prometheus/genericservicemonitor.yaml
new file mode 100644
index 0000000..91593c9
--- /dev/null
+++ b/templates/prometheus/genericservicemonitor.yaml
@@ -0,0 +1,15 @@
+{{- if and .Values.metrics.enabled .Values.metrics.prometheus.enabled -}}
+{{- if .Values.metrics.prometheus.server.serviceMonitors }}
+{{- $top := .  -}}
+{{- range $t := .Values.metrics.prometheus.server.serviceMonitors }}
+---
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+  name: {{ $t.name }}
+  namespace: {{ $top.Release.namespace }}
+spec:
+  {{- toYaml $t.spec | nindent 2 }}
+{{- end }}
+{{- end }}
+{{- end }}
\ No newline at end of file
diff --git a/values.yaml b/values.yaml
index 0d00795..0eb96de 100644
--- a/values.yaml
+++ b/values.yaml
@@ -104,7 +104,22 @@ metrics:
         limits:
           cpu: "500m"
           memory: "5Gi"
-
+      # Service Monitors to be created by the helm chart install / upgrade. Ex:
+      # serviceMonitors:
+      # - name: my-nginx-sm
+      #   spec:
+      #     endpoints:
+      #     - interval: 30s
+      #       port: metrics
+      #     namespaceSelector:
+      #       matchNames:
+      #       - kube-system
+      #       selector:
+      #         matchLabels:
+      #           app.kubernetes.io/component: controller
+      #           app.kubernetes.io/instance: cern-magnum
+      #           app.kubernetes.io/name: ingress-nginx
+      serviceMonitors: []
   # This fluentbit is used to allow scraping and fordwarding metrics from
   # the local prometheus and send them to Open Telemetry Collector.
   # If the local .Values.metrics.prometheus enable=false will not be able
-- 
GitLab