From 9fb9f2adc2c615019701da4b89ce64b2bbbe9fa2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20de=20Saint=20Martin?= Date: Wed, 24 Jul 2019 16:40:16 +0200 Subject: [PATCH] [stable/prometheus-blackbox-exporter] Breaking change: general upgrade and ServiceMonitor (#11426) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [stable/prometheus-blackbox-exporter] Add optional ServiceMonitor. Signed-off-by: Cédric de Saint Martin * [stable/prometheus-blackbox-exporter] Breaking change: use recommended labels. Signed-off-by: Cédric de Saint Martin * Add desaintmartin to owners. Signed-off-by: Cédric de Saint Martin * [stable/prometheus-blackbox-exporter] Update deployment to apps/v1. Signed-off-by: Cédric de Saint Martin * Fix default servicemonitor name to example.com. Signed-off-by: Cédric de Saint Martin --- .../prometheus-blackbox-exporter/Chart.yaml | 4 +- stable/prometheus-blackbox-exporter/OWNERS | 4 +- stable/prometheus-blackbox-exporter/README.md | 18 ++++++++ .../templates/configmap.yaml | 8 ++-- .../templates/deployment.yaml | 20 +++++---- .../templates/ingress.yaml | 10 ++--- .../templates/service.yaml | 12 ++--- .../templates/servicemonitor.yaml | 45 +++++++++++++++++++ .../prometheus-blackbox-exporter/values.yaml | 13 ++++++ 9 files changed, 108 insertions(+), 26 deletions(-) create mode 100644 stable/prometheus-blackbox-exporter/templates/servicemonitor.yaml diff --git a/stable/prometheus-blackbox-exporter/Chart.yaml b/stable/prometheus-blackbox-exporter/Chart.yaml index 44b5b5af21..3452b73fb0 100644 --- a/stable/prometheus-blackbox-exporter/Chart.yaml +++ b/stable/prometheus-blackbox-exporter/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v1 description: Prometheus Blackbox Exporter name: prometheus-blackbox-exporter -version: 0.4.0 +version: 1.0.0 appVersion: 0.14.0 home: https://github.com/prometheus/blackbox_exporter sources: @@ -11,5 +11,7 @@ keywords: - blackbox - monitoring maintainers: + - name: desaintmartin + email: cedric@desaintmartin.fr - name: gianrubio email: gianrubio@gmail.com diff --git a/stable/prometheus-blackbox-exporter/OWNERS b/stable/prometheus-blackbox-exporter/OWNERS index fe9b2c3d33..e6bd0652f8 100644 --- a/stable/prometheus-blackbox-exporter/OWNERS +++ b/stable/prometheus-blackbox-exporter/OWNERS @@ -1,4 +1,6 @@ approvers: +- desaintmartin - gianrubio reviewers: -- gianrubio \ No newline at end of file +- desaintmartin +- gianrubio diff --git a/stable/prometheus-blackbox-exporter/README.md b/stable/prometheus-blackbox-exporter/README.md index 8ab03bb19d..0a8b03b5ae 100644 --- a/stable/prometheus-blackbox-exporter/README.md +++ b/stable/prometheus-blackbox-exporter/README.md @@ -72,6 +72,11 @@ The following table lists the configurable parameters of the Blackbox-Exporter c | `service.type` | type of service to create | `ClusterIP` | | `service.port` | port for the blackbox http service | `9115` | | `service.externalIPs` | list of external ips | [] | +| `serviceMonitor.enabled` | If true, a ServiceMonitor CRD is created for a prometheus operator | `false` | +| `serviceMonitor.labels` | Labels for prometheus operator | `{}` | +| `serviceMonitor.interval` | Interval for prometheus operator endpoint | `30s` | +| `serviceMonitor.url` | The URL that blackbox will scrape if serviceMonitor is enabled | `http://example.com/healthz` | +| `serviceMonitor.urlHumanReadable` | Optional human readable URL that will appear in Prometheus / AlertManager | `nil` | Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example, @@ -89,3 +94,16 @@ $ helm install --name my-release -f values.yaml stable/prometheus-blackbox-expor ``` > **Tip**: You can use the default [values.yaml](values.yaml) + +## Upgrading an existing Release to a new major version + +### 1.0.0 + +This version introduce the new recommended labels. + +In order to upgrade, delete the Deployment before upgrading: +```bash +$ kubectl delete deployment my-release-prometheus-blackbox-exporter +``` + +Note that this will cause downtime of the blackbox. diff --git a/stable/prometheus-blackbox-exporter/templates/configmap.yaml b/stable/prometheus-blackbox-exporter/templates/configmap.yaml index d40a444b30..54908d3269 100644 --- a/stable/prometheus-blackbox-exporter/templates/configmap.yaml +++ b/stable/prometheus-blackbox-exporter/templates/configmap.yaml @@ -4,10 +4,10 @@ kind: {{ if .Values.secretConfig -}} Secret {{- else -}} ConfigMap {{- end }} metadata: name: {{ template "prometheus-blackbox-exporter.fullname" . }} labels: - chart: {{ template "prometheus-blackbox-exporter.chart" . }} - app: {{ template "prometheus-blackbox-exporter.name" . }} - release: "{{ .Release.Name }}" - heritage: "{{ .Release.Service }}" + app.kubernetes.io/name: {{ include "prometheus-blackbox-exporter.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + helm.sh/chart: {{ include "prometheus-blackbox-exporter.chart" . }} {{ if .Values.secretConfig -}} stringData: {{- else -}} data: {{- end }} blackbox.yaml: | {{ toYaml .Values.config | indent 4 }} diff --git a/stable/prometheus-blackbox-exporter/templates/deployment.yaml b/stable/prometheus-blackbox-exporter/templates/deployment.yaml index 11320b9aa7..1bd4707e33 100644 --- a/stable/prometheus-blackbox-exporter/templates/deployment.yaml +++ b/stable/prometheus-blackbox-exporter/templates/deployment.yaml @@ -1,18 +1,18 @@ -apiVersion: apps/v1beta2 +apiVersion: apps/v1 kind: Deployment metadata: name: {{ template "prometheus-blackbox-exporter.fullname" . }} labels: - chart: {{ template "prometheus-blackbox-exporter.chart" . }} - app: {{ template "prometheus-blackbox-exporter.name" . }} - release: "{{ .Release.Name }}" - heritage: "{{ .Release.Service }}" + app.kubernetes.io/name: {{ include "prometheus-blackbox-exporter.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + helm.sh/chart: {{ include "prometheus-blackbox-exporter.chart" . }} spec: replicas: {{ .Values.replicas }} selector: matchLabels: - app: {{ template "prometheus-blackbox-exporter.name" . }} - release: "{{ .Release.Name }}" + app.kubernetes.io/name: {{ include "prometheus-blackbox-exporter.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} strategy: rollingUpdate: maxSurge: 1 @@ -21,8 +21,10 @@ spec: template: metadata: labels: - app: {{ template "prometheus-blackbox-exporter.name" . }} - release: "{{ .Release.Name }}" + app.kubernetes.io/name: {{ include "prometheus-blackbox-exporter.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + helm.sh/chart: {{ include "prometheus-blackbox-exporter.chart" . }} annotations: {{ toYaml .Values.podAnnotations | indent 8 }} spec: diff --git a/stable/prometheus-blackbox-exporter/templates/ingress.yaml b/stable/prometheus-blackbox-exporter/templates/ingress.yaml index 50779ab8d5..4ef3fc4383 100644 --- a/stable/prometheus-blackbox-exporter/templates/ingress.yaml +++ b/stable/prometheus-blackbox-exporter/templates/ingress.yaml @@ -6,10 +6,10 @@ kind: Ingress metadata: name: {{ template "prometheus-blackbox-exporter.fullname" . }} labels: - app: {{ template "prometheus-blackbox-exporter.name" . }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + app.kubernetes.io/name: {{ include "prometheus-blackbox-exporter.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + helm.sh/chart: {{ include "prometheus-blackbox-exporter.chart" . }} annotations: {{ toYaml .Values.ingress.annotations | indent 4 }} spec: @@ -27,4 +27,4 @@ spec: tls: {{ toYaml .Values.ingress.tls | indent 4 }} {{- end -}} -{{- end -}} \ No newline at end of file +{{- end -}} diff --git a/stable/prometheus-blackbox-exporter/templates/service.yaml b/stable/prometheus-blackbox-exporter/templates/service.yaml index d73011d9ac..b2daf5aeee 100644 --- a/stable/prometheus-blackbox-exporter/templates/service.yaml +++ b/stable/prometheus-blackbox-exporter/templates/service.yaml @@ -7,10 +7,10 @@ metadata: {{ toYaml .Values.service.annotations | indent 4 }} {{- end }} labels: - chart: {{ template "prometheus-blackbox-exporter.chart" . }} - app: {{ template "prometheus-blackbox-exporter.name" . }} - release: "{{ .Release.Name }}" - heritage: "{{ .Release.Service }}" + app.kubernetes.io/name: {{ include "prometheus-blackbox-exporter.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + helm.sh/chart: {{ include "prometheus-blackbox-exporter.chart" . }} {{- if .Values.service.labels }} {{ toYaml .Values.service.labels | indent 4 }} {{- end }} @@ -25,5 +25,5 @@ spec: {{ toYaml .Values.service.externalIPs | indent 4 }} {{- end }} selector: - app: {{ template "prometheus-blackbox-exporter.name" . }} - release: "{{ .Release.Name }}" + app.kubernetes.io/name: {{ include "prometheus-blackbox-exporter.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} diff --git a/stable/prometheus-blackbox-exporter/templates/servicemonitor.yaml b/stable/prometheus-blackbox-exporter/templates/servicemonitor.yaml new file mode 100644 index 0000000000..84b52f8422 --- /dev/null +++ b/stable/prometheus-blackbox-exporter/templates/servicemonitor.yaml @@ -0,0 +1,45 @@ +{{- if .Values.serviceMonitor.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "prometheus-blackbox-exporter.fullname" . }} + labels: + app.kubernetes.io/name: {{ include "prometheus-blackbox-exporter.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + helm.sh/chart: {{ include "prometheus-blackbox-exporter.chart" . }} + {{- if .Values.serviceMonitor.labels }} + {{- toYaml .Values.serviceMonitor.labels | nindent 4 }} + {{- end }} +spec: + endpoints: + - port: http + scheme: http + path: "/probe" + interval: {{ .Values.serviceMonitor.interval }} + scrapeTimeout: {{ .Values.serviceMonitor.scrapeTimeout }} + params: + module: + - http_2xx + target: + - {{ .Values.serviceMonitor.url }} + metricRelabelings: + - sourceLabels: [__address__] + targetLabel: __param_target + - sourceLabels: [__param_target] + targetLabel: instance + - targetLabel: target + {{- if .Values.serviceMonitor.urlHumanReadable }} + replacement: {{ .Values.serviceMonitor.urlHumanReadable }} + {{- else }} + replacement: {{ .Values.serviceMonitor.url }} + {{- end }} + jobLabel: "{{ .Release.Name }}" + selector: + matchLabels: + app.kubernetes.io/name: {{ include "prometheus-blackbox-exporter.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + namespaceSelector: + matchNames: + - {{ .Release.Namespace }} +{{- end }} diff --git a/stable/prometheus-blackbox-exporter/values.yaml b/stable/prometheus-blackbox-exporter/values.yaml index ad96e18b5b..d3b96bec78 100644 --- a/stable/prometheus-blackbox-exporter/values.yaml +++ b/stable/prometheus-blackbox-exporter/values.yaml @@ -80,3 +80,16 @@ configmapReload: ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/ ## resources: {} + +serviceMonitor: + ## If true, a ServiceMonitor CRD is created for a prometheus operator + ## https://github.com/coreos/prometheus-operator + ## + enabled: false + labels: {} + interval: 30s + scrapeTimeout: 30s + # The URL that blackbox will scrape + url: http://example.com/healthz + # Optional human readable URL that will appear in Prometheus / AlertManager + urlHumanReadable: # www.changemeoriwillfail.com