From ad6d6624552699087bb17665fa3b19d33b8dc480 Mon Sep 17 00:00:00 2001 From: Scott Crooks Date: Fri, 26 Jun 2020 15:18:07 +0200 Subject: [PATCH] [bitnami/prometheus-operator] Adding kube-proxy scraping (#2717) --- bitnami/prometheus-operator/Chart.yaml | 2 +- bitnami/prometheus-operator/README.md | 45 ++++++++++++------- .../exporters/kube-proxy/endpoints.yaml | 18 ++++++++ .../exporters/kube-proxy/service.yaml | 25 +++++++++++ .../exporters/kube-proxy/servicemonitor.yaml | 36 +++++++++++++++ .../values-production.yaml | 43 ++++++++++++++++++ bitnami/prometheus-operator/values.yaml | 43 ++++++++++++++++++ 7 files changed, 194 insertions(+), 18 deletions(-) create mode 100644 bitnami/prometheus-operator/templates/exporters/kube-proxy/endpoints.yaml create mode 100644 bitnami/prometheus-operator/templates/exporters/kube-proxy/service.yaml create mode 100644 bitnami/prometheus-operator/templates/exporters/kube-proxy/servicemonitor.yaml diff --git a/bitnami/prometheus-operator/Chart.yaml b/bitnami/prometheus-operator/Chart.yaml index cda41d4865..a387e2d925 100644 --- a/bitnami/prometheus-operator/Chart.yaml +++ b/bitnami/prometheus-operator/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v1 appVersion: 0.40.0 description: The Prometheus Operator for Kubernetes provides easy monitoring definitions for Kubernetes services and deployment and management of Prometheus instances. name: prometheus-operator -version: 0.20.7 +version: 0.21.0 keywords: - prometheus - alertmanager diff --git a/bitnami/prometheus-operator/README.md b/bitnami/prometheus-operator/README.md index 2b7cbfa4a6..0eec0a9b25 100644 --- a/bitnami/prometheus-operator/README.md +++ b/bitnami/prometheus-operator/README.md @@ -312,23 +312,34 @@ The following table lists the configurable parameters of the Prometheus Operator ### Exporters -| Parameter | Description | Default | -|-------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `exporters.enabled` | Deploy exporters | `true` | -| `exporters.node-exporter.enabled` | Deploy `node-exporter` | `true` | -| `exporters.kube-state-metrics.enabled` | Deploy `kube-state-metrics` | `true` | -| `kubelet.namespace` | Namespace where kubelet service is deployed. Related configuration `operator.kubeletService.namespace` | `kube-system` | -| `kubelet.enabled` | Create a ServiceMonitor to scrape kubelet service | `true` | -| `kubelet.serviceMonitor.https` | Enable scraping of the kubelet over HTTPS | `true` | -| `kubelet.serviceMonitor.interval` | Scrape interval (use by default, falling back to Prometheus' default) | `nil` | -| `kubelet.serviceMonitor.metricRelabelings` | Metric relabeling | `[]` | -| `kubelet.serviceMonitor.relabelings` | Relabel configs | `[]` | -| `kubelet.serviceMonitor.cAdvisorMetricRelabelings` | Metric relabeling for scraping cAdvisor | `[]` | -| `kubelet.serviceMonitor.cAdvisorRelabelings` | Relabel configs for scraping cAdvisor | `[]` | -| `kubeApiServer.enabled` | Create a ServiceMonitor to scrape kube-apiserver service | `true` | -| `kubeApiServer.serviceMonitor.interval` | Scrape interval (use by default, falling back to Prometheus' default) | `nil` | -| `kubeApiServer.serviceMonitor.metricRelabelings` | Metric relabeling | `[]` | -| `kubeApiServer.serviceMonitor.relabelings` | Relabel configs | `[]` | +| Parameter | Description | Default | +| -------------------------------------------------- | ------------------------------------------------------------ | ------------- | +| `exporters.enabled` | Deploy exporters | `true` | +| `exporters.node-exporter.enabled` | Deploy `node-exporter` | `true` | +| `exporters.kube-state-metrics.enabled` | Deploy `kube-state-metrics` | `true` | +| `kubelet.namespace` | Namespace where kubelet service is deployed. Related configuration `operator.kubeletService.namespace` | `kube-system` | +| `kubelet.enabled` | Create a ServiceMonitor to scrape kubelet service | `true` | +| `kubelet.serviceMonitor.https` | Enable scraping of the kubelet over HTTPS | `true` | +| `kubelet.serviceMonitor.interval` | Scrape interval (use by default, falling back to Prometheus' default) | `nil` | +| `kubelet.serviceMonitor.metricRelabelings` | Metric relabeling | `[]` | +| `kubelet.serviceMonitor.relabelings` | Relabel configs | `[]` | +| `kubelet.serviceMonitor.cAdvisorMetricRelabelings` | Metric relabeling for scraping cAdvisor | `[]` | +| `kubelet.serviceMonitor.cAdvisorRelabelings` | Relabel configs for scraping cAdvisor | `[]` | +| `kubeApiServer.enabled` | Create a ServiceMonitor to scrape kube-apiserver service | `true` | +| `kubeApiServer.serviceMonitor.interval` | Scrape interval (use by default, falling back to Prometheus' default) | `nil` | +| `kubeApiServer.serviceMonitor.metricRelabelings` | Metric relabeling | `[]` | +| `kubeApiServer.serviceMonitor.relabelings` | Relabel configs | `[]` | +| `kubeProxy.enabled` | Create a ServiceMonitor to scrape the kube-proxy Service | `true` | +| `kubeProxy.endpoints` | If your kube-proxy is not deployed as a pod, specify IPs it can be found on | `[]` | +| `kubeProxy.namespace` | Namespace where cube-proxy service is deployed. | `kube-system` | +| `kubeProxy.service.enabled` | Whether or not to create a Service object for kube-proxy | `true` | +| `kubeProxy.service.port` | Listening port of the kube-proxy Service object | `10249` | +| `kubeProxy.service.targetPort` | Port to target on the kube-proxy Pods. This should be the port that kube-proxy is listening on | `10249` | +| `kubeProxy.service.selector` | Service label selector to discover the kube-proxy Pods | `{}` | +| `kubeProxy.serviceMonitor.enabled` | Create a ServiceMonitor object | `true` | +| `kubeProxy.serviceMonitor.interval` | Scrape interval (use by default, falling back to Prometheus' default) | `""` | +| `kubeProxy.serviceMonitor.metricRelabelings` | Metric relabeling | `[]` | +| `kubeProxy.serviceMonitor.relabelings` | Relabel configs | `[]` | The above parameters map to the env variables defined in [bitnami/prometheus-operator](http://github.com/bitnami/bitnami-docker-prometheus-operator). For more information please refer to the [bitnami/prometheus-operator](http://github.com/bitnami/bitnami-docker-prometheus-operator) image documentation. diff --git a/bitnami/prometheus-operator/templates/exporters/kube-proxy/endpoints.yaml b/bitnami/prometheus-operator/templates/exporters/kube-proxy/endpoints.yaml new file mode 100644 index 0000000000..d2e4dfa3a7 --- /dev/null +++ b/bitnami/prometheus-operator/templates/exporters/kube-proxy/endpoints.yaml @@ -0,0 +1,18 @@ +{{- if and .Values.kubeProxy.enabled .Values.kubeProxy.endpoints }} +apiVersion: v1 +kind: Endpoints +metadata: + name: {{ template "prometheus-operator.fullname" . }}-kube-proxy + namespace: {{ .Values.kubeProxy.namespace }} + labels: {{- include "prometheus-operator.labels" . | nindent 4 }} + app.kubernetes.io/component: kube-proxy +subsets: + - addresses: + {{- range .Values.kubeProxy.endpoints }} + - ip: {{ . }} + {{- end }} + ports: + - name: http-metrics + port: {{ .Values.kubeProxy.service.port }} + protocol: TCP +{{- end }} diff --git a/bitnami/prometheus-operator/templates/exporters/kube-proxy/service.yaml b/bitnami/prometheus-operator/templates/exporters/kube-proxy/service.yaml new file mode 100644 index 0000000000..e4843830e1 --- /dev/null +++ b/bitnami/prometheus-operator/templates/exporters/kube-proxy/service.yaml @@ -0,0 +1,25 @@ +{{- if and .Values.kubeProxy.enabled .Values.kubeProxy.service.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ template "prometheus-operator.fullname" . }}-kube-proxy + namespace: {{ .Values.kubeProxy.namespace }} + labels: {{- include "prometheus-operator.labels" . | nindent 4 }} + app.kubernetes.io/component: kube-proxy +spec: + clusterIP: None + ports: + - name: http-metrics + port: {{ .Values.kubeProxy.service.port }} + protocol: TCP + targetPort: {{ .Values.kubeProxy.service.targetPort }} +{{- if .Values.kubeProxy.endpoints }}{{- else }} + selector: + {{- if .Values.kubeProxy.service.selector }} + {{ toYaml .Values.kubeProxy.service.selector | nindent 4 }} + {{- else }} + k8s-app: kube-proxy + {{- end }} +{{- end }} + type: ClusterIP +{{- end -}} diff --git a/bitnami/prometheus-operator/templates/exporters/kube-proxy/servicemonitor.yaml b/bitnami/prometheus-operator/templates/exporters/kube-proxy/servicemonitor.yaml new file mode 100644 index 0000000000..0c4e869bea --- /dev/null +++ b/bitnami/prometheus-operator/templates/exporters/kube-proxy/servicemonitor.yaml @@ -0,0 +1,36 @@ +{{- if .Values.kubeProxy.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "prometheus-operator.fullname" . }}-kube-proxy + namespace: {{ .Release.Namespace }} + labels: {{- include "prometheus-operator.labels" . | nindent 4 }} + app.kubernetes.io/component: kube-proxy +spec: + jobLabel: k8s-app + selector: + matchLabels: + app.kubernetes.io/component: kube-proxy + namespaceSelector: + matchNames: + - {{ .Values.kubeProxy.namespace }} + endpoints: + - port: http-metrics + {{- if .Values.kubeProxy.serviceMonitor.interval }} + interval: {{ .Values.kubeProxy.serviceMonitor.interval }} + {{- end }} + bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token + {{- if .Values.kubeProxy.serviceMonitor.https }} + scheme: https + tlsConfig: + caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + {{- end}} +{{- if .Values.kubeProxy.serviceMonitor.metricRelabelings }} + metricRelabelings: +{{ toYaml .Values.kubeProxy.serviceMonitor.metricRelabelings | indent 4 }} +{{- end }} +{{- if .Values.kubeProxy.serviceMonitor.relabelings }} + relabelings: +{{ toYaml .Values.kubeProxy.serviceMonitor.relabelings | indent 4 }} +{{- end }} +{{- end }} diff --git a/bitnami/prometheus-operator/values-production.yaml b/bitnami/prometheus-operator/values-production.yaml index 60775a8e01..8dc4038e3b 100644 --- a/bitnami/prometheus-operator/values-production.yaml +++ b/bitnami/prometheus-operator/values-production.yaml @@ -1025,6 +1025,49 @@ kubeApiServer: ## relabelings: [] +## Component scraping the kube-proxy +kubeProxy: + ## Create a ServiceMonitor to scrape kube-proxy service + enabled: true + + ## If your kube-proxy is not deployed as a pod, specify IPs it can be found on + endpoints: [] + # - 10.141.4.22 + # - 10.141.4.23 + # - 10.141.4.24 + + ## Namespace where kube-proxy service is deployed + namespace: kube-system + + ## Service ports and selector information + service: + enabled: true + port: 10249 + targetPort: 10249 + # selector: + # k8s-app: kube-proxy + + serviceMonitor: + ## Enable scraping kube-proxy over https. + ## Requires proper certs (not self-signed) and delegated authentication/authorization checks + ## + https: false + + ## Scrape interval. If not set, the Prometheus default scrape interval is used. + ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint + ## + interval: "" + + ## Metric relabeling + ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs + ## + metricRelabelings: [] + + ## Relabel configs + ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config + ## + relabelings: [] + # Component scraping for kubelet and kubelet hosted cAdvisor kubelet: ## Create a ServiceMonitor to scrape kubelet service diff --git a/bitnami/prometheus-operator/values.yaml b/bitnami/prometheus-operator/values.yaml index bc802a2c54..08a3296a8c 100644 --- a/bitnami/prometheus-operator/values.yaml +++ b/bitnami/prometheus-operator/values.yaml @@ -1026,6 +1026,49 @@ kubeApiServer: ## relabelings: [] +## Component scraping the kube-proxy +kubeProxy: + ## Create a ServiceMonitor to scrape kube-proxy service + enabled: true + + ## If your kube-proxy is not deployed as a pod, specify IPs it can be found on + endpoints: [] + # - 10.141.4.22 + # - 10.141.4.23 + # - 10.141.4.24 + + ## Namespace where kube-proxy service is deployed + namespace: kube-system + + ## Service ports and selector information + service: + enabled: true + port: 10249 + targetPort: 10249 + # selector: + # k8s-app: kube-proxy + + serviceMonitor: + ## Enable scraping kube-proxy over https. + ## Requires proper certs (not self-signed) and delegated authentication/authorization checks + ## + https: false + + ## Scrape interval. If not set, the Prometheus default scrape interval is used. + ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint + ## + interval: "" + + ## Metric relabeling + ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs + ## + metricRelabelings: [] + + ## Relabel configs + ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config + ## + relabelings: [] + # Component scraping for kubelet and kubelet hosted cAdvisor kubelet: ## Create a ServiceMonitor to scrape kubelet service