Version bump of kube-prometheus stack

This commit is contained in:
Stefan Reimer 2021-03-22 10:23:27 +01:00
parent ec87dd7dcc
commit 1b3dbe36eb
26 changed files with 261 additions and 51 deletions

View File

@ -2,7 +2,7 @@ apiVersion: v2
name: kubezero-metrics name: kubezero-metrics
description: KubeZero Umbrella Chart for prometheus-operator description: KubeZero Umbrella Chart for prometheus-operator
type: application type: application
version: 0.3.2 version: 0.3.3
home: https://kubezero.com home: https://kubezero.com
icon: https://cdn.zero-downtime.net/assets/kubezero/logo-small-64.png icon: https://cdn.zero-downtime.net/assets/kubezero/logo-small-64.png
keywords: keywords:
@ -16,7 +16,7 @@ dependencies:
version: ">= 0.1.3" version: ">= 0.1.3"
repository: https://zero-down-time.github.io/kubezero/ repository: https://zero-down-time.github.io/kubezero/
- name: kube-prometheus-stack - name: kube-prometheus-stack
version: 13.13.0 version: 14.3.0
# Switch back to upstream once all alerts are fixed eg. etcd gpcr # Switch back to upstream once all alerts are fixed eg. etcd gpcr
# repository: https://prometheus-community.github.io/helm-charts # repository: https://prometheus-community.github.io/helm-charts
- name: prometheus-adapter - name: prometheus-adapter

View File

@ -6,7 +6,7 @@ annotations:
url: https://github.com/prometheus-operator/kube-prometheus url: https://github.com/prometheus-operator/kube-prometheus
artifacthub.io/operator: "true" artifacthub.io/operator: "true"
apiVersion: v2 apiVersion: v2
appVersion: 0.45.0 appVersion: 0.46.0
dependencies: dependencies:
- condition: kubeStateMetrics.enabled - condition: kubeStateMetrics.enabled
name: kube-state-metrics name: kube-state-metrics
@ -15,11 +15,11 @@ dependencies:
- condition: nodeExporter.enabled - condition: nodeExporter.enabled
name: prometheus-node-exporter name: prometheus-node-exporter
repository: https://prometheus-community.github.io/helm-charts repository: https://prometheus-community.github.io/helm-charts
version: 1.14.* version: 1.16.*
- condition: grafana.enabled - condition: grafana.enabled
name: grafana name: grafana
repository: https://grafana.github.io/helm-charts repository: https://grafana.github.io/helm-charts
version: 6.4.* version: 6.6.*
description: kube-prometheus-stack collects Kubernetes manifests, Grafana dashboards, and Prometheus rules combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with Prometheus using the Prometheus Operator. description: kube-prometheus-stack collects Kubernetes manifests, Grafana dashboards, and Prometheus rules combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with Prometheus using the Prometheus Operator.
home: https://github.com/prometheus-operator/kube-prometheus home: https://github.com/prometheus-operator/kube-prometheus
icon: https://raw.githubusercontent.com/prometheus/prometheus.github.io/master/assets/prometheus_logo-cb55bb5c346.png icon: https://raw.githubusercontent.com/prometheus/prometheus.github.io/master/assets/prometheus_logo-cb55bb5c346.png
@ -44,4 +44,4 @@ sources:
- https://github.com/prometheus-community/helm-charts - https://github.com/prometheus-community/helm-charts
- https://github.com/prometheus-operator/kube-prometheus - https://github.com/prometheus-operator/kube-prometheus
type: application type: application
version: 13.13.0 version: 14.3.0

View File

@ -83,13 +83,28 @@ _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. A major chart version change (like v1.2.3 -> v2.0.0) indicates that there is an incompatible breaking change needing manual actions.
### From 13.x to 14.x
Version 14 upgrades prometheus-operator from 0.45.x to 0.46.x. Helm does not automatically upgrade or install new CRDs on a chart upgrade, so you have to install the CRDs manually before updating:
```console
kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml
kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml
kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml
kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml
kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml
kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml
kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml
```
### From 12.x to 13.x ### From 12.x to 13.x
Version 12 upgrades prometheus-operator from 0.44.x to 0.45.x. Helm does not automatically upgrade or install new CRDs on a chart upgrade, so you have to install the CRD manually before updating: Version 13 upgrades prometheus-operator from 0.44.x to 0.45.x. Helm does not automatically upgrade or install new CRDs on a chart upgrade, so you have to install the CRD manually before updating:
```console ```console
kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml
kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml
kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml
``` ```
### From 11.x to 12.x ### From 11.x to 12.x

View File

@ -1,5 +1,5 @@
apiVersion: v2 apiVersion: v2
appVersion: 7.4.2 appVersion: 7.4.3
description: The leading tool for querying and visualizing time series and metrics. description: The leading tool for querying and visualizing time series and metrics.
home: https://grafana.net home: https://grafana.net
icon: https://raw.githubusercontent.com/grafana/grafana/master/public/img/logo_transparent_400x.png icon: https://raw.githubusercontent.com/grafana/grafana/master/public/img/logo_transparent_400x.png
@ -19,4 +19,4 @@ name: grafana
sources: sources:
- https://github.com/grafana/grafana - https://github.com/grafana/grafana
type: application type: application
version: 6.4.4 version: 6.6.3

View File

@ -59,8 +59,8 @@ This version requires Helm >= 3.1.0.
| `securityContext` | Deployment securityContext | `{"runAsUser": 472, "runAsGroup": 472, "fsGroup": 472}` | | `securityContext` | Deployment securityContext | `{"runAsUser": 472, "runAsGroup": 472, "fsGroup": 472}` |
| `priorityClassName` | Name of Priority Class to assign pods | `nil` | | `priorityClassName` | Name of Priority Class to assign pods | `nil` |
| `image.repository` | Image repository | `grafana/grafana` | | `image.repository` | Image repository | `grafana/grafana` |
| `image.tag` | Image tag (`Must be >= 5.0.0`) | `7.4.2` | | `image.tag` | Image tag (`Must be >= 5.0.0`) | `7.4.3` |
| `image.sha` | Image sha (optional) | `17cbd08b9515fda889ca959e9d72ee6f3327c8f1844a3336dfd952134f38e2fe` | | `image.sha` | Image sha (optional) | `16dc29783ec7d4a23fa19207507586344c6797023604347eb3e8ea5ae431e181` |
| `image.pullPolicy` | Image pull policy | `IfNotPresent` | | `image.pullPolicy` | Image pull policy | `IfNotPresent` |
| `image.pullSecrets` | Image pull secrets | `{}` | | `image.pullSecrets` | Image pull secrets | `{}` |
| `service.type` | Kubernetes service type | `ClusterIP` | | `service.type` | Kubernetes service type | `ClusterIP` |
@ -80,6 +80,7 @@ This version requires Helm >= 3.1.0.
| `ingress.annotations` | Ingress annotations (values are templated) | `{}` | | `ingress.annotations` | Ingress annotations (values are templated) | `{}` |
| `ingress.labels` | Custom labels | `{}` | | `ingress.labels` | Custom labels | `{}` |
| `ingress.path` | Ingress accepted path | `/` | | `ingress.path` | Ingress accepted path | `/` |
| `ingress.pathType` | Ingress type of path | `Prefix` |
| `ingress.hosts` | Ingress accepted hostnames | `["chart-example.local"]` | | `ingress.hosts` | Ingress accepted hostnames | `["chart-example.local"]` |
| `ingress.extraPaths` | Ingress extra paths to prepend to every host configuration. Useful when configuring [custom actions with AWS ALB Ingress Controller](https://kubernetes-sigs.github.io/aws-alb-ingress-controller/guide/ingress/annotation/#actions). | `[]` | | `ingress.extraPaths` | Ingress extra paths to prepend to every host configuration. Useful when configuring [custom actions with AWS ALB Ingress Controller](https://kubernetes-sigs.github.io/aws-alb-ingress-controller/guide/ingress/annotation/#actions). | `[]` |
| `ingress.tls` | Ingress TLS configuration | `[]` | | `ingress.tls` | Ingress TLS configuration | `[]` |
@ -90,6 +91,7 @@ This version requires Helm >= 3.1.0.
| `extraInitContainers` | Init containers to add to the grafana pod | `{}` | | `extraInitContainers` | Init containers to add to the grafana pod | `{}` |
| `extraContainers` | Sidecar containers to add to the grafana pod | `{}` | | `extraContainers` | Sidecar containers to add to the grafana pod | `{}` |
| `extraContainerVolumes` | Volumes that can be mounted in sidecar containers | `[]` | | `extraContainerVolumes` | Volumes that can be mounted in sidecar containers | `[]` |
| `extraLabels` | Custom labels for all manifests | `{}` |
| `schedulerName` | Name of the k8s scheduler (other than default) | `nil` | | `schedulerName` | Name of the k8s scheduler (other than default) | `nil` |
| `persistence.enabled` | Use persistent volume to store data | `false` | | `persistence.enabled` | Use persistent volume to store data | `false` |
| `persistence.type` | Type of persistence (`pvc` or `statefulset`) | `pvc` | | `persistence.type` | Type of persistence (`pvc` or `statefulset`) | `pvc` |
@ -133,7 +135,7 @@ This version requires Helm >= 3.1.0.
| `podLabels` | Pod labels | `{}` | | `podLabels` | Pod labels | `{}` |
| `podPortName` | Name of the grafana port on the pod | `grafana` | | `podPortName` | Name of the grafana port on the pod | `grafana` |
| `sidecar.image.repository` | Sidecar image repository | `quay.io/kiwigrid/k8s-sidecar` | | `sidecar.image.repository` | Sidecar image repository | `quay.io/kiwigrid/k8s-sidecar` |
| `sidecar.image.tag` | Sidecar image tag | `1.10.6` | | `sidecar.image.tag` | Sidecar image tag | `1.10.7` |
| `sidecar.image.sha` | Sidecar image sha (optional) | `""` | | `sidecar.image.sha` | Sidecar image sha (optional) | `""` |
| `sidecar.imagePullPolicy` | Sidecar image pull policy | `IfNotPresent` | | `sidecar.imagePullPolicy` | Sidecar image pull policy | `IfNotPresent` |
| `sidecar.resources` | Sidecar resources | `{}` | | `sidecar.resources` | Sidecar resources | `{}` |
@ -186,6 +188,7 @@ This version requires Helm >= 3.1.0.
| `testFramework.imagePullPolicy` | `test-framework` image pull policy. | `IfNotPresent` | | `testFramework.imagePullPolicy` | `test-framework` image pull policy. | `IfNotPresent` |
| `testFramework.securityContext` | `test-framework` securityContext | `{}` | | `testFramework.securityContext` | `test-framework` securityContext | `{}` |
| `downloadDashboards.env` | Environment variables to be passed to the `download-dashboards` container | `{}` | | `downloadDashboards.env` | Environment variables to be passed to the `download-dashboards` container | `{}` |
| `downloadDashboards.envFromSecret` | Name of a Kubernetes secret (must be manually created in the same namespace) containing values to be added to the environment. Can be templated | `""` |
| `downloadDashboards.resources` | Resources of `download-dashboards` container | `{}` | | `downloadDashboards.resources` | Resources of `download-dashboards` container | `{}` |
| `downloadDashboardsImage.repository` | Curl docker image repo | `curlimages/curl` | | `downloadDashboardsImage.repository` | Curl docker image repo | `curlimages/curl` |
| `downloadDashboardsImage.tag` | Curl docker image tag | `7.73.0` | | `downloadDashboardsImage.tag` | Curl docker image tag | `7.73.0` |
@ -214,6 +217,7 @@ This version requires Helm >= 3.1.0.
| `imageRenderer.priorityClassName` | image-renderer deployment priority class | `''` | | `imageRenderer.priorityClassName` | image-renderer deployment priority class | `''` |
| `imageRenderer.service.portName` | image-renderer service port name | `'http'` | | `imageRenderer.service.portName` | image-renderer service port name | `'http'` |
| `imageRenderer.service.port` | image-renderer service port used by both service and deployment | `8081` | | `imageRenderer.service.port` | image-renderer service port used by both service and deployment | `8081` |
| `imageRenderer.grafanaSubPath` | Grafana sub path to use for image renderer callback url | `''` |
| `imageRenderer.podPortName` | name of the image-renderer port on the pod | `http` | | `imageRenderer.podPortName` | name of the image-renderer port on the pod | `http` |
| `imageRenderer.revisionHistoryLimit` | number of image-renderer replica sets to keep | `10` | | `imageRenderer.revisionHistoryLimit` | number of image-renderer replica sets to keep | `10` |
| `imageRenderer.networkPolicy.limitIngress` | Enable a NetworkPolicy to limit inbound traffic from only the created grafana pods | `true` | | `imageRenderer.networkPolicy.limitIngress` | Enable a NetworkPolicy to limit inbound traffic from only the created grafana pods | `true` |
@ -322,7 +326,7 @@ If the parameter `sidecar.datasources.enabled` is set, an init container is depl
pod. This container lists all secrets (or configmaps, though not recommended) in the cluster and pod. This container lists all secrets (or configmaps, though not recommended) in the cluster and
filters out the ones with a label as defined in `sidecar.datasources.label`. The files defined in filters out the ones with a label as defined in `sidecar.datasources.label`. The files defined in
those secrets are written to a folder and accessed by grafana on startup. Using these yaml files, those secrets are written to a folder and accessed by grafana on startup. Using these yaml files,
the data sources in grafana can be imported. the data sources in grafana can be imported.
Secrets are recommended over configmaps for this usecase because datasources usually contain private Secrets are recommended over configmaps for this usecase because datasources usually contain private
data like usernames and passwords. Secrets are the more appropriate cluster resource to manage those. data like usernames and passwords. Secrets are the more appropriate cluster resource to manage those.

View File

@ -71,6 +71,9 @@ helm.sh/chart: {{ include "grafana.chart" . }}
app.kubernetes.io/version: {{ .Values.image.tag | default .Chart.AppVersion | quote }} app.kubernetes.io/version: {{ .Values.image.tag | default .Chart.AppVersion | quote }}
{{- end }} {{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }} app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- if .Values.extraLabels }}
{{ toYaml .Values.extraLabels }}
{{- end }}
{{- end -}} {{- end -}}
{{/* {{/*

View File

@ -55,6 +55,11 @@ initContainers:
{{- range $key, $value := .Values.downloadDashboards.env }} {{- range $key, $value := .Values.downloadDashboards.env }}
- name: "{{ $key }}" - name: "{{ $key }}"
value: "{{ $value }}" value: "{{ $value }}"
{{- end }}
{{- if .Values.downloadDashboards.envFromSecret }}
envFrom:
- secretRef:
name: {{ tpl .Values.downloadDashboards.envFromSecret . }}
{{- end }} {{- end }}
volumeMounts: volumeMounts:
- name: config - name: config
@ -345,7 +350,7 @@ containers:
- name: GF_RENDERING_SERVER_URL - name: GF_RENDERING_SERVER_URL
value: http://{{ template "grafana.fullname" . }}-image-renderer.{{ template "grafana.namespace" . }}:{{ .Values.imageRenderer.service.port }}/render value: http://{{ template "grafana.fullname" . }}-image-renderer.{{ template "grafana.namespace" . }}:{{ .Values.imageRenderer.service.port }}/render
- name: GF_RENDERING_CALLBACK_URL - name: GF_RENDERING_CALLBACK_URL
value: http://{{ template "grafana.fullname" . }}.{{ template "grafana.namespace" . }}:{{ .Values.service.port }}/ value: http://{{ template "grafana.fullname" . }}.{{ template "grafana.namespace" . }}:{{ .Values.service.port }}/{{ .Values.imageRenderer.grafanaSubPath }}
{{ end }} {{ end }}
{{- range $key, $value := .Values.envValueFrom }} {{- range $key, $value := .Values.envValueFrom }}
- name: {{ $key | quote }} - name: {{ $key | quote }}

View File

@ -5,6 +5,10 @@ metadata:
namespace: {{ template "grafana.namespace" . }} namespace: {{ template "grafana.namespace" . }}
labels: labels:
{{- include "grafana.labels" . | nindent 4 }} {{- include "grafana.labels" . | nindent 4 }}
{{- with .Values.annotations }}
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
data: data:
{{- if .Values.plugins }} {{- if .Values.plugins }}
plugins: {{ join "," .Values.plugins }} plugins: {{ join "," .Values.plugins }}
@ -13,7 +17,11 @@ data:
{{- range $key, $value := index .Values "grafana.ini" }} {{- range $key, $value := index .Values "grafana.ini" }}
[{{ $key }}] [{{ $key }}]
{{- range $elem, $elemVal := $value }} {{- range $elem, $elemVal := $value }}
{{ $elem }} = {{ $elemVal }} {{- if kindIs "invalid" $elemVal }}
{{ $elem }} =
{{- else }}
{{ $elem }} = {{ tpl (toYaml $elemVal) $ }}
{{- end }}
{{- end }} {{- end }}
{{- end }} {{- end }}

View File

@ -2,12 +2,16 @@
{{- $fullName := include "grafana.fullname" . -}} {{- $fullName := include "grafana.fullname" . -}}
{{- $servicePort := .Values.service.port -}} {{- $servicePort := .Values.service.port -}}
{{- $ingressPath := .Values.ingress.path -}} {{- $ingressPath := .Values.ingress.path -}}
{{- $ingressPathType := .Values.ingress.pathType -}}
{{- $extraPaths := .Values.ingress.extraPaths -}} {{- $extraPaths := .Values.ingress.extraPaths -}}
{{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" }} {{- $newAPI := .Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" -}}
{{- if $newAPI -}}
apiVersion: networking.k8s.io/v1
{{- else if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/Ingress" }}
apiVersion: networking.k8s.io/v1beta1 apiVersion: networking.k8s.io/v1beta1
{{ else }} {{- else }}
apiVersion: extensions/v1beta1 apiVersion: extensions/v1beta1
{{ end -}} {{- end }}
kind: Ingress kind: Ingress
metadata: metadata:
name: {{ $fullName }} name: {{ $fullName }}
@ -41,16 +45,34 @@ spec:
{{ toYaml $extraPaths | indent 10 }} {{ toYaml $extraPaths | indent 10 }}
{{- end }} {{- end }}
- path: {{ $ingressPath }} - path: {{ $ingressPath }}
{{- if $newAPI }}
pathType: {{ $ingressPathType }}
{{- end }}
backend: backend:
{{- if $newAPI }}
service:
name: {{ $fullName }}
port:
number: {{ $servicePort }}
{{- else }}
serviceName: {{ $fullName }} serviceName: {{ $fullName }}
servicePort: {{ $servicePort }} servicePort: {{ $servicePort }}
{{- end }}
{{- end }} {{- end }}
{{- else }} {{- else }}
- http: - http:
paths: paths:
- backend: - backend:
{{- if $newAPI }}
service:
name: {{ $fullName }}
port:
number: {{ $servicePort }}
pathType: {{ $ingressPathType }}
{{- else }}
serviceName: {{ $fullName }} serviceName: {{ $fullName }}
servicePort: {{ $servicePort }} servicePort: {{ $servicePort }}
{{- end }}
{{- if $ingressPath }} {{- if $ingressPath }}
path: {{ $ingressPath }} path: {{ $ingressPath }}
{{- end }} {{- end }}

View File

@ -53,7 +53,7 @@ livenessProbe:
image: image:
repository: grafana/grafana repository: grafana/grafana
tag: 7.4.2 tag: 7.4.3
sha: "" sha: ""
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
@ -92,6 +92,9 @@ extraEmptyDirMounts: []
# mountPath: /etc/grafana/provisioning/notifiers # mountPath: /etc/grafana/provisioning/notifiers
# Apply extra labels to common labels.
extraLabels: {}
## Assign a PriorityClassName to pods if set ## Assign a PriorityClassName to pods if set
# priorityClassName: # priorityClassName:
@ -103,6 +106,7 @@ downloadDashboardsImage:
downloadDashboards: downloadDashboards:
env: {} env: {}
envFromSecret: ""
resources: {} resources: {}
## Pod Annotations ## Pod Annotations
@ -166,6 +170,10 @@ ingress:
# kubernetes.io/tls-acme: "true" # kubernetes.io/tls-acme: "true"
labels: {} labels: {}
path: / path: /
# pathType is only for k8s > 1.19
pathType: Prefix
hosts: hosts:
- chart-example.local - chart-example.local
## Extra paths to prepend to every host configuration. This is useful when working with annotation based services. ## Extra paths to prepend to every host configuration. This is useful when working with annotation based services.
@ -174,6 +182,16 @@ ingress:
# backend: # backend:
# serviceName: ssl-redirect # serviceName: ssl-redirect
# servicePort: use-annotation # servicePort: use-annotation
## Or for k8s > 1.19
# - path: /*
# pathType: Prefix
# backend:
# service:
# name: ssl-redirect
# port:
# name: service
tls: [] tls: []
# - secretName: chart-example-tls # - secretName: chart-example-tls
# hosts: # hosts:
@ -564,7 +582,7 @@ smtp:
sidecar: sidecar:
image: image:
repository: quay.io/kiwigrid/k8s-sidecar repository: quay.io/kiwigrid/k8s-sidecar
tag: 1.10.6 tag: 1.10.7
sha: "" sha: ""
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
resources: {} resources: {}
@ -671,6 +689,8 @@ imageRenderer:
# image-renderer service port used by both service and deployment # image-renderer service port used by both service and deployment
port: 8081 port: 8081
targetPort: 8081 targetPort: 8081
# In case a sub_path is used this needs to be added to the image renderer callback
grafanaSubPath: ""
# name of the image-renderer port on the pod # name of the image-renderer port on the pod
podPortName: http podPortName: http
# number of image-renderer replica sets to keep # number of image-renderer replica sets to keep

View File

@ -1,5 +1,5 @@
apiVersion: v1 apiVersion: v1
appVersion: 1.0.1 appVersion: 1.1.2
description: A Helm chart for prometheus node-exporter description: A Helm chart for prometheus node-exporter
home: https://github.com/prometheus/node_exporter/ home: https://github.com/prometheus/node_exporter/
keywords: keywords:
@ -14,4 +14,4 @@ maintainers:
name: prometheus-node-exporter name: prometheus-node-exporter
sources: sources:
- https://github.com/prometheus/node_exporter/ - https://github.com/prometheus/node_exporter/
version: 1.14.2 version: 1.16.2

View File

@ -21,9 +21,7 @@ spec:
{{- toYaml .Values.podAnnotations | nindent 8 }} {{- toYaml .Values.podAnnotations | nindent 8 }}
{{- end }} {{- end }}
spec: spec:
{{- if and .Values.rbac.create .Values.serviceAccount.create }}
serviceAccountName: {{ template "prometheus-node-exporter.serviceAccountName" . }} serviceAccountName: {{ template "prometheus-node-exporter.serviceAccountName" . }}
{{- end }}
{{- if .Values.securityContext }} {{- if .Values.securityContext }}
securityContext: securityContext:
{{ toYaml .Values.securityContext | indent 8 }} {{ toYaml .Values.securityContext | indent 8 }}
@ -38,7 +36,9 @@ spec:
args: args:
- --path.procfs=/host/proc - --path.procfs=/host/proc
- --path.sysfs=/host/sys - --path.sysfs=/host/sys
{{- if .Values.hostRootFsMount }}
- --path.rootfs=/host/root - --path.rootfs=/host/root
{{- end }}
- --web.listen-address=$(HOST_IP):{{ .Values.service.port }} - --web.listen-address=$(HOST_IP):{{ .Values.service.port }}
{{- if .Values.extraArgs }} {{- if .Values.extraArgs }}
{{ toYaml .Values.extraArgs | indent 12 }} {{ toYaml .Values.extraArgs | indent 12 }}
@ -77,10 +77,12 @@ spec:
- name: sys - name: sys
mountPath: /host/sys mountPath: /host/sys
readOnly: true readOnly: true
{{- if .Values.hostRootFsMount }}
- name: root - name: root
mountPath: /host/root mountPath: /host/root
mountPropagation: HostToContainer mountPropagation: HostToContainer
readOnly: true readOnly: true
{{- end }}
{{- if .Values.extraHostVolumeMounts }} {{- if .Values.extraHostVolumeMounts }}
{{- range $_, $mount := .Values.extraHostVolumeMounts }} {{- range $_, $mount := .Values.extraHostVolumeMounts }}
- name: {{ $mount.name }} - name: {{ $mount.name }}
@ -127,6 +129,10 @@ spec:
affinity: affinity:
{{ toYaml .Values.affinity | indent 8 }} {{ toYaml .Values.affinity | indent 8 }}
{{- end }} {{- end }}
{{- with .Values.dnsConfig }}
dnsConfig:
{{ toYaml . | indent 8 }}
{{- end }}
{{- if .Values.nodeSelector }} {{- if .Values.nodeSelector }}
nodeSelector: nodeSelector:
{{ toYaml .Values.nodeSelector | indent 8 }} {{ toYaml .Values.nodeSelector | indent 8 }}
@ -142,9 +148,11 @@ spec:
- name: sys - name: sys
hostPath: hostPath:
path: /sys path: /sys
{{- if .Values.hostRootFsMount }}
- name: root - name: root
hostPath: hostPath:
path: / path: /
{{- end }}
{{- if .Values.extraHostVolumeMounts }} {{- if .Values.extraHostVolumeMounts }}
{{- range $_, $mount := .Values.extraHostVolumeMounts }} {{- range $_, $mount := .Values.extraHostVolumeMounts }}
- name: {{ $mount.name }} - name: {{ $mount.name }}

View File

@ -3,7 +3,7 @@
# Declare variables to be passed into your templates. # Declare variables to be passed into your templates.
image: image:
repository: quay.io/prometheus/node-exporter repository: quay.io/prometheus/node-exporter
tag: v1.0.1 tag: v1.1.2
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
service: service:
@ -80,6 +80,10 @@ endpoints: []
# Expose the service to the host network # Expose the service to the host network
hostNetwork: true hostNetwork: true
## If true, node-exporter pods mounts host / at /host/root
##
hostRootFsMount: true
## Assign a group of affinity scheduling rules ## Assign a group of affinity scheduling rules
## ##
affinity: {} affinity: {}
@ -100,6 +104,18 @@ podAnnotations:
# Extra labels to be added to node exporter pods # Extra labels to be added to node exporter pods
podLabels: {} podLabels: {}
# Custom DNS configuration to be added to prometheus-node-exporter pods
dnsConfig: {}
# nameservers:
# - 1.2.3.4
# searches:
# - ns1.svc.cluster-domain.example
# - my.dns.search.suffix
# options:
# - name: ndots
# value: "2"
# - name: edns0
## Assign a nodeSelector if operating a hybrid cluster ## Assign a nodeSelector if operating a hybrid cluster
## ##
nodeSelector: {} nodeSelector: {}

View File

@ -1,4 +1,4 @@
# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml # https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml
--- ---
apiVersion: apiextensions.k8s.io/v1 apiVersion: apiextensions.k8s.io/v1
@ -11,6 +11,8 @@ metadata:
spec: spec:
group: monitoring.coreos.com group: monitoring.coreos.com
names: names:
categories:
- prometheus-operator
kind: AlertmanagerConfig kind: AlertmanagerConfig
listKind: AlertmanagerConfigList listKind: AlertmanagerConfigList
plural: alertmanagerconfigs plural: alertmanagerconfigs

View File

@ -1,4 +1,4 @@
# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml # https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml
--- ---
apiVersion: apiextensions.k8s.io/v1 apiVersion: apiextensions.k8s.io/v1
@ -11,6 +11,8 @@ metadata:
spec: spec:
group: monitoring.coreos.com group: monitoring.coreos.com
names: names:
categories:
- prometheus-operator
kind: Alertmanager kind: Alertmanager
listKind: AlertmanagerList listKind: AlertmanagerList
plural: alertmanagers plural: alertmanagers

View File

@ -1,4 +1,4 @@
# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml # https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml
--- ---
apiVersion: apiextensions.k8s.io/v1 apiVersion: apiextensions.k8s.io/v1
@ -11,6 +11,8 @@ metadata:
spec: spec:
group: monitoring.coreos.com group: monitoring.coreos.com
names: names:
categories:
- prometheus-operator
kind: PodMonitor kind: PodMonitor
listKind: PodMonitorList listKind: PodMonitorList
plural: podmonitors plural: podmonitors

View File

@ -1,4 +1,4 @@
# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml # https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml
--- ---
apiVersion: apiextensions.k8s.io/v1 apiVersion: apiextensions.k8s.io/v1
@ -11,6 +11,8 @@ metadata:
spec: spec:
group: monitoring.coreos.com group: monitoring.coreos.com
names: names:
categories:
- prometheus-operator
kind: Probe kind: Probe
listKind: ProbeList listKind: ProbeList
plural: probes plural: probes
@ -148,6 +150,37 @@ spec:
type: string type: string
description: Labels assigned to all metrics scraped from the targets. description: Labels assigned to all metrics scraped from the targets.
type: object type: object
relabelingConfigs:
description: 'RelabelConfigs to apply to samples before ingestion. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config'
items:
description: 'RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines `<metric_relabel_configs>`-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'
properties:
action:
description: Action to perform based on regex matching. Default is 'replace'
type: string
modulus:
description: Modulus to take of the hash of the source label values.
format: int64
type: integer
regex:
description: Regular expression against which the extracted value is matched. Default is '(.*)'
type: string
replacement:
description: Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1'
type: string
separator:
description: Separator placed between concatenated source label values. default is ';'.
type: string
sourceLabels:
description: The source labels select values from existing labels. Their content is concatenated using the configured separator and matched against the configured regular expression for the replace, keep, and drop actions.
items:
type: string
type: array
targetLabel:
description: Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available.
type: string
type: object
type: array
static: static:
description: Targets is a list of URLs to probe using the configured prober. description: Targets is a list of URLs to probe using the configured prober.
items: items:

View File

@ -1,4 +1,4 @@
# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml # https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml
--- ---
apiVersion: apiextensions.k8s.io/v1 apiVersion: apiextensions.k8s.io/v1
@ -11,6 +11,8 @@ metadata:
spec: spec:
group: monitoring.coreos.com group: monitoring.coreos.com
names: names:
categories:
- prometheus-operator
kind: Prometheus kind: Prometheus
listKind: PrometheusList listKind: PrometheusList
plural: prometheuses plural: prometheuses
@ -2639,6 +2641,11 @@ spec:
bearerTokenFile: bearerTokenFile:
description: File to read bearer token for remote write. description: File to read bearer token for remote write.
type: string type: string
headers:
additionalProperties:
type: string
description: Custom HTTP headers to be sent along with each remote write request. Be aware that headers that are set by Prometheus itself can't be overwritten. Only valid in Prometheus versions 2.25.0 and newer.
type: object
name: name:
description: The name of the remote write queue, must be unique if specified. The name is used in metrics and logging in order to differentiate queues. Only valid in Prometheus versions 2.15.0 and newer. description: The name of the remote write queue, must be unique if specified. The name is used in metrics and logging in order to differentiate queues. Only valid in Prometheus versions 2.15.0 and newer.
type: string type: string

View File

@ -1,4 +1,4 @@
# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml # https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml
--- ---
apiVersion: apiextensions.k8s.io/v1 apiVersion: apiextensions.k8s.io/v1

View File

@ -1,4 +1,4 @@
# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml # https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml
--- ---
apiVersion: apiextensions.k8s.io/v1 apiVersion: apiextensions.k8s.io/v1
@ -11,6 +11,8 @@ metadata:
spec: spec:
group: monitoring.coreos.com group: monitoring.coreos.com
names: names:
categories:
- prometheus-operator
kind: ServiceMonitor kind: ServiceMonitor
listKind: ServiceMonitorList listKind: ServiceMonitorList
plural: servicemonitors plural: servicemonitors

View File

@ -1,4 +1,4 @@
# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml # https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml
--- ---
apiVersion: apiextensions.k8s.io/v1 apiVersion: apiextensions.k8s.io/v1
@ -11,6 +11,8 @@ metadata:
spec: spec:
group: monitoring.coreos.com group: monitoring.coreos.com
names: names:
categories:
- prometheus-operator
kind: ThanosRuler kind: ThanosRuler
listKind: ThanosRulerList listKind: ThanosRulerList
plural: thanosrulers plural: thanosrulers
@ -3337,4 +3339,4 @@ status:
kind: "" kind: ""
plural: "" plural: ""
conditions: [] conditions: []
storedVersions: [] storedVersions: []

View File

@ -0,0 +1,38 @@
{{- /*
Generated file. Do not change in-place! In order to change this file first read following link:
https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack
*/ -}}
{{- define "rules.names" }}
rules:
- "alertmanager.rules"
- "general.rules"
- "k8s.rules"
- "kube-apiserver.rules"
- "kube-apiserver-availability.rules"
- "kube-apiserver-error"
- "kube-apiserver-slos"
- "kube-prometheus-general.rules"
- "kube-prometheus-node-alerting.rules"
- "kube-prometheus-node-recording.rules"
- "kube-scheduler.rules"
- "kube-state-metrics"
- "kubelet.rules"
- "kubernetes-absent"
- "kubernetes-resources"
- "kubernetes-storage"
- "kubernetes-system"
- "kubernetes-system-apiserver"
- "kubernetes-system-kubelet"
- "kubernetes-system-controller-manager"
- "kubernetes-system-scheduler"
- "node-exporter.rules"
- "node-exporter"
- "node.rules"
- "node-network"
- "node-time"
- "prometheus-operator"
- "prometheus.rules"
- "prometheus"
- "kubernetes-apps"
- "etcd"
{{- end }}

View File

@ -268,9 +268,6 @@ spec:
{{- end }} {{- end }}
portName: {{ .Values.prometheus.prometheusSpec.portName }} portName: {{ .Values.prometheus.prometheusSpec.portName }}
{{- end }} {{- end }}
{{- if .Values.prometheus.prometheusSpec.enforcedNamespaceLabel }}
enforcedNamespaceLabel: {{ .Values.prometheus.prometheusSpec.enforcedNamespaceLabel }}
{{- end }}
{{- if .Values.prometheus.prometheusSpec.volumes }} {{- if .Values.prometheus.prometheusSpec.volumes }}
volumes: volumes:
{{ toYaml .Values.prometheus.prometheusSpec.volumes | indent 4 }} {{ toYaml .Values.prometheus.prometheusSpec.volumes | indent 4 }}
@ -292,10 +289,18 @@ spec:
{{- if .Values.prometheus.prometheusSpec.ignoreNamespaceSelectors }} {{- if .Values.prometheus.prometheusSpec.ignoreNamespaceSelectors }}
ignoreNamespaceSelectors: {{ .Values.prometheus.prometheusSpec.ignoreNamespaceSelectors }} ignoreNamespaceSelectors: {{ .Values.prometheus.prometheusSpec.ignoreNamespaceSelectors }}
{{- end }} {{- end }}
{{- if .Values.prometheus.prometheusSpec.prometheusRulesExcludedFromEnforce }} {{- if .Values.prometheus.prometheusSpec.enforcedNamespaceLabel }}
enforcedNamespaceLabel: {{ .Values.prometheus.prometheusSpec.enforcedNamespaceLabel }}
{{- $prometheusDefaultRulesExcludedFromEnforce := (include "rules.names" .) | fromYaml }}
prometheusRulesExcludedFromEnforce: prometheusRulesExcludedFromEnforce:
{{- range $prometheusDefaultRulesExcludedFromEnforce.rules }}
- ruleNamespace: "{{ template "kube-prometheus-stack.namespace" $ }}"
ruleName: "{{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) . | trunc 63 | trimSuffix "-" }}"
{{- end }}
{{- if .Values.prometheus.prometheusSpec.prometheusRulesExcludedFromEnforce }}
{{ toYaml .Values.prometheus.prometheusSpec.prometheusRulesExcludedFromEnforce | indent 4 }} {{ toYaml .Values.prometheus.prometheusSpec.prometheusRulesExcludedFromEnforce | indent 4 }}
{{- end }} {{- end }}
{{- end }}
{{- if .Values.prometheus.prometheusSpec.queryLogFile }} {{- if .Values.prometheus.prometheusSpec.queryLogFile }}
queryLogFile: {{ .Values.prometheus.prometheusSpec.queryLogFile }} queryLogFile: {{ .Values.prometheus.prometheusSpec.queryLogFile }}
{{- end }} {{- end }}

View File

@ -15,12 +15,15 @@ metadata:
{{ toYaml .Values.prometheus.thanosService.annotations | indent 4 }} {{ toYaml .Values.prometheus.thanosService.annotations | indent 4 }}
{{- end }} {{- end }}
spec: spec:
type: ClusterIP type: {{ .Values.prometheus.thanosService.type }}
clusterIP: None clusterIP: None
ports: ports:
- name: {{ .Values.prometheus.thanosService.portName }} - name: {{ .Values.prometheus.thanosService.portName }}
port: {{ .Values.prometheus.thanosService.port }} port: {{ .Values.prometheus.thanosService.port }}
targetPort: {{ .Values.prometheus.thanosService.targetPort }} targetPort: {{ .Values.prometheus.thanosService.targetPort }}
{{- if eq .Values.prometheus.thanosService.type "NodePort" }}
nodePort: {{ .Values.prometheus.thanosService.nodePort }}
{{- end }}
selector: selector:
app: prometheus app: prometheus
prometheus: {{ template "kube-prometheus-stack.fullname" . }}-prometheus prometheus: {{ template "kube-prometheus-stack.fullname" . }}-prometheus

View File

@ -331,7 +331,7 @@ alertmanager:
nodePort: 30904 nodePort: 30904
## Loadbalancer source IP ranges ## Loadbalancer source IP ranges
## Only used if servicePerReplica.type is "loadbalancer" ## Only used if servicePerReplica.type is "LoadBalancer"
loadBalancerSourceRanges: [] loadBalancerSourceRanges: []
## Service type ## Service type
## ##
@ -1351,13 +1351,13 @@ prometheusOperator:
additionalPorts: [] additionalPorts: []
## Loadbalancer IP ## Loadbalancer IP
## Only use if service.type is "loadbalancer" ## Only use if service.type is "LoadBalancer"
## ##
loadBalancerIP: "" loadBalancerIP: ""
loadBalancerSourceRanges: [] loadBalancerSourceRanges: []
## Service type ## Service type
## NodePort, ClusterIP, loadbalancer ## NodePort, ClusterIP, LoadBalancer
## ##
type: ClusterIP type: ClusterIP
@ -1480,7 +1480,7 @@ prometheusOperator:
## ##
image: image:
repository: quay.io/prometheus-operator/prometheus-operator repository: quay.io/prometheus-operator/prometheus-operator
tag: v0.45.0 tag: v0.46.0
sha: "" sha: ""
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
@ -1496,7 +1496,7 @@ prometheusOperator:
## ##
prometheusConfigReloaderImage: prometheusConfigReloaderImage:
repository: quay.io/prometheus-operator/prometheus-config-reloader repository: quay.io/prometheus-operator/prometheus-config-reloader
tag: v0.45.0 tag: v0.46.0
sha: "" sha: ""
## Set the prometheus config reloader side-car CPU limit ## Set the prometheus config reloader side-car CPU limit
@ -1541,6 +1541,14 @@ prometheus:
port: 10901 port: 10901
targetPort: "grpc" targetPort: "grpc"
## Service type
##
type: ClusterIP
## Port to expose on each node
##
nodePort: 30901
## Configuration for Prometheus service ## Configuration for Prometheus service
## ##
service: service:
@ -1566,7 +1574,7 @@ prometheus:
nodePort: 30090 nodePort: 30090
## Loadbalancer IP ## Loadbalancer IP
## Only use if service.type is "loadbalancer" ## Only use if service.type is "LoadBalancer"
loadBalancerIP: "" loadBalancerIP: ""
loadBalancerSourceRanges: [] loadBalancerSourceRanges: []
## Service type ## Service type
@ -1594,7 +1602,7 @@ prometheus:
nodePort: 30091 nodePort: 30091
## Loadbalancer source IP ranges ## Loadbalancer source IP ranges
## Only used if servicePerReplica.type is "loadbalancer" ## Only used if servicePerReplica.type is "LoadBalancer"
loadBalancerSourceRanges: [] loadBalancerSourceRanges: []
## Service type ## Service type
## ##
@ -1903,10 +1911,10 @@ prometheus:
ruleSelectorNilUsesHelmValues: true ruleSelectorNilUsesHelmValues: true
## PrometheusRules to be selected for target discovery. ## PrometheusRules to be selected for target discovery.
## If {}, select all ServiceMonitors ## If {}, select all PrometheusRules
## ##
ruleSelector: {} ruleSelector: {}
## Example which select all prometheusrules resources ## Example which select all PrometheusRules resources
## with label "prometheus" with values any of "example-rules" or "example-rules-2" ## with label "prometheus" with values any of "example-rules" or "example-rules-2"
# ruleSelector: # ruleSelector:
# matchExpressions: # matchExpressions:
@ -1916,7 +1924,7 @@ prometheus:
# - example-rules # - example-rules
# - example-rules-2 # - example-rules-2
# #
## Example which select all prometheusrules resources with label "role" set to "example-rules" ## Example which select all PrometheusRules resources with label "role" set to "example-rules"
# ruleSelector: # ruleSelector:
# matchLabels: # matchLabels:
# role: example-rules # role: example-rules
@ -2234,9 +2242,14 @@ prometheus:
## configs, and they will only discover endpoints within their current namespace. Defaults to false. ## configs, and they will only discover endpoints within their current namespace. Defaults to false.
ignoreNamespaceSelectors: false ignoreNamespaceSelectors: false
## EnforcedNamespaceLabel enforces adding a namespace label of origin for each alert and metric that is user created.
## The label value will always be the namespace of the object that is being created.
## Disabled by default
enforcedNamespaceLabel: ""
## PrometheusRulesExcludedFromEnforce - list of prometheus rules to be excluded from enforcing of adding namespace labels. ## PrometheusRulesExcludedFromEnforce - list of prometheus rules to be excluded from enforcing of adding namespace labels.
## Works only if enforcedNamespaceLabel set to true. Make sure both ruleNamespace and ruleName are set for each pair ## Works only if enforcedNamespaceLabel set to true. Make sure both ruleNamespace and ruleName are set for each pair
prometheusRulesExcludedFromEnforce: false prometheusRulesExcludedFromEnforce: []
## QueryLogFile specifies the file to which PromQL queries are logged. Note that this location must be writable, ## QueryLogFile specifies the file to which PromQL queries are logged. Note that this location must be writable,
## and can be persisted using an attached volume. Alternatively, the location can be set to a stdout location such ## and can be persisted using an attached volume. Alternatively, the location can be set to a stdout location such

View File

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
VERSION=13.13.0 VERSION=14.3.0
rm -rf charts/kube-prometheus-stack rm -rf charts/kube-prometheus-stack
curl -L -s -o - https://github.com/prometheus-community/helm-charts/releases/download/kube-prometheus-stack-${VERSION}/kube-prometheus-stack-${VERSION}.tgz | tar xfz - -C charts curl -L -s -o - https://github.com/prometheus-community/helm-charts/releases/download/kube-prometheus-stack-${VERSION}/kube-prometheus-stack-${VERSION}.tgz | tar xfz - -C charts