Skip to content
This repository was archived by the owner on Aug 16, 2023. It is now read-only.

Commit 78dce7c

Browse files
authored
minio add podmonitor and update metrics path (#408)
1. update the metrics path from `/minio/prometheus/metrics` to `/minio/v2/metrics/cluster` 2. add podMonitor for minio 3. version bumped 4. add podmonitor's secret
1 parent 43e3f9a commit 78dce7c

8 files changed

+81
-17
lines changed

charts/minio/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
apiVersion: v1
22
description: High Performance, Kubernetes Native Object Storage
33
name: minio
4-
version: 8.0.14
4+
version: 8.0.15
55
appVersion: master
66
keywords:
77
- storage
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
{{- if .Values.metrics.podMonitor.enabled }}
2+
{{ $scheme := "http" }}
3+
{{- if .Values.tls.enabled }}
4+
{{ $scheme = "https" }}
5+
{{ end }}
6+
apiVersion: monitoring.coreos.com/v1
7+
kind: PodMonitor
8+
metadata:
9+
name: {{ template "minio.fullname" . }}
10+
labels:
11+
app: {{ template "minio.name" . }}
12+
release: {{ .Release.Name }}
13+
spec:
14+
podMetricsEndpoints:
15+
- port: {{ $scheme }}
16+
path: /minio/v2/metrics/cluster
17+
{{- if .Values.metrics.podMonitor.interval }}
18+
interval: {{ .Values.metrics.podMonitor.interval }}
19+
{{- end }}
20+
{{- if .Values.metrics.podMonitor.scrapeTimeout }}
21+
scrapeTimeout: {{ .Values.metrics.podMonitor.scrapeTimeout }}
22+
{{- end }}
23+
bearerTokenSecret:
24+
name: {{ template "minio.fullname" . }}-podmonitor-prometheus
25+
key: token
26+
namespaceSelector:
27+
matchNames:
28+
- {{ .Release.Namespace | quote }}
29+
selector:
30+
matchLabels:
31+
app: {{ include "minio.name" . }}
32+
release: {{ .Release.Name }}
33+
{{- end }}

charts/minio/templates/post-install-prometheus-metrics-job.yaml

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{{- if .Values.metrics.serviceMonitor.enabled }}
1+
{{- if or .Values.metrics.serviceMonitor.enabled .Values.metrics.podMonitor.enabled }}
22
{{- $fullName := include "minio.fullname" . -}}
33
{{ $scheme := "http" }}
44
{{- if .Values.tls.enabled }}
@@ -101,18 +101,35 @@ spec:
101101
- name: kubectl-create
102102
image: "{{ .Values.helmKubectlJqImage.repository }}:{{ .Values.helmKubectlJqImage.tag }}"
103103
imagePullPolicy: {{ .Values.helmKubectlJqImage.pullPolicy }}
104-
command:
105-
- /bin/sh
106-
- "-c"
104+
command: ["/bin/sh", "-c"]
105+
args:
107106
# The following script does:
108107
# - get the servicemonitor that need this secret and copy some metadata and create the ownerreference for the secret file
109108
# - create the secret
110109
# - merge both json
111-
- >
112-
kubectl -n {{ .Release.Namespace }} get servicemonitor {{ $fullName }} -o json |
113-
jq -c '{metadata: {name: "{{ $fullName }}-prometheus", namespace: .metadata.namespace, labels: {app: .metadata.labels.app, release: .metadata.labels.release}, ownerReferences: [{apiVersion: .apiVersion, kind: .kind, blockOwnerDeletion: true, controller: true, uid: .metadata.uid, name: .metadata.name}]}}' > /workdir/metadata.json &&
114-
kubectl create secret generic {{ $fullName }}-prometheus --from-file=token=/workdir/token --dry-run -o json > /workdir/secret.json &&
115-
cat /workdir/secret.json /workdir/metadata.json | jq -s add > /workdir/object.json
110+
{{- if and .Values.metrics.serviceMonitor.enabled .Values.metrics.podMonitor.enabled }}
111+
- |
112+
mkdir -p /workdir/secrets && kubectl -n {{ .Release.Namespace }} get servicemonitor {{ $fullName }} -o json |
113+
jq -c '{metadata: {name: "{{ $fullName }}-servicemonitor-prometheus", namespace: .metadata.namespace, labels: {app: .metadata.labels.app, release: .metadata.labels.release}, ownerReferences: [{apiVersion: .apiVersion, kind: .kind, blockOwnerDeletion: true, controller: true, uid: .metadata.uid, name: .metadata.name}]}}' > /workdir/servicemonitormetadata.json &&
114+
kubectl create secret generic {{ $fullName }}-servicemonitor-prometheus --from-file=token=/workdir/token --dry-run -o json > /workdir/servicemonitorsecret.json &&
115+
cat /workdir/servicemonitorsecret.json /workdir/servicemonitormetadata.json | jq -s add > /workdir/secrets/servicemonitorobject.json;
116+
mkdir -p /workdir/secrets && kubectl -n {{ .Release.Namespace }} get podmonitor {{ $fullName }} -o json |
117+
jq -c '{metadata: {name: "{{ $fullName }}-podmonitor-prometheus", namespace: .metadata.namespace, labels: {app: .metadata.labels.app, release: .metadata.labels.release}, ownerReferences: [{apiVersion: .apiVersion, kind: .kind, blockOwnerDeletion: true, controller: true, uid: .metadata.uid, name: .metadata.name}]}}' > /workdir/podmonitormetadata.json &&
118+
kubectl create secret generic {{ $fullName }}-podmonitor-prometheus --from-file=token=/workdir/token --dry-run -o json > /workdir/podmonitorsecret.json &&
119+
cat /workdir/podmonitorsecret.json /workdir/podmonitormetadata.json | jq -s add > /workdir/secrets/podmonitorobject.json
120+
{{- else if .Values.metrics.podMonitor.enabled }}
121+
- |
122+
mkdir -p /workdir/secrets && kubectl -n {{ .Release.Namespace }} get podmonitor {{ $fullName }} -o json |
123+
jq -c '{metadata: {name: "{{ $fullName }}-podmonitor-prometheus", namespace: .metadata.namespace, labels: {app: .metadata.labels.app, release: .metadata.labels.release}, ownerReferences: [{apiVersion: .apiVersion, kind: .kind, blockOwnerDeletion: true, controller: true, uid: .metadata.uid, name: .metadata.name}]}}' > /workdir/podmonitormetadata.json &&
124+
kubectl create secret generic {{ $fullName }}-podmonitor-prometheus --from-file=token=/workdir/token --dry-run -o json > /workdir/podmonitorsecret.json &&
125+
cat /workdir/podmonitorsecret.json /workdir/podmonitormetadata.json | jq -s add > /workdir/secrets/podmonitorobject.json
126+
{{- else if .Values.metrics.serviceMonitor.enabled }}
127+
- |
128+
mkdir -p /workdir/secrets && kubectl -n {{ .Release.Namespace }} get servicemonitor {{ $fullName }} -o json |
129+
jq -c '{metadata: {name: "{{ $fullName }}-servicemonitor-prometheus", namespace: .metadata.namespace, labels: {app: .metadata.labels.app, release: .metadata.labels.release}, ownerReferences: [{apiVersion: .apiVersion, kind: .kind, blockOwnerDeletion: true, controller: true, uid: .metadata.uid, name: .metadata.name}]}}' > /workdir/servicemonitormetadata.json &&
130+
kubectl create secret generic {{ $fullName }}-servicemonitor-prometheus --from-file=token=/workdir/token --dry-run -o json > /workdir/servicemonitorsecret.json &&
131+
cat /workdir/servicemonitorsecret.json /workdir/servicemonitormetadata.json | jq -s add > /workdir/secrets/servicemonitorobject.json
132+
{{- end }}
116133
volumeMounts:
117134
- name: workdir
118135
mountPath: /workdir
@@ -126,7 +143,7 @@ spec:
126143
- kubectl
127144
- apply
128145
- "-f"
129-
- /workdir/object.json
146+
- /workdir/secrets
130147
volumeMounts:
131148
- name: workdir
132149
mountPath: /workdir

charts/minio/templates/post-install-prometheus-metrics-role.yaml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{{- if .Values.serviceAccount.create -}}
1+
{{- if or .Values.metrics.serviceMonitor.enabled .Values.metrics.podMonitor.enabled }}
22
{{- $fullName := include "minio.fullname" . -}}
33
apiVersion: rbac.authorization.k8s.io/v1
44
kind: Role
@@ -20,7 +20,12 @@ rules:
2020
- update
2121
- patch
2222
resourceNames:
23-
- {{ $fullName }}-prometheus
23+
{{- if .Values.metrics.serviceMonitor.enabled }}
24+
- {{ $fullName }}-servicemonitor-prometheus
25+
{{- end }}
26+
{{- if .Values.metrics.podMonitor.enabled }}
27+
- {{ $fullName }}-podmonitor-prometheus
28+
{{- end}}
2429
- apiGroups:
2530
- ""
2631
resources:
@@ -30,7 +35,12 @@ rules:
3035
- apiGroups:
3136
- monitoring.coreos.com
3237
resources:
38+
{{- if .Values.metrics.serviceMonitor.enabled }}
3339
- servicemonitors
40+
{{- end}}
41+
{{- if .Values.metrics.podMonitor.enabled }}
42+
- podmonitors
43+
{{- end}}
3444
verbs:
3545
- get
3646
resourceNames:

charts/minio/templates/post-install-prometheus-metrics-rolebinding.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{{- if .Values.serviceAccount.create -}}
1+
{{- if or .Values.metrics.serviceMonitor.enabled .Values.metrics.podMonitor.enabled }}
22
{{- $fullName := include "minio.fullname" . -}}
33
apiVersion: rbac.authorization.k8s.io/v1
44
kind: RoleBinding

charts/minio/templates/post-install-prometheus-metrics-serviceaccount.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{{- if .Values.serviceAccount.create -}}
1+
{{- if or .Values.metrics.serviceMonitor.enabled .Values.metrics.podMonitor.enabled }}
22
{{- $fullName := include "minio.fullname" . -}}
33
apiVersion: v1
44
kind: ServiceAccount

charts/minio/templates/servicemonitor.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ metadata:
2121
spec:
2222
endpoints:
2323
- port: {{ $scheme }}
24-
path: /minio/prometheus/metrics
24+
path: /minio/v2/metrics/cluster
2525
{{- if .Values.metrics.serviceMonitor.interval }}
2626
interval: {{ .Values.metrics.serviceMonitor.interval }}
2727
{{- end }}
@@ -32,7 +32,7 @@ spec:
3232
{{ toYaml .Values.metrics.serviceMonitor.relabelConfigs | indent 6 }}
3333
{{- end }}
3434
bearerTokenSecret:
35-
name: {{ template "minio.fullname" . }}-prometheus
35+
name: {{ template "minio.fullname" . }}-servicemonitor-prometheus
3636
key: token
3737
namespaceSelector:
3838
matchNames:

charts/minio/values.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,10 @@ metrics:
344344
# namespace: monitoring
345345
# interval: 30s
346346
# scrapeTimeout: 10s
347+
podMonitor:
348+
enabled: false
349+
# interval: 30s
350+
# scrapeTimeout: 10s
347351

348352
## ETCD settings: https://github.com/minio/minio/blob/master/docs/sts/etcd.md
349353
## Define endpoints to enable this section.

0 commit comments

Comments
 (0)