From a405dba67705baf6b7f0572c0bf3122cb74e9a20 Mon Sep 17 00:00:00 2001 From: Steve Hipwell Date: Mon, 13 Dec 2021 09:49:51 +0000 Subject: [PATCH] [kube-prometheus-stack] Use sub-chart ServiceMonitors Signed-off-by: Steve Hipwell --- charts/kube-prometheus-stack/Chart.lock | 8 +- charts/kube-prometheus-stack/Chart.yaml | 4 +- charts/kube-prometheus-stack/README.md | 8 + .../kube-state-metrics/serviceMonitor.yaml | 63 -------- .../node-exporter/servicemonitor.yaml | 40 ----- charts/kube-prometheus-stack/values.yaml | 152 +++++++++--------- 6 files changed, 91 insertions(+), 184 deletions(-) delete mode 100644 charts/kube-prometheus-stack/templates/exporters/kube-state-metrics/serviceMonitor.yaml delete mode 100644 charts/kube-prometheus-stack/templates/exporters/node-exporter/servicemonitor.yaml diff --git a/charts/kube-prometheus-stack/Chart.lock b/charts/kube-prometheus-stack/Chart.lock index 5d072389a0cf..ae894b120082 100644 --- a/charts/kube-prometheus-stack/Chart.lock +++ b/charts/kube-prometheus-stack/Chart.lock @@ -4,9 +4,9 @@ dependencies: version: 4.1.2 - name: prometheus-node-exporter repository: https://prometheus-community.github.io/helm-charts - version: 2.2.2 + version: 2.4.0 - name: grafana repository: https://grafana.github.io/helm-charts - version: 6.19.2 -digest: sha256:7a62a4d14ab943171cd939267be146a863b0f7389625ded52274eaa218a14290 -generated: "2021-12-15T09:35:43.8008371+05:30" + version: 6.19.4 +digest: sha256:78b8f6548fcc72151db00837b7d2ba0640cb6672da2bddef2a95facd545210fe +generated: "2021-12-17T14:03:18.7313098Z" diff --git a/charts/kube-prometheus-stack/Chart.yaml b/charts/kube-prometheus-stack/Chart.yaml index 7a3908ff2579..773797b12918 100644 --- a/charts/kube-prometheus-stack/Chart.yaml +++ b/charts/kube-prometheus-stack/Chart.yaml @@ -17,7 +17,7 @@ name: kube-prometheus-stack sources: - https://github.com/prometheus-community/helm-charts - https://github.com/prometheus-operator/kube-prometheus -version: 23.3.2 +version: 24.0.0 appVersion: 0.52.1 kubeVersion: ">=1.16.0-0" home: https://github.com/prometheus-operator/kube-prometheus @@ -39,7 +39,7 @@ dependencies: repository: https://prometheus-community.github.io/helm-charts condition: kubeStateMetrics.enabled - name: prometheus-node-exporter - version: "2.2.*" + version: "2.4.*" repository: https://prometheus-community.github.io/helm-charts condition: nodeExporter.enabled - name: grafana diff --git a/charts/kube-prometheus-stack/README.md b/charts/kube-prometheus-stack/README.md index d745a3d4ba95..147b53fd2fc7 100644 --- a/charts/kube-prometheus-stack/README.md +++ b/charts/kube-prometheus-stack/README.md @@ -83,6 +83,14 @@ _See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documen A major chart version change (like v1.2.3 -> v2.0.0) indicates that there is an incompatible breaking change needing manual actions. +### From 23.x to 24.x + +The custom `ServiceMonitor` for the _kube-state-metrics_ & _prometheus-node-exporter_ charts have been removed in favour of the built in sub-chart `ServiceMonitor`; for both sub-charts this means that `ServiceMonitor` customisations happen via the values passed to the chart. If you haven't directly customised this behaviour then there are no changes required to upgrade, but if you have please read the following. + +For _kube-state-metrics_ the `ServiceMonitor` customisation is now set via `kube-state-metrics.prometheus.monitor` and the `kubeStateMetrics.serviceMonitor.selfMonitor.enabled` value has moved to `kube-state-metrics.selfMonitor.enabled`. + +For _prometheus-node-exporter_ the `ServiceMonitor` customisation is now set via `prometheus-node-exporter.prometheus.monitor` and the `nodeExporter.jobLabel` values has moved to `prometheus-node-exporter.prometheus.monitor.jobLabel`. + ### From 22.x to 23.x Port names have been renamed for Istio's diff --git a/charts/kube-prometheus-stack/templates/exporters/kube-state-metrics/serviceMonitor.yaml b/charts/kube-prometheus-stack/templates/exporters/kube-state-metrics/serviceMonitor.yaml deleted file mode 100644 index 8493d9dcdc25..000000000000 --- a/charts/kube-prometheus-stack/templates/exporters/kube-state-metrics/serviceMonitor.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- if .Values.kubeStateMetrics.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-kube-state-metrics - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-state-metrics -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - jobLabel: app.kubernetes.io/name - endpoints: - - port: http - {{- if .Values.kubeStateMetrics.serviceMonitor.interval }} - interval: {{ .Values.kubeStateMetrics.serviceMonitor.interval }} - {{- end }} - {{- if .Values.kubeStateMetrics.serviceMonitor.scrapeTimeout }} - scrapeTimeout: {{ .Values.kubeStateMetrics.serviceMonitor.scrapeTimeout }} - {{- end }} - {{- if .Values.kubeStateMetrics.serviceMonitor.proxyUrl }} - proxyUrl: {{ .Values.kubeStateMetrics.serviceMonitor.proxyUrl}} - {{- end }} - honorLabels: {{ .Values.kubeStateMetrics.serviceMonitor.honorLabels }} -{{- if .Values.kubeStateMetrics.serviceMonitor.metricRelabelings }} - metricRelabelings: -{{ tpl (toYaml .Values.kubeStateMetrics.serviceMonitor.metricRelabelings | indent 4) . }} -{{- end }} -{{- if .Values.kubeStateMetrics.serviceMonitor.relabelings }} - relabelings: -{{ tpl (toYaml .Values.kubeStateMetrics.serviceMonitor.relabelings | indent 4) . }} -{{- end }} -{{- if .Values.kubeStateMetrics.serviceMonitor.selfMonitor.enabled }} - - port: metrics - {{- if .Values.kubeStateMetrics.serviceMonitor.interval }} - interval: {{ .Values.kubeStateMetrics.serviceMonitor.interval }} - {{- end }} - {{- if .Values.kubeStateMetrics.serviceMonitor.proxyUrl }} - proxyUrl: {{ .Values.kubeStateMetrics.serviceMonitor.proxyUrl}} - {{- end }} - honorLabels: {{ .Values.kubeStateMetrics.serviceMonitor.honorLabels }} -{{- if .Values.kubeStateMetrics.serviceMonitor.metricRelabelings }} - metricRelabelings: -{{ tpl (toYaml .Values.kubeStateMetrics.serviceMonitor.metricRelabelings | indent 4) . }} -{{- end }} -{{- if .Values.kubeStateMetrics.serviceMonitor.relabelings }} - relabelings: -{{ tpl (toYaml .Values.kubeStateMetrics.serviceMonitor.relabelings | indent 4) . }} -{{- end }} -{{- end }} - {{- if ne (include "kube-prometheus-stack.namespace" .) (include "kube-prometheus-stack-kube-state-metrics.namespace" .) }} - namespaceSelector: - matchNames: - - {{ printf "%s" (include "kube-prometheus-stack-kube-state-metrics.namespace" .) | quote }} - {{- end }} - selector: - matchLabels: -{{- if .Values.kubeStateMetrics.serviceMonitor.selectorOverride }} -{{ toYaml .Values.kubeStateMetrics.serviceMonitor.selectorOverride | indent 6 }} -{{ else }} - app.kubernetes.io/name: kube-state-metrics - app.kubernetes.io/instance: "{{ $.Release.Name }}" -{{- end }} -{{- end }} diff --git a/charts/kube-prometheus-stack/templates/exporters/node-exporter/servicemonitor.yaml b/charts/kube-prometheus-stack/templates/exporters/node-exporter/servicemonitor.yaml deleted file mode 100644 index 02db6b233b7f..000000000000 --- a/charts/kube-prometheus-stack/templates/exporters/node-exporter/servicemonitor.yaml +++ /dev/null @@ -1,40 +0,0 @@ -{{- if .Values.nodeExporter.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-node-exporter - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-node-exporter -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - jobLabel: {{ .Values.nodeExporter.jobLabel }} - selector: - matchLabels: - app: prometheus-node-exporter - release: {{ $.Release.Name }} - {{- if ne (include "kube-prometheus-stack.namespace" .) (include "kube-prometheus-stack-prometheus-node-exporter.namespace" .) }} - namespaceSelector: - matchNames: - - {{ printf "%s" (include "kube-prometheus-stack-prometheus-node-exporter.namespace" .) | quote }} - {{- end }} - endpoints: - - port: {{ index .Values "prometheus-node-exporter" "service" "portName" }} - {{- if .Values.nodeExporter.serviceMonitor.interval }} - interval: {{ .Values.nodeExporter.serviceMonitor.interval }} - {{- end }} - {{- if .Values.nodeExporter.serviceMonitor.proxyUrl }} - proxyUrl: {{ .Values.nodeExporter.serviceMonitor.proxyUrl}} - {{- end }} - {{- if .Values.nodeExporter.serviceMonitor.scrapeTimeout }} - scrapeTimeout: {{ .Values.nodeExporter.serviceMonitor.scrapeTimeout }} - {{- end }} -{{- if .Values.nodeExporter.serviceMonitor.metricRelabelings }} - metricRelabelings: -{{ tpl (toYaml .Values.nodeExporter.serviceMonitor.metricRelabelings | indent 4) . }} -{{- end }} -{{- if .Values.nodeExporter.serviceMonitor.relabelings }} - relabelings: -{{ tpl (toYaml .Values.nodeExporter.serviceMonitor.relabelings | indent 4) . }} -{{- end }} -{{- end }} diff --git a/charts/kube-prometheus-stack/values.yaml b/charts/kube-prometheus-stack/values.yaml index b8d31d049e81..10f8e9c9dafc 100644 --- a/charts/kube-prometheus-stack/values.yaml +++ b/charts/kube-prometheus-stack/values.yaml @@ -1293,45 +1293,6 @@ kubeProxy: ## kubeStateMetrics: enabled: true - serviceMonitor: - ## Scrape interval. If not set, the Prometheus default scrape interval is used. - ## - interval: "" - ## Scrape Timeout. If not set, the Prometheus default scrape timeout is used. - ## - scrapeTimeout: "" - ## proxyUrl: URL of a proxy that should be used for scraping. - ## - proxyUrl: "" - ## Override serviceMonitor selector - ## - selectorOverride: {} - - ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion. - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#relabelconfig - ## - metricRelabelings: [] - # - action: keep - # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' - # sourceLabels: [__name__] - - ## RelabelConfigs to apply to samples before scraping - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#relabelconfig - ## - relabelings: [] - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - - # Keep labels from scraped data, overriding server-side labels - honorLabels: true - - # Enable self metrics configuration for Service Monitor - selfMonitor: - enabled: false ## Configuration for kube-state-metrics subchart ## @@ -1341,49 +1302,52 @@ kube-state-metrics: create: true podSecurityPolicy: enabled: true + prometheus: + monitor: + enabled: true -## Deploy node exporter as a daemonset to all nodes -## -nodeExporter: - enabled: true + ## Scrape interval. If not set, the Prometheus default scrape interval is used. + ## + interval: "" - ## Use the value configured in prometheus-node-exporter.podLabels - ## - jobLabel: jobLabel + ## Scrape Timeout. If not set, the Prometheus default scrape timeout is used. + ## + scrapeTimeout: "" - serviceMonitor: - ## Scrape interval. If not set, the Prometheus default scrape interval is used. - ## - interval: "" + ## proxyUrl: URL of a proxy that should be used for scraping. + ## + proxyUrl: "" - ## proxyUrl: URL of a proxy that should be used for scraping. - ## - proxyUrl: "" + # Keep labels from scraped data, overriding server-side labels + ## + honorLabels: true - ## How long until a scrape request times out. If not set, the Prometheus default scape timeout is used. - ## - scrapeTimeout: "" + ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion. + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#relabelconfig + ## + metricRelabelings: [] + # - action: keep + # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' + # sourceLabels: [__name__] - ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion. - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#relabelconfig - ## - metricRelabelings: [] - # - sourceLabels: [__name__] - # separator: ; - # regex: ^node_mountstats_nfs_(event|operations|transport)_.+ - # replacement: $1 - # action: drop + ## RelabelConfigs to apply to samples before scraping + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#relabelconfig + ## + relabelings: [] + # - sourceLabels: [__meta_kubernetes_pod_node_name] + # separator: ; + # regex: ^(.*)$ + # targetLabel: nodename + # replacement: $1 + # action: replace + + selfMonitor: + enabled: false - ## RelabelConfigs to apply to samples before scraping - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#relabelconfig - ## - relabelings: [] - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace +## Deploy node exporter as a daemonset to all nodes +## +nodeExporter: + enabled: true ## Configuration for prometheus-node-exporter subchart ## @@ -1398,6 +1362,44 @@ prometheus-node-exporter: - --collector.filesystem.ignored-fs-types=^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$ service: portName: http-metrics + prometheus: + monitor: + enabled: false + + jobLabel: jobLabel + + ## Scrape interval. If not set, the Prometheus default scrape interval is used. + ## + interval: "" + + ## How long until a scrape request times out. If not set, the Prometheus default scape timeout is used. + ## + scrapeTimeout: "" + + ## proxyUrl: URL of a proxy that should be used for scraping. + ## + proxyUrl: "" + + ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion. + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#relabelconfig + ## + metricRelabelings: [] + # - sourceLabels: [__name__] + # separator: ; + # regex: ^node_mountstats_nfs_(event|operations|transport)_.+ + # replacement: $1 + # action: drop + + ## RelabelConfigs to apply to samples before scraping + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#relabelconfig + ## + relabelings: [] + # - sourceLabels: [__meta_kubernetes_pod_node_name] + # separator: ; + # regex: ^(.*)$ + # targetLabel: nodename + # replacement: $1 + # action: replace ## Manages Prometheus and Alertmanager components ##