[bitnami/kafka] Fix labels on kafka exporter & add metric services

Signed-off-by: juan131 <juan@bitnami.com>
This commit is contained in:
juan131
2019-11-12 14:02:18 +01:00
parent c1c34a8392
commit 413daa10d8
12 changed files with 310 additions and 70 deletions

View File

@@ -217,3 +217,16 @@ but Helm 2.9 and 2.10 does not support it, so we need to implement this if-else
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Renders a value that contains template.
Usage:
{{ include "kafka.tplValue" ( dict "value" .Values.path.to.the.Value "context" $) }}
*/}}
{{- define "kafka.tplValue" -}}
{{- if typeIs "string" .value }}
{{- tpl .value .context }}
{{- else }}
{{- tpl (.value | toYaml) .context }}
{{- end }}
{{- end -}}

View File

@@ -13,29 +13,29 @@ spec:
replicas: 1
selector:
matchLabels:
app: {{ template "kafka.name" . }}
release: "{{ .Release.Name }}"
app.kubernetes.io/name: {{ template "kafka.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/component: metrics
template:
metadata:
annotations:
{{- if and .Values.metrics.kafka.enabled }}
prometheus.io/scrape: "true"
prometheus.io/port: {{ .Values.metrics.kafka.port | quote }}
{{- end }}
labels:
app: {{ template "kafka.name" . }}
release: "{{ .Release.Name }}"
app.kubernetes.io/name: {{ template "kafka.name" . }}
helm.sh/chart: {{ template "kafka.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/component: metrics
spec:
{{- include "kafka.imagePullSecrets" . | indent 6 }}
containers:
- image: {{ template "kafka.metrics.kafka.image" . }}
name: kafka-exporter
args:
- --kafka.server={{ template "kafka.fullname" . }}:{{ .Values.service.port }}
- --web.listen-address=:{{ .Values.metrics.kafka.port }}
ports:
- name: kafka-port
containerPort: {{ .Values.metrics.kafka.port }}
resources:
{{ toYaml .Values.metrics.kafka.resources | indent 10 }}
- image: {{ template "kafka.metrics.kafka.image" . }}
name: kafka-exporter
args:
- --kafka.server={{ template "kafka.fullname" . }}:{{ .Values.service.port }}
- --web.listen-address=:{{ .Values.metrics.kafka.port }}
ports:
- name: metrics
containerPort: {{ .Values.metrics.kafka.port }}
{{- if .Values.metrics.kafka.resources }}
resources: {{ toYaml .Values.metrics.kafka.resources | nindent 12 }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,34 @@
{{- if .Values.metrics.jmx.enabled }}
apiVersion: v1
kind: Service
metadata:
name: {{ template "kafka.fullname" . }}-jmx-metrics
labels:
app.kubernetes.io/name: {{ template "kafka.name" . }}
helm.sh/chart: {{ template "kafka.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/component: kafka
annotations: {{ include "kafka.tplValue" ( dict "value" .Values.metrics.jmx.service.annotations "context" $) | nindent 4 }}
spec:
type: {{ .Values.metrics.jmx.service.type }}
{{- if and .Values.metrics.jmx.service.loadBalancerIP (eq .Values.metrics.jmx.service.type "LoadBalancer") }}
loadBalancerIP: {{ .Values.metrics.jmx.service.loadBalancerIP }}
{{- end }}
{{- if and (eq .Values.metrics.jmx.service.type "ClusterIP") .Values.metrics.jmx.service.clusterIP }}
clusterIP: {{ .Values.metrics.jmx.service.clusterIP }}
{{- end }}
ports:
- name: metrics
port: {{ .Values.metrics.jmx.service.port }}
targetPort: metrics
{{- if (and (or (eq .Values.metrics.jmx.service.type "NodePort") (eq .Values.metrics.jmx.service.type "LoadBalancer")) (not (empty .Values.metrics.jmx.service.nodePort)))}}
nodePort: {{ .Values.metrics.jmx.service.nodePort }}
{{- else if eq .Values.metrics.jmx.service.type "ClusterIP" }}
nodePort: null
{{- end }}
selector:
app.kubernetes.io/name: {{ template "kafka.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/component: kafka
{{- end }}

View File

@@ -0,0 +1,34 @@
{{- if .Values.metrics.kafka.enabled }}
apiVersion: v1
kind: Service
metadata:
name: {{ template "kafka.fullname" . }}-metrics
labels:
app.kubernetes.io/name: {{ template "kafka.name" . }}
helm.sh/chart: {{ template "kafka.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/component: metrics
annotations: {{ include "kafka.tplValue" ( dict "value" .Values.metrics.kafka.service.annotations "context" $) | nindent 4 }}
spec:
type: {{ .Values.metrics.kafka.service.type }}
{{- if and .Values.metrics.kafka.service.loadBalancerIP (eq .Values.metrics.kafka.service.type "LoadBalancer") }}
loadBalancerIP: {{ .Values.metrics.kafka.service.loadBalancerIP }}
{{- end }}
{{- if and (eq .Values.metrics.kafka.service.type "ClusterIP") .Values.metrics.kafka.service.clusterIP }}
clusterIP: {{ .Values.metrics.kafka.service.clusterIP }}
{{- end }}
ports:
- name: metrics
port: {{ .Values.metrics.kafka.service.port }}
targetPort: metrics
{{- if (and (or (eq .Values.metrics.kafka.service.type "NodePort") (eq .Values.metrics.kafka.service.type "LoadBalancer")) (not (empty .Values.metrics.kafka.service.nodePort)))}}
nodePort: {{ .Values.metrics.kafka.service.nodePort }}
{{- else if eq .Values.metrics.kafka.service.type "ClusterIP" }}
nodePort: null
{{- end }}
selector:
app.kubernetes.io/name: {{ template "kafka.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/component: metrics
{{- end }}

View File

@@ -1,8 +1,8 @@
{{- if and (or .Values.metrics.kafka.enabled .Values.metrics.jmx.enabled) .Values.metrics.serviceMonitor.enabled }}
{{- if and .Values.metrics.jmx.enabled .Values.metrics.serviceMonitor.enabled }}
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: {{ template "kafka.fullname" . }}
name: {{ template "kafka.fullname" . }}-jmx-metrics
{{- if .Values.metrics.serviceMonitor.namespace }}
namespace: {{ .Values.metrics.serviceMonitor.namespace }}
{{- end }}
@@ -22,25 +22,15 @@ spec:
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/component: kafka
endpoints:
{{- if .Values.metrics.kafka.enabled }}
- port: kafka-port
- port: metrics
path: "/"
{{- if .Values.metrics.serviceMonitor.interval }}
interval: {{ .Values.metrics.serviceMonitor.interval }}
{{- end }}
{{- if .Values.metrics.serviceMonitor.scrapeTimeout }}
scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }}
{{- end }}
{{- end }}
{{- if .Values.metrics.jmx.enabled }}
- port: jmx-port
{{- if .Values.metrics.serviceMonitor.interval }}
interval: {{ .Values.metrics.serviceMonitor.interval }}
{{- end }}
{{- if .Values.metrics.serviceMonitor.scrapeTimeout }}
scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }}
{{- end }}
{{- end }}
namespaceSelector:
matchNames:
- {{ .Release.Namespace }}
- {{ .Release.Namespace }}
{{- end }}

View File

@@ -0,0 +1,36 @@
{{- if and .Values.metrics.kafka.enabled .Values.metrics.serviceMonitor.enabled }}
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: {{ template "kafka.fullname" . }}-metrics
{{- if .Values.metrics.serviceMonitor.namespace }}
namespace: {{ .Values.metrics.serviceMonitor.namespace }}
{{- end }}
labels:
app.kubernetes.io/name: {{ template "kafka.name" . }}
helm.sh/chart: {{ template "kafka.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/component: metrics
{{- range $key, $value := .Values.metrics.serviceMonitor.selector }}
{{ $key }}: {{ $value | quote }}
{{- end }}
spec:
selector:
matchLabels:
app.kubernetes.io/name: {{ template "kafka.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/component: metrics
endpoints:
- port: metrics
path: "/metrics"
{{- if .Values.metrics.serviceMonitor.interval }}
interval: {{ .Values.metrics.serviceMonitor.interval }}
{{- end }}
{{- if .Values.metrics.serviceMonitor.scrapeTimeout }}
scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }}
{{- end }}
namespaceSelector:
matchNames:
- {{ .Release.Namespace }}
{{- end }}

View File

@@ -27,11 +27,7 @@ spec:
{{- end }}
template:
metadata:
{{ if .Values.metrics.jmx.enabled }}
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: {{ .Values.metrics.jmx.exporterPort | quote }}
{{- end }}
name: "{{ template "kafka.fullname" . }}"
labels:
app.kubernetes.io/name: {{ template "kafka.name" . }}
@@ -261,17 +257,17 @@ spec:
{{- if .Values.persistence.enabled }}
- name: data
mountPath: /bitnami/kafka
{{ end }}
{{ if .Values.config }}
{{- end }}
{{- if .Values.config }}
- name: kafka-config
mountPath: /opt/bitnami/kafka/conf/server.properties
subPath: server.properties
{{ end }}
{{ if .Values.auth.enabled }}
{{- end }}
{{- if .Values.auth.enabled }}
- name: kafka-certificates
mountPath: /opt/bitnami/kafka/conf/certs/
readOnly: true
{{ end }}
{{- end }}
{{ if .Values.metrics.jmx.enabled }}
- name: jmx-exporter
image: "{{ template "kafka.metrics.jmx.image" . }}"
@@ -287,10 +283,11 @@ spec:
- {{ .Values.metrics.jmx.exporterPort | quote }}
- /etc/jmx-kafka/jmx-kafka-prometheus.yml
ports:
- name: jmx-port
- name: metrics
containerPort: {{ .Values.metrics.jmx.exporterPort }}
resources:
{{ toYaml .Values.metrics.jmx.resources | indent 10 }}
{{- if .Values.metrics.jmx.resources }}
resources: {{ toYaml .Values.metrics.jmx.resources | nindent 10 }}
{{- end }}
volumeMounts:
- name: jmx-config
mountPath: /etc/jmx-kafka

View File

@@ -8,10 +8,7 @@ metadata:
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/component: kafka
annotations:
{{- range $key, $value := .Values.service.annotations }}
{{ $key }}: {{ $value | quote }}
{{- end }}
annotations: {{ include "kafka.tplValue" ( dict "value" .Values.service.annotations "context" $) | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if eq .Values.service.type "LoadBalancer" }}