[STRIMZI] Monitoring chart improvement

Add Monitoring into charts of Strimzi

Issue-ID: OOM-3150
Signed-off-by: miroslavmasaryk <miroslav.masaryk@telekom.com>
Change-Id: I0621399f5f555f40f96d52f6c64e404bd91f119b
diff --git a/kubernetes/strimzi/templates/configmap.yaml b/kubernetes/strimzi/templates/configmap.yaml
new file mode 100644
index 0000000..ace51f7
--- /dev/null
+++ b/kubernetes/strimzi/templates/configmap.yaml
@@ -0,0 +1,21 @@
+{{/*
+# Copyright (c) 2023 Deutsche Telekom
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License..
+*/}}
+{{- if .Values.metrics.enabled }}
+apiVersion: v1
+kind: ConfigMap
+metadata:  {{- include "common.resourceMetadata" . | nindent 2 }}
+data: {{ tpl (.Files.Glob "resources/metrics/*").AsConfig . | nindent 2 }}
+{{ end }}
diff --git a/kubernetes/strimzi/templates/kafka-rebalance.yaml b/kubernetes/strimzi/templates/kafka-rebalance.yaml
new file mode 100644
index 0000000..6d5f143
--- /dev/null
+++ b/kubernetes/strimzi/templates/kafka-rebalance.yaml
@@ -0,0 +1,24 @@
+{{/*
+# Copyright (c) 2023 Deutsche Telekom
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License..
+*/}}
+{{- if .Values.cruiseControl.kafkaRebalance.enabled }}
+apiVersion: kafka.strimzi.io/v1beta2
+kind: KafkaRebalance
+metadata:
+  name: {{ include "common.fullname" . }}-kafka-rebalance
+  labels:
+    strimzi.io/cluster: {{ include "common.release" . }}-strimzi
+spec: {}
+{{- end }}
diff --git a/kubernetes/strimzi/templates/pod-monitor.yaml b/kubernetes/strimzi/templates/pod-monitor.yaml
new file mode 100644
index 0000000..be288a4
--- /dev/null
+++ b/kubernetes/strimzi/templates/pod-monitor.yaml
@@ -0,0 +1,45 @@
+{{/*
+# Copyright (c) 2023 Deutsche Telekom
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License..
+*/}}
+{{- if .Values.metrics.podMonitor.enabled }}
+apiVersion: monitoring.coreos.com/v1
+kind: PodMonitor
+metadata:
+  name: {{ include "common.fullname" . }}-podmonitor
+    ## podMonitor labels for prometheus to pick up the podMonitor
+    ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#monitoring.coreos.com/v1.PodMonitor
+    ##
+    # labels:
+    #   prometheus: kube-prometheus
+  labels: {{- toYaml $.Values.metrics.podMonitor.labels | nindent 4 }}
+spec:
+  selector:
+    matchLabels:
+      strimzi.io/cluster: {{ include "common.release" . }}-strimzi
+  podMetricsEndpoints:
+  - port: {{ .Values.metrics.podMonitor.port }}
+    {{- if .Values.metrics.podMonitor.relabelings }}
+    ## RelabelConfigs to apply to samples before scraping
+    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
+    ## Value is evalued as a template
+    relabelings: {{- toYaml .Values.metrics.podMonitor.relabelings | nindent 6 }}
+    {{- end }}
+    {{- if .Values.metrics.podMonitor.metricRelabelings }}
+    metricRelabelings: {{- toYaml .Values.metrics.podMonitor.metricRelabelings | nindent 6 }}
+    ## MetricRelabelConfigs to apply to samples before ingestion
+    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
+    ## Value is evalued as a template
+    {{- end }}
+{{- end }}
diff --git a/kubernetes/strimzi/templates/strimzi-kafka.yaml b/kubernetes/strimzi/templates/strimzi-kafka.yaml
index 3ce7b1d..421d93a 100644
--- a/kubernetes/strimzi/templates/strimzi-kafka.yaml
+++ b/kubernetes/strimzi/templates/strimzi-kafka.yaml
@@ -89,6 +89,14 @@
         size: {{ .Values.persistence.kafka.size }}
         deleteClaim: true
         class: {{ include "common.storageClass" (dict "dot" . "suffix" "kafka" "persistenceInfos" .Values.persistence.kafka) }}
+    {{- if .Values.metrics.kafkaExporter.enabled }}
+    metricsConfig:
+      type: {{ .Values.metrics.kafkaExporter.metricsConfig.type }}
+      valueFrom:
+        configMapKeyRef:
+          name: {{ include "common.fullname" . }}
+          key: kafka-metrics-config.yml
+    {{- end }}
   zookeeper:
     template:
       pod:
@@ -107,7 +115,43 @@
       size: {{ .Values.persistence.zookeeper.size }}
       deleteClaim: true
       class: {{ include "common.storageClass" (dict "dot" . "suffix" "zk" "persistenceInfos" .Values.persistence.zookeeper) }}
+    {{- if .Values.metrics.kafkaExporter.enabled }}
+    metricsConfig:
+      type: {{ .Values.metrics.kafkaExporter.metricsConfig.type }}
+      valueFrom:
+        configMapKeyRef:
+          name: {{ include "common.fullname" . }}
+          key: zookeeper-metrics-config.yml
+    {{- end }}
   entityOperator:
     topicOperator: {}
     userOperator: {}
-
+  {{- if .Values.cruiseControl.enabled }}
+  cruiseControl:
+    metricsConfig:
+      type: {{ .Values.cruiseControl.metricsConfig.type }}
+      valueFrom:
+        configMapKeyRef:
+          name: {{ include "common.fullname" . }}
+          key: cruisecontrol-metrics-config.yml
+  {{- end }}
+  {{- if .Values.metrics.kafkaExporter.enabled }}
+  kafkaExporter:
+    topicRegex: {{ .Values.metrics.kafkaExporter.topicRegex }}
+    groupRegex: {{ .Values.metrics.kafkaExporter.groupRegex }}
+    resources:
+      requests:
+        cpu: {{ .Values.metrics.kafkaExporter.resources.requests.cpu }}
+        memory: {{ .Values.metrics.kafkaExporter.resources.requests.memory }}
+      limits:
+        cpu: {{ .Values.metrics.kafkaExporter.resources.limits.cpu }}
+        memory: {{ .Values.metrics.kafkaExporter.resources.limits.memory }}
+    logging: {{ .Values.metrics.kafkaExporter.logging }}
+    enableSaramaLogging: {{ .Values.metrics.kafkaExporter.enableSaramaLogging }}
+    readinessProbe:
+      initialDelaySeconds: {{ .Values.metrics.kafkaExporter.readinessProbe.initialDelaySeconds }}
+      timeoutSeconds: {{ .Values.metrics.kafkaExporter.readinessProbe.timeoutSeconds }}
+    livenessProbe:
+      initialDelaySeconds: {{ .Values.metrics.kafkaExporter.livenessProbe.initialDelaySeconds }}
+      timeoutSeconds: {{ .Values.metrics.kafkaExporter.livenessProbe.timeoutSeconds }}
+  {{- end }}