Change to prometheus-community
This commit is contained in:
parent
9583c951bb
commit
5ef5925b19
@ -1,15 +1,15 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
- name: alertmanager
|
- name: alertmanager
|
||||||
repository: https://prometheus-community.github.io/helm-charts
|
repository: https://prometheus-community.github.io/helm-charts
|
||||||
version: 1.16.1
|
version: 1.20.1
|
||||||
- name: kube-state-metrics
|
- name: kube-state-metrics
|
||||||
repository: https://prometheus-community.github.io/helm-charts
|
repository: https://prometheus-community.github.io/helm-charts
|
||||||
version: 5.32.0
|
version: 5.33.2
|
||||||
- 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: 4.45.2
|
version: 4.46.1
|
||||||
- name: prometheus-pushgateway
|
- name: prometheus-pushgateway
|
||||||
repository: https://prometheus-community.github.io/helm-charts
|
repository: https://prometheus-community.github.io/helm-charts
|
||||||
version: 3.1.0
|
version: 3.3.0
|
||||||
digest: sha256:8ca0a26f44a2c37bfe5bb47146bb0460cbe1209ca0a4e246677bbe1bfd0d98c6
|
digest: sha256:8731bf2c5cf78dcad4c18c76bd41bcc1dcff00465a62aea49eada8f0b51e53e4
|
||||||
generated: "2025-04-17T12:59:39.016693261Z"
|
generated: "2025-05-31T20:25:19.346034071Z"
|
||||||
|
|||||||
@ -1,59 +1,58 @@
|
|||||||
apiVersion: v2
|
|
||||||
name: prometheus
|
|
||||||
# renovate: github=prometheus/prometheus
|
|
||||||
appVersion: v3.3.0
|
|
||||||
version: 27.11.0
|
|
||||||
kubeVersion: ">=1.19.0-0"
|
|
||||||
description: Prometheus is a monitoring system and time series database.
|
|
||||||
home: https://prometheus.io/
|
|
||||||
icon: https://raw.githubusercontent.com/prometheus/prometheus.github.io/master/assets/prometheus_logo-cb55bb5c346.png
|
|
||||||
sources:
|
|
||||||
- https://github.com/prometheus/alertmanager
|
|
||||||
- https://github.com/prometheus/prometheus
|
|
||||||
- https://github.com/prometheus/pushgateway
|
|
||||||
- https://github.com/prometheus/node_exporter
|
|
||||||
- https://github.com/kubernetes/kube-state-metrics
|
|
||||||
maintainers:
|
|
||||||
- name: gianrubio
|
|
||||||
email: gianrubio@gmail.com
|
|
||||||
url: https://github.com/gianrubio
|
|
||||||
- name: zanhsieh
|
|
||||||
email: zanhsieh@gmail.com
|
|
||||||
url: https://github.com/zanhsieh
|
|
||||||
- name: Xtigyro
|
|
||||||
email: miroslav.hadzhiev@gmail.com
|
|
||||||
url: https://github.com/Xtigyro
|
|
||||||
- name: naseemkullah
|
|
||||||
email: naseem@transit.app
|
|
||||||
url: https://github.com/naseemkullah
|
|
||||||
- name: zeritti
|
|
||||||
email: rootsandtrees@posteo.de
|
|
||||||
url: https://github.com/zeritti
|
|
||||||
type: application
|
|
||||||
dependencies:
|
|
||||||
- name: alertmanager
|
|
||||||
version: "1.16.*"
|
|
||||||
repository: https://prometheus-community.github.io/helm-charts
|
|
||||||
condition: alertmanager.enabled
|
|
||||||
- name: kube-state-metrics
|
|
||||||
version: "5.32.*"
|
|
||||||
repository: https://prometheus-community.github.io/helm-charts
|
|
||||||
condition: kube-state-metrics.enabled
|
|
||||||
- name: prometheus-node-exporter
|
|
||||||
version: "4.45.*"
|
|
||||||
repository: https://prometheus-community.github.io/helm-charts
|
|
||||||
condition: prometheus-node-exporter.enabled
|
|
||||||
- name: prometheus-pushgateway
|
|
||||||
version: "3.1.*"
|
|
||||||
repository: https://prometheus-community.github.io/helm-charts
|
|
||||||
condition: prometheus-pushgateway.enabled
|
|
||||||
keywords:
|
|
||||||
- monitoring
|
|
||||||
- prometheus
|
|
||||||
annotations:
|
annotations:
|
||||||
"artifacthub.io/license": Apache-2.0
|
artifacthub.io/license: Apache-2.0
|
||||||
"artifacthub.io/links": |
|
artifacthub.io/links: |
|
||||||
- name: Chart Source
|
- name: Chart Source
|
||||||
url: https://github.com/prometheus-community/helm-charts
|
url: https://github.com/prometheus-community/helm-charts
|
||||||
- name: Upstream Project
|
- name: Upstream Project
|
||||||
url: https://github.com/prometheus/prometheus
|
url: https://github.com/prometheus/prometheus
|
||||||
|
apiVersion: v2
|
||||||
|
appVersion: v3.4.1
|
||||||
|
dependencies:
|
||||||
|
- condition: alertmanager.enabled
|
||||||
|
name: alertmanager
|
||||||
|
repository: https://prometheus-community.github.io/helm-charts
|
||||||
|
version: 1.20.*
|
||||||
|
- condition: kube-state-metrics.enabled
|
||||||
|
name: kube-state-metrics
|
||||||
|
repository: https://prometheus-community.github.io/helm-charts
|
||||||
|
version: 5.33.*
|
||||||
|
- condition: prometheus-node-exporter.enabled
|
||||||
|
name: prometheus-node-exporter
|
||||||
|
repository: https://prometheus-community.github.io/helm-charts
|
||||||
|
version: 4.46.*
|
||||||
|
- condition: prometheus-pushgateway.enabled
|
||||||
|
name: prometheus-pushgateway
|
||||||
|
repository: https://prometheus-community.github.io/helm-charts
|
||||||
|
version: 3.3.*
|
||||||
|
description: Prometheus is a monitoring system and time series database.
|
||||||
|
home: https://prometheus.io/
|
||||||
|
icon: https://raw.githubusercontent.com/prometheus/prometheus.github.io/master/assets/prometheus_logo-cb55bb5c346.png
|
||||||
|
keywords:
|
||||||
|
- monitoring
|
||||||
|
- prometheus
|
||||||
|
kubeVersion: '>=1.19.0-0'
|
||||||
|
maintainers:
|
||||||
|
- email: gianrubio@gmail.com
|
||||||
|
name: gianrubio
|
||||||
|
url: https://github.com/gianrubio
|
||||||
|
- email: zanhsieh@gmail.com
|
||||||
|
name: zanhsieh
|
||||||
|
url: https://github.com/zanhsieh
|
||||||
|
- email: miroslav.hadzhiev@gmail.com
|
||||||
|
name: Xtigyro
|
||||||
|
url: https://github.com/Xtigyro
|
||||||
|
- email: naseem@transit.app
|
||||||
|
name: naseemkullah
|
||||||
|
url: https://github.com/naseemkullah
|
||||||
|
- email: rootsandtrees@posteo.de
|
||||||
|
name: zeritti
|
||||||
|
url: https://github.com/zeritti
|
||||||
|
name: prometheus
|
||||||
|
sources:
|
||||||
|
- https://github.com/prometheus/alertmanager
|
||||||
|
- https://github.com/prometheus/prometheus
|
||||||
|
- https://github.com/prometheus/pushgateway
|
||||||
|
- https://github.com/prometheus/node_exporter
|
||||||
|
- https://github.com/kubernetes/kube-state-metrics
|
||||||
|
type: application
|
||||||
|
version: 27.18.0
|
||||||
|
|||||||
26
charts/prometheus/charts/alertmanager/.helmignore
Normal file
26
charts/prometheus/charts/alertmanager/.helmignore
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# Patterns to ignore when building packages.
|
||||||
|
# This supports shell glob matching, relative path matching, and
|
||||||
|
# negation (prefixed with !). Only one pattern per line.
|
||||||
|
.DS_Store
|
||||||
|
# Common VCS dirs
|
||||||
|
.git/
|
||||||
|
.gitignore
|
||||||
|
.bzr/
|
||||||
|
.bzrignore
|
||||||
|
.hg/
|
||||||
|
.hgignore
|
||||||
|
.svn/
|
||||||
|
# Common backup files
|
||||||
|
*.swp
|
||||||
|
*.bak
|
||||||
|
*.tmp
|
||||||
|
*.orig
|
||||||
|
*~
|
||||||
|
# Various IDEs
|
||||||
|
.project
|
||||||
|
.idea/
|
||||||
|
*.tmproj
|
||||||
|
.vscode/
|
||||||
|
|
||||||
|
unittests/
|
||||||
|
ci/
|
||||||
26
charts/prometheus/charts/alertmanager/Chart.yaml
Normal file
26
charts/prometheus/charts/alertmanager/Chart.yaml
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
annotations:
|
||||||
|
artifacthub.io/license: Apache-2.0
|
||||||
|
artifacthub.io/links: |
|
||||||
|
- name: Chart Source
|
||||||
|
url: https://github.com/prometheus-community/helm-charts
|
||||||
|
apiVersion: v2
|
||||||
|
appVersion: v0.28.1
|
||||||
|
description: The Alertmanager handles alerts sent by client applications such as the
|
||||||
|
Prometheus server.
|
||||||
|
home: https://prometheus.io/
|
||||||
|
icon: https://raw.githubusercontent.com/prometheus/prometheus.github.io/master/assets/prometheus_logo-cb55bb5c346.png
|
||||||
|
keywords:
|
||||||
|
- monitoring
|
||||||
|
kubeVersion: '>=1.19.0-0'
|
||||||
|
maintainers:
|
||||||
|
- email: monotek23@gmail.com
|
||||||
|
name: monotek
|
||||||
|
url: https://github.com/monotek
|
||||||
|
- email: naseem@transit.app
|
||||||
|
name: naseemkullah
|
||||||
|
url: https://github.com/naseemkullah
|
||||||
|
name: alertmanager
|
||||||
|
sources:
|
||||||
|
- https://github.com/prometheus/alertmanager
|
||||||
|
type: application
|
||||||
|
version: 1.20.1
|
||||||
62
charts/prometheus/charts/alertmanager/README.md
Normal file
62
charts/prometheus/charts/alertmanager/README.md
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
# Alertmanager
|
||||||
|
|
||||||
|
As per [prometheus.io documentation](https://prometheus.io/docs/alerting/latest/alertmanager/):
|
||||||
|
> The Alertmanager handles alerts sent by client applications such as the
|
||||||
|
> Prometheus server. It takes care of deduplicating, grouping, and routing them
|
||||||
|
> to the correct receiver integration such as email, PagerDuty, or OpsGenie. It
|
||||||
|
> also takes care of silencing and inhibition of alerts.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
Kubernetes 1.14+
|
||||||
|
|
||||||
|
## Get Repository Info
|
||||||
|
|
||||||
|
```console
|
||||||
|
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
|
||||||
|
helm repo update
|
||||||
|
```
|
||||||
|
|
||||||
|
_See [`helm repo`](https://helm.sh/docs/helm/helm_repo/) for command documentation._
|
||||||
|
|
||||||
|
## Install Chart
|
||||||
|
|
||||||
|
```console
|
||||||
|
helm install [RELEASE_NAME] prometheus-community/alertmanager
|
||||||
|
```
|
||||||
|
|
||||||
|
_See [configuration](#configuration) below._
|
||||||
|
|
||||||
|
_See [helm install](https://helm.sh/docs/helm/helm_install/) for command documentation._
|
||||||
|
|
||||||
|
## Uninstall Chart
|
||||||
|
|
||||||
|
```console
|
||||||
|
helm uninstall [RELEASE_NAME]
|
||||||
|
```
|
||||||
|
|
||||||
|
This removes all the Kubernetes components associated with the chart and deletes the release.
|
||||||
|
|
||||||
|
_See [helm uninstall](https://helm.sh/docs/helm/helm_uninstall/) for command documentation._
|
||||||
|
|
||||||
|
## Upgrading Chart
|
||||||
|
|
||||||
|
```console
|
||||||
|
helm upgrade [RELEASE_NAME] [CHART] --install
|
||||||
|
```
|
||||||
|
|
||||||
|
_See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documentation._
|
||||||
|
|
||||||
|
### To 1.0
|
||||||
|
|
||||||
|
The [configmap-reload](https://github.com/jimmidyson/configmap-reload) container was replaced by the [prometheus-config-reloader](https://github.com/prometheus-operator/prometheus-operator/tree/main/cmd/prometheus-config-reloader).
|
||||||
|
Extra command-line arguments specified via configmapReload.prometheus.extraArgs are not compatible and will break with the new prometheus-config-reloader, refer to the [sources](https://github.com/prometheus-operator/prometheus-operator/blob/main/cmd/prometheus-config-reloader/main.go) in order to make the appropriate adjustment to the extea command-line arguments.
|
||||||
|
The `networking.k8s.io/v1beta1` is no longer supported. use [`networking.k8s.io/v1`](https://kubernetes.io/docs/reference/using-api/deprecation-guide/#ingressclass-v122).
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
See [Customizing the Chart Before Installing](https://helm.sh/docs/intro/using_helm/#customizing-the-chart-before-installing). To see all configurable options with detailed comments, visit the chart's [values.yaml](./values.yaml), or run these configuration commands:
|
||||||
|
|
||||||
|
```console
|
||||||
|
helm show values prometheus-community/alertmanager
|
||||||
|
```
|
||||||
21
charts/prometheus/charts/alertmanager/templates/NOTES.txt
Normal file
21
charts/prometheus/charts/alertmanager/templates/NOTES.txt
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
1. Get the application URL by running these commands:
|
||||||
|
{{- if .Values.ingress.enabled }}
|
||||||
|
{{- range $host := .Values.ingress.hosts }}
|
||||||
|
{{- range .paths }}
|
||||||
|
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else if contains "NodePort" .Values.service.type }}
|
||||||
|
export NODE_PORT=$(kubectl get --namespace {{ include "alertmanager.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "alertmanager.fullname" . }})
|
||||||
|
export NODE_IP=$(kubectl get nodes --namespace {{ include "alertmanager.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||||
|
echo http://$NODE_IP:$NODE_PORT
|
||||||
|
{{- else if contains "LoadBalancer" .Values.service.type }}
|
||||||
|
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||||
|
You can watch the status of by running 'kubectl get --namespace {{ include "alertmanager.namespace" . }} svc -w {{ include "alertmanager.fullname" . }}'
|
||||||
|
export SERVICE_IP=$(kubectl get svc --namespace {{ include "alertmanager.namespace" . }} {{ include "alertmanager.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
|
||||||
|
echo http://$SERVICE_IP:{{ .Values.service.port }}
|
||||||
|
{{- else if contains "ClusterIP" .Values.service.type }}
|
||||||
|
export POD_NAME=$(kubectl get pods --namespace {{ include "alertmanager.namespace" . }} -l "app.kubernetes.io/name={{ include "alertmanager.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||||
|
echo "Visit http://127.0.0.1:{{ .Values.service.port }} to use your application"
|
||||||
|
kubectl --namespace {{ include "alertmanager.namespace" . }} port-forward $POD_NAME {{ .Values.service.port }}:80
|
||||||
|
{{- end }}
|
||||||
92
charts/prometheus/charts/alertmanager/templates/_helpers.tpl
Normal file
92
charts/prometheus/charts/alertmanager/templates/_helpers.tpl
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
{{/* vim: set filetype=mustache: */}}
|
||||||
|
{{/*
|
||||||
|
Expand the name of the chart.
|
||||||
|
*/}}
|
||||||
|
{{- define "alertmanager.name" -}}
|
||||||
|
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create a default fully qualified app name.
|
||||||
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
If release name contains chart name it will be used as a full name.
|
||||||
|
*/}}
|
||||||
|
{{- define "alertmanager.fullname" -}}
|
||||||
|
{{- if .Values.fullnameOverride }}
|
||||||
|
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- $name := default .Chart.Name .Values.nameOverride }}
|
||||||
|
{{- if contains $name .Release.Name }}
|
||||||
|
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create chart name and version as used by the chart label.
|
||||||
|
*/}}
|
||||||
|
{{- define "alertmanager.chart" -}}
|
||||||
|
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Common labels
|
||||||
|
*/}}
|
||||||
|
{{- define "alertmanager.labels" -}}
|
||||||
|
helm.sh/chart: {{ include "alertmanager.chart" . }}
|
||||||
|
{{ include "alertmanager.selectorLabels" . }}
|
||||||
|
{{- with .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/version: {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Selector labels
|
||||||
|
*/}}
|
||||||
|
{{- define "alertmanager.selectorLabels" -}}
|
||||||
|
app.kubernetes.io/name: {{ include "alertmanager.name" . }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create the name of the service account to use
|
||||||
|
*/}}
|
||||||
|
{{- define "alertmanager.serviceAccountName" -}}
|
||||||
|
{{- if .Values.serviceAccount.create }}
|
||||||
|
{{- default (include "alertmanager.fullname" .) .Values.serviceAccount.name }}
|
||||||
|
{{- else }}
|
||||||
|
{{- default "default" .Values.serviceAccount.name }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Define Ingress apiVersion
|
||||||
|
*/}}
|
||||||
|
{{- define "alertmanager.ingress.apiVersion" -}}
|
||||||
|
{{- printf "networking.k8s.io/v1" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Define Pdb apiVersion
|
||||||
|
*/}}
|
||||||
|
{{- define "alertmanager.pdb.apiVersion" -}}
|
||||||
|
{{- if $.Capabilities.APIVersions.Has "policy/v1/PodDisruptionBudget" }}
|
||||||
|
{{- printf "policy/v1" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- printf "policy/v1beta1" }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Allow overriding alertmanager namespace
|
||||||
|
*/}}
|
||||||
|
{{- define "alertmanager.namespace" -}}
|
||||||
|
{{- if .Values.namespaceOverride -}}
|
||||||
|
{{- .Values.namespaceOverride -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- .Release.Namespace -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
{{- if .Values.config.enabled }}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: {{ include "alertmanager.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "alertmanager.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.configAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
namespace: {{ include "alertmanager.namespace" . }}
|
||||||
|
data:
|
||||||
|
alertmanager.yml: |
|
||||||
|
{{- $config := omit .Values.config "enabled" }}
|
||||||
|
{{- toYaml $config | default "{}" | nindent 4 }}
|
||||||
|
{{- range $key, $value := .Values.templates }}
|
||||||
|
{{ $key }}: |-
|
||||||
|
{{- $value | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
47
charts/prometheus/charts/alertmanager/templates/ingress.yaml
Normal file
47
charts/prometheus/charts/alertmanager/templates/ingress.yaml
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
{{- if .Values.ingress.enabled }}
|
||||||
|
{{- $fullName := include "alertmanager.fullname" . }}
|
||||||
|
{{- $svcPort := .Values.service.port }}
|
||||||
|
apiVersion: {{ include "alertmanager.ingress.apiVersion" . }}
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: {{ $fullName }}
|
||||||
|
labels:
|
||||||
|
{{- include "alertmanager.labels" . | nindent 4 }}
|
||||||
|
{{- if .Values.ingress.labels }}
|
||||||
|
{{- toYaml .Values.ingress.labels | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.ingress.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
namespace: {{ include "alertmanager.namespace" . }}
|
||||||
|
spec:
|
||||||
|
{{- if .Values.ingress.className }}
|
||||||
|
ingressClassName: {{ .Values.ingress.className }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.ingress.tls }}
|
||||||
|
tls:
|
||||||
|
{{- range .Values.ingress.tls }}
|
||||||
|
- hosts:
|
||||||
|
{{- range .hosts }}
|
||||||
|
- {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
secretName: {{ .secretName }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
rules:
|
||||||
|
{{- range .Values.ingress.hosts }}
|
||||||
|
- host: {{ .host | quote }}
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
{{- range .paths }}
|
||||||
|
- path: {{ .path }}
|
||||||
|
pathType: {{ .pathType }}
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: {{ $fullName }}
|
||||||
|
port:
|
||||||
|
number: {{ $svcPort }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,56 @@
|
|||||||
|
{{- if and .Values.servicePerReplica.enabled .Values.ingressPerReplica.enabled }}
|
||||||
|
{{- $pathType := .Values.ingressPerReplica.pathType }}
|
||||||
|
{{- $count := .Values.replicaCount | int -}}
|
||||||
|
{{- $servicePort := .Values.service.port -}}
|
||||||
|
{{- $ingressValues := .Values.ingressPerReplica -}}
|
||||||
|
{{- $fullName := include "alertmanager.fullname" . }}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: List
|
||||||
|
metadata:
|
||||||
|
name: {{ $fullName }}-ingressperreplica
|
||||||
|
namespace: {{ include "alertmanager.namespace" . }}
|
||||||
|
items:
|
||||||
|
{{- range $i, $e := until $count }}
|
||||||
|
- kind: Ingress
|
||||||
|
apiVersion: {{ include "alertmanager.ingress.apiVersion" $ }}
|
||||||
|
metadata:
|
||||||
|
name: {{ $fullName }}-{{ $i }}
|
||||||
|
namespace: {{ include "alertmanager.namespace" $ }}
|
||||||
|
labels:
|
||||||
|
{{- include "alertmanager.labels" $ | nindent 8 }}
|
||||||
|
{{- if $ingressValues.labels }}
|
||||||
|
{{ toYaml $ingressValues.labels | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if $ingressValues.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml $ingressValues.annotations | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
{{- if $ingressValues.className }}
|
||||||
|
ingressClassName: {{ $ingressValues.className }}
|
||||||
|
{{- end }}
|
||||||
|
rules:
|
||||||
|
- host: {{ $ingressValues.hostPrefix }}-{{ $i }}.{{ $ingressValues.hostDomain }}
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
{{- range $p := $ingressValues.paths }}
|
||||||
|
- path: {{ tpl $p $ }}
|
||||||
|
pathType: {{ $pathType }}
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: {{ $fullName }}-{{ $i }}
|
||||||
|
port:
|
||||||
|
name: http
|
||||||
|
{{- end -}}
|
||||||
|
{{- if or $ingressValues.tlsSecretName $ingressValues.tlsSecretPerReplica.enabled }}
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- {{ $ingressValues.hostPrefix }}-{{ $i }}.{{ $ingressValues.hostDomain }}
|
||||||
|
{{- if $ingressValues.tlsSecretPerReplica.enabled }}
|
||||||
|
secretName: {{ $ingressValues.tlsSecretPerReplica.prefix }}-{{ $i }}
|
||||||
|
{{- else }}
|
||||||
|
secretName: {{ $ingressValues.tlsSecretName }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
14
charts/prometheus/charts/alertmanager/templates/pdb.yaml
Normal file
14
charts/prometheus/charts/alertmanager/templates/pdb.yaml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{{- if .Values.podDisruptionBudget }}
|
||||||
|
apiVersion: {{ include "alertmanager.pdb.apiVersion" . }}
|
||||||
|
kind: PodDisruptionBudget
|
||||||
|
metadata:
|
||||||
|
name: {{ include "alertmanager.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "alertmanager.labels" . | nindent 4 }}
|
||||||
|
namespace: {{ include "alertmanager.namespace" . }}
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "alertmanager.selectorLabels" . | nindent 6 }}
|
||||||
|
{{- toYaml .Values.podDisruptionBudget | nindent 2 }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
{{- if .Values.serviceAccount.create }}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: {{ include "alertmanager.serviceAccountName" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "alertmanager.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.serviceAccount.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
namespace: {{ include "alertmanager.namespace" . }}
|
||||||
|
automountServiceAccountToken: {{ .Values.automountServiceAccountToken }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,44 @@
|
|||||||
|
{{- if and .Values.servicePerReplica.enabled }}
|
||||||
|
{{- $count := .Values.replicaCount | int -}}
|
||||||
|
{{- $serviceValues := .Values.servicePerReplica -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: List
|
||||||
|
metadata:
|
||||||
|
name: {{ include "alertmanager.fullname" . }}-serviceperreplica
|
||||||
|
namespace: {{ include "alertmanager.namespace" . }}
|
||||||
|
items:
|
||||||
|
{{- range $i, $e := until $count }}
|
||||||
|
- apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ include "alertmanager.fullname" $ }}-{{ $i }}
|
||||||
|
namespace: {{ include "alertmanager.namespace" $ }}
|
||||||
|
labels:
|
||||||
|
{{- include "alertmanager.labels" $ | nindent 8 }}
|
||||||
|
{{- if $serviceValues.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml $serviceValues.annotations | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
{{- if $serviceValues.clusterIP }}
|
||||||
|
clusterIP: {{ $serviceValues.clusterIP }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if $serviceValues.loadBalancerSourceRanges }}
|
||||||
|
loadBalancerSourceRanges:
|
||||||
|
{{- range $cidr := $serviceValues.loadBalancerSourceRanges }}
|
||||||
|
- {{ $cidr }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if ne $serviceValues.type "ClusterIP" }}
|
||||||
|
externalTrafficPolicy: {{ $serviceValues.externalTrafficPolicy }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: {{ $.Values.service.port }}
|
||||||
|
targetPort: {{ $.Values.containerPortName }}
|
||||||
|
selector:
|
||||||
|
{{- include "alertmanager.selectorLabels" $ | nindent 8 }}
|
||||||
|
statefulset.kubernetes.io/pod-name: {{ include "alertmanager.fullname" $ }}-{{ $i }}
|
||||||
|
type: "{{ $serviceValues.type }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,75 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ include "alertmanager.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "alertmanager.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.service.labels }}
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.service.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
namespace: {{ include "alertmanager.namespace" . }}
|
||||||
|
spec:
|
||||||
|
{{- if .Values.service.ipDualStack.enabled }}
|
||||||
|
ipFamilies: {{ toYaml .Values.service.ipDualStack.ipFamilies | nindent 4 }}
|
||||||
|
ipFamilyPolicy: {{ .Values.service.ipDualStack.ipFamilyPolicy }}
|
||||||
|
{{- end }}
|
||||||
|
type: {{ .Values.service.type }}
|
||||||
|
{{- with .Values.service.loadBalancerIP }}
|
||||||
|
loadBalancerIP: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.service.loadBalancerSourceRanges }}
|
||||||
|
loadBalancerSourceRanges:
|
||||||
|
{{- range $cidr := . }}
|
||||||
|
- {{ $cidr }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- port: {{ .Values.service.port }}
|
||||||
|
targetPort: {{ .Values.containerPortName }}
|
||||||
|
protocol: TCP
|
||||||
|
name: http
|
||||||
|
{{- if (and (eq .Values.service.type "NodePort") .Values.service.nodePort) }}
|
||||||
|
nodePort: {{ .Values.service.nodePort }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.service.extraPorts }}
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
selector:
|
||||||
|
{{- include "alertmanager.selectorLabels" . | nindent 4 }}
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ include "alertmanager.fullname" . }}-headless
|
||||||
|
labels:
|
||||||
|
{{- include "alertmanager.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.service.labels }}
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
namespace: {{ include "alertmanager.namespace" . }}
|
||||||
|
spec:
|
||||||
|
clusterIP: None
|
||||||
|
ports:
|
||||||
|
- port: {{ .Values.service.port }}
|
||||||
|
targetPort: {{ .Values.containerPortName }}
|
||||||
|
protocol: TCP
|
||||||
|
name: http
|
||||||
|
{{- if or (gt (int .Values.replicaCount) 1) (.Values.additionalPeers) }}
|
||||||
|
- port: {{ .Values.service.clusterPort }}
|
||||||
|
targetPort: clusterpeer-tcp
|
||||||
|
protocol: TCP
|
||||||
|
name: cluster-tcp
|
||||||
|
- port: {{ .Values.service.clusterPort }}
|
||||||
|
targetPort: clusterpeer-udp
|
||||||
|
protocol: UDP
|
||||||
|
name: cluster-udp
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.service.extraPorts }}
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
selector:
|
||||||
|
{{- include "alertmanager.selectorLabels" . | nindent 4 }}
|
||||||
264
charts/prometheus/charts/alertmanager/templates/statefulset.yaml
Normal file
264
charts/prometheus/charts/alertmanager/templates/statefulset.yaml
Normal file
@ -0,0 +1,264 @@
|
|||||||
|
{{- $svcClusterPort := .Values.service.clusterPort }}
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: StatefulSet
|
||||||
|
metadata:
|
||||||
|
name: {{ include "alertmanager.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "alertmanager.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.statefulSet.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
namespace: {{ include "alertmanager.namespace" . }}
|
||||||
|
spec:
|
||||||
|
replicas: {{ .Values.replicaCount }}
|
||||||
|
minReadySeconds: {{ .Values.minReadySeconds }}
|
||||||
|
revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "alertmanager.selectorLabels" . | nindent 6 }}
|
||||||
|
serviceName: {{ include "alertmanager.fullname" . }}-headless
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "alertmanager.selectorLabels" . | nindent 8 }}
|
||||||
|
{{- with .Values.podLabels }}
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
annotations:
|
||||||
|
{{- if not .Values.configmapReload.enabled }}
|
||||||
|
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.podAnnotations }}
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
automountServiceAccountToken: {{ .Values.automountServiceAccountToken }}
|
||||||
|
{{- with .Values.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
serviceAccountName: {{ include "alertmanager.serviceAccountName" . }}
|
||||||
|
{{- with .Values.dnsConfig }}
|
||||||
|
dnsConfig:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.hostAliases }}
|
||||||
|
hostAliases:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.schedulerName }}
|
||||||
|
schedulerName: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or .Values.podAntiAffinity .Values.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.affinity }}
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if eq .Values.podAntiAffinity "hard" }}
|
||||||
|
podAntiAffinity:
|
||||||
|
requiredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
- topologyKey: {{ .Values.podAntiAffinityTopologyKey }}
|
||||||
|
labelSelector:
|
||||||
|
matchExpressions:
|
||||||
|
- {key: app.kubernetes.io/name, operator: In, values: [{{ include "alertmanager.name" . }}]}
|
||||||
|
{{- else if eq .Values.podAntiAffinity "soft" }}
|
||||||
|
podAntiAffinity:
|
||||||
|
preferredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
- weight: 100
|
||||||
|
podAffinityTerm:
|
||||||
|
topologyKey: {{ .Values.podAntiAffinityTopologyKey }}
|
||||||
|
labelSelector:
|
||||||
|
matchExpressions:
|
||||||
|
- {key: app.kubernetes.io/name, operator: In, values: [{{ include "alertmanager.name" . }}]}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.priorityClassName }}
|
||||||
|
priorityClassName: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.topologySpreadConstraints }}
|
||||||
|
topologySpreadConstraints:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||||
|
{{- with .Values.extraInitContainers }}
|
||||||
|
initContainers:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
containers:
|
||||||
|
{{- if .Values.configmapReload.enabled }}
|
||||||
|
- name: {{ .Chart.Name }}-{{ .Values.configmapReload.name }}
|
||||||
|
image: "{{ .Values.configmapReload.image.repository }}:{{ .Values.configmapReload.image.tag }}"
|
||||||
|
imagePullPolicy: "{{ .Values.configmapReload.image.pullPolicy }}"
|
||||||
|
{{- with .Values.configmapReload.extraEnv }}
|
||||||
|
env:
|
||||||
|
{{- toYaml . | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
args:
|
||||||
|
{{- if and (hasKey .Values.configmapReload.extraArgs "config-file" | not) (hasKey .Values.configmapReload.extraArgs "watched-dir" | not) }}
|
||||||
|
- --watched-dir=/etc/alertmanager
|
||||||
|
{{- end }}
|
||||||
|
{{- if not (hasKey .Values.configmapReload.extraArgs "reload-url") }}
|
||||||
|
- --reload-url=http://127.0.0.1:9093/-/reload
|
||||||
|
{{- end }}
|
||||||
|
{{- range $key, $value := .Values.configmapReload.extraArgs }}
|
||||||
|
- --{{ $key }}={{ $value }}
|
||||||
|
{{- end }}
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.configmapReload.resources | nindent 12 }}
|
||||||
|
{{- with .Values.configmapReload.containerPort }}
|
||||||
|
ports:
|
||||||
|
- containerPort: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.configmapReload.livenessProbe }}
|
||||||
|
livenessProbe:
|
||||||
|
{{- toYaml . | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.configmapReload.readinessProbe }}
|
||||||
|
readinessProbe:
|
||||||
|
{{- toYaml . | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.configmapReload.securityContext }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml . | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
volumeMounts:
|
||||||
|
{{- if .Values.config.enabled }}
|
||||||
|
- name: config
|
||||||
|
mountPath: /etc/alertmanager
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.configmapReload.extraVolumeMounts }}
|
||||||
|
{{- toYaml .Values.configmapReload.extraVolumeMounts | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
- name: {{ .Chart.Name }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.securityContext | nindent 12 }}
|
||||||
|
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||||
|
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||||
|
env:
|
||||||
|
- name: POD_IP
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
apiVersion: v1
|
||||||
|
fieldPath: status.podIP
|
||||||
|
{{- if .Values.extraEnv }}
|
||||||
|
{{- toYaml .Values.extraEnv | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.command }}
|
||||||
|
command:
|
||||||
|
{{- toYaml . | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
args:
|
||||||
|
- --storage.path=/alertmanager
|
||||||
|
{{- if not (hasKey .Values.extraArgs "config.file") }}
|
||||||
|
- --config.file=/etc/alertmanager/alertmanager.yml
|
||||||
|
{{- end }}
|
||||||
|
{{- if or (gt (int .Values.replicaCount) 1) (.Values.additionalPeers) }}
|
||||||
|
- --cluster.advertise-address=[$(POD_IP)]:{{ $svcClusterPort }}
|
||||||
|
- --cluster.listen-address=0.0.0.0:{{ $svcClusterPort }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if gt (int .Values.replicaCount) 1}}
|
||||||
|
{{- $fullName := include "alertmanager.fullname" . }}
|
||||||
|
{{- range $i := until (int .Values.replicaCount) }}
|
||||||
|
- --cluster.peer={{ $fullName }}-{{ $i }}.{{ $fullName }}-headless:{{ $svcClusterPort }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.additionalPeers }}
|
||||||
|
{{- range $item := .Values.additionalPeers }}
|
||||||
|
- --cluster.peer={{ $item }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range $key, $value := .Values.extraArgs }}
|
||||||
|
- --{{ $key }}={{ $value }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.baseURL }}
|
||||||
|
- --web.external-url={{ .Values.baseURL }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- name: {{ .Values.containerPortName }}
|
||||||
|
containerPort: 9093
|
||||||
|
protocol: TCP
|
||||||
|
{{- if or (gt (int .Values.replicaCount) 1) (.Values.additionalPeers) }}
|
||||||
|
- name: clusterpeer-tcp
|
||||||
|
containerPort: {{ $svcClusterPort }}
|
||||||
|
protocol: TCP
|
||||||
|
- name: clusterpeer-udp
|
||||||
|
containerPort: {{ $svcClusterPort }}
|
||||||
|
protocol: UDP
|
||||||
|
{{- end }}
|
||||||
|
livenessProbe:
|
||||||
|
{{- toYaml .Values.livenessProbe | nindent 12 }}
|
||||||
|
readinessProbe:
|
||||||
|
{{- toYaml .Values.readinessProbe | nindent 12 }}
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.resources | nindent 12 }}
|
||||||
|
volumeMounts:
|
||||||
|
{{- if .Values.config.enabled }}
|
||||||
|
- name: config
|
||||||
|
mountPath: /etc/alertmanager
|
||||||
|
{{- end }}
|
||||||
|
{{- range .Values.extraSecretMounts }}
|
||||||
|
- name: {{ .name }}
|
||||||
|
mountPath: {{ .mountPath }}
|
||||||
|
subPath: {{ .subPath }}
|
||||||
|
readOnly: {{ .readOnly }}
|
||||||
|
{{- end }}
|
||||||
|
- name: storage
|
||||||
|
mountPath: /alertmanager
|
||||||
|
{{- if .Values.extraVolumeMounts }}
|
||||||
|
{{- toYaml .Values.extraVolumeMounts | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.extraContainers }}
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
volumes:
|
||||||
|
{{- if .Values.config.enabled }}
|
||||||
|
- name: config
|
||||||
|
configMap:
|
||||||
|
name: {{ include "alertmanager.fullname" . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range .Values.extraSecretMounts }}
|
||||||
|
- name: {{ .name }}
|
||||||
|
secret:
|
||||||
|
secretName: {{ .secretName }}
|
||||||
|
{{- with .optional }}
|
||||||
|
optional: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.extraVolumes }}
|
||||||
|
{{- toYaml .Values.extraVolumes | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.extraPodConfigs }}
|
||||||
|
{{- toYaml .Values.extraPodConfigs | nindent 6 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.persistence.enabled }}
|
||||||
|
volumeClaimTemplates:
|
||||||
|
- metadata:
|
||||||
|
name: storage
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
{{- toYaml .Values.persistence.accessModes | nindent 10 }}
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: {{ .Values.persistence.size }}
|
||||||
|
{{- if .Values.persistence.storageClass }}
|
||||||
|
{{- if (eq "-" .Values.persistence.storageClass) }}
|
||||||
|
storageClassName: ""
|
||||||
|
{{- else }}
|
||||||
|
storageClassName: {{ .Values.persistence.storageClass }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
- name: storage
|
||||||
|
emptyDir: {}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
{{- if .Values.testFramework.enabled }}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Pod
|
||||||
|
metadata:
|
||||||
|
name: "{{ include "alertmanager.fullname" . }}-test-connection"
|
||||||
|
labels:
|
||||||
|
{{- include "alertmanager.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.testFramework.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
namespace: {{ include "alertmanager.namespace" . }}
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: wget
|
||||||
|
image: busybox
|
||||||
|
command: ['wget']
|
||||||
|
args: ['{{ include "alertmanager.fullname" . }}:{{ .Values.service.port }}']
|
||||||
|
restartPolicy: Never
|
||||||
|
{{- end }}
|
||||||
26
charts/prometheus/charts/alertmanager/templates/vpa.yaml
Normal file
26
charts/prometheus/charts/alertmanager/templates/vpa.yaml
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
{{- if .Values.verticalPodAutoscaler.enabled }}
|
||||||
|
apiVersion: autoscaling.k8s.io/v1
|
||||||
|
kind: VerticalPodAutoscaler
|
||||||
|
metadata:
|
||||||
|
name: {{ include "alertmanager.fullname" . }}
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
spec:
|
||||||
|
{{- if .Values.verticalPodAutoscaler.recommenders }}
|
||||||
|
recommenders:
|
||||||
|
{{- range .Values.verticalPodAutoscaler.recommenders }}
|
||||||
|
- name: {{ .name }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
targetRef:
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: StatefulSet
|
||||||
|
name: {{ include "alertmanager.fullname" . }}
|
||||||
|
{{- if .Values.verticalPodAutoscaler.updatePolicy }}
|
||||||
|
updatePolicy:
|
||||||
|
{{- toYaml .Values.verticalPodAutoscaler.updatePolicy | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.verticalPodAutoscaler.resourcePolicy }}
|
||||||
|
resourcePolicy:
|
||||||
|
{{- toYaml .Values.verticalPodAutoscaler.resourcePolicy | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
951
charts/prometheus/charts/alertmanager/values.schema.json
Normal file
951
charts/prometheus/charts/alertmanager/values.schema.json
Normal file
@ -0,0 +1,951 @@
|
|||||||
|
{
|
||||||
|
"$schema": "http://json-schema.org/draft-07/schema",
|
||||||
|
"title": "alertmanager",
|
||||||
|
"description": "The Alertmanager handles alerts sent by client applications such as the Prometheus server.",
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"replicaCount",
|
||||||
|
"image",
|
||||||
|
"serviceAccount",
|
||||||
|
"service",
|
||||||
|
"persistence",
|
||||||
|
"config"
|
||||||
|
],
|
||||||
|
"definitions": {
|
||||||
|
"image": {
|
||||||
|
"description": "Container image parameters.",
|
||||||
|
"type": "object",
|
||||||
|
"required": ["repository"],
|
||||||
|
"additionalProperties": false,
|
||||||
|
"properties": {
|
||||||
|
"repository": {
|
||||||
|
"description": "Image repository. Path to the image with registry(quay.io) or without(prometheus/alertmanager) for docker.io.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"pullPolicy": {
|
||||||
|
"description": "Image pull policy. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated.",
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"Never",
|
||||||
|
"IfNotPresent",
|
||||||
|
"Always"
|
||||||
|
],
|
||||||
|
"default": "IfNotPresent"
|
||||||
|
},
|
||||||
|
"tag": {
|
||||||
|
"description": "Use chart appVersion by default.",
|
||||||
|
"type": "string",
|
||||||
|
"default": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"resources": {
|
||||||
|
"description": "Resource limits and requests for the Container.",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"limits": {
|
||||||
|
"description": "Resource limits for the Container.",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"cpu": {
|
||||||
|
"description": "CPU request for the Container.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"memory": {
|
||||||
|
"description": "Memory request for the Container.",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requests": {
|
||||||
|
"description": "Resource requests for the Container.",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"cpu": {
|
||||||
|
"description": "CPU request for the Container.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"memory": {
|
||||||
|
"description": "Memory request for the Container.",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"securityContext": {
|
||||||
|
"description": "Security context for the container.",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"capabilities": {
|
||||||
|
"description": "Specifies the capabilities to be dropped by the container.",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"drop": {
|
||||||
|
"description": "List of capabilities to be dropped.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"readOnlyRootFilesystem": {
|
||||||
|
"description": "Specifies whether the root file system should be mounted as read-only.",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"runAsUser": {
|
||||||
|
"description": "Specifies the UID (User ID) to run the container as.",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"runAsNonRoot": {
|
||||||
|
"description": "Specifies whether to run the container as a non-root user.",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"runAsGroup": {
|
||||||
|
"description": "Specifies the GID (Group ID) to run the container as.",
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"volumeMounts": {
|
||||||
|
"description": "List of volume mounts for the Container.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"description": "Volume mounts for the Container.",
|
||||||
|
"type": "object",
|
||||||
|
"required": ["name", "mountPath"],
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"description": "The name of the volume to mount.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"mountPath": {
|
||||||
|
"description": "The mount path for the volume.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"readOnly": {
|
||||||
|
"description": "Specifies if the volume should be mounted in read-only mode.",
|
||||||
|
"type": "boolean"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"env": {
|
||||||
|
"description": "List of environment variables for the Container.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"description": "Environment variables for the Container.",
|
||||||
|
"type": "object",
|
||||||
|
"required": ["name"],
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"description": "The name of the environment variable.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"value": {
|
||||||
|
"description": "The value of the environment variable.",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"description": "https://prometheus.io/docs/alerting/latest/configuration/",
|
||||||
|
"duration": {
|
||||||
|
"type": "string",
|
||||||
|
"pattern": "^((([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?|0)$"
|
||||||
|
},
|
||||||
|
"labelname": {
|
||||||
|
"type": "string",
|
||||||
|
"pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$|^...$"
|
||||||
|
},
|
||||||
|
"route": {
|
||||||
|
"description": "Alert routing configuration.",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"receiver": {
|
||||||
|
"description": "The default receiver to send alerts to.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"group_by": {
|
||||||
|
"description": "The labels by which incoming alerts are grouped together.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string",
|
||||||
|
"$ref": "#/definitions/config/labelname"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"continue": {
|
||||||
|
"description": "Whether an alert should continue matching subsequent sibling nodes.",
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false
|
||||||
|
},
|
||||||
|
"matchers": {
|
||||||
|
"description": "A list of matchers that an alert has to fulfill to match the node.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"group_wait": {
|
||||||
|
"description": "How long to initially wait to send a notification for a group of alerts.",
|
||||||
|
"$ref": "#/definitions/config/duration"
|
||||||
|
},
|
||||||
|
"group_interval": {
|
||||||
|
"description": "How long to wait before sending a notification about new alerts that are added to a group of alerts for which an initial notification has already been sent.",
|
||||||
|
"$ref": "#/definitions/config/duration"
|
||||||
|
},
|
||||||
|
"repeat_interval": {
|
||||||
|
"description": "How long to wait before sending a notification again if it has already been sent successfully for an alert.",
|
||||||
|
"$ref": "#/definitions/config/duration"
|
||||||
|
},
|
||||||
|
"mute_time_intervals": {
|
||||||
|
"description": "Times when the route should be muted.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"active_time_intervals": {
|
||||||
|
"description": "Times when the route should be active.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"routes": {
|
||||||
|
"description": "Zero or more child routes.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"$ref": "#/definitions/config/route"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"properties": {
|
||||||
|
"replicaCount": {
|
||||||
|
"description": "Number of desired pods.",
|
||||||
|
"type": "integer",
|
||||||
|
"default": 1,
|
||||||
|
"minimum": 0
|
||||||
|
},
|
||||||
|
"image": {
|
||||||
|
"description": "Container image parameters.",
|
||||||
|
"$ref": "#/definitions/image"
|
||||||
|
},
|
||||||
|
"baseURL": {
|
||||||
|
"description": "External URL where alertmanager is reachable.",
|
||||||
|
"type": "string",
|
||||||
|
"default": "",
|
||||||
|
"examples": [
|
||||||
|
"https://alertmanager.example.com"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"extraArgs": {
|
||||||
|
"description": "Additional alertmanager container arguments. Use args without '--', only 'key: value' syntax.",
|
||||||
|
"type": "object",
|
||||||
|
"default": {}
|
||||||
|
},
|
||||||
|
"extraSecretMounts": {
|
||||||
|
"description": "Additional Alertmanager Secret mounts.",
|
||||||
|
"type": "array",
|
||||||
|
"default": [],
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"required": ["name", "mountPath", "secretName"],
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"mountPath": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"subPath": {
|
||||||
|
"type": "string",
|
||||||
|
"default": ""
|
||||||
|
},
|
||||||
|
"secretName": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"readOnly": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"imagePullSecrets": {
|
||||||
|
"description": "The property allows you to configure multiple image pull secrets.",
|
||||||
|
"type": "array",
|
||||||
|
"default": [],
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"required": ["name"],
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"description": "Specifies the Secret name of the image pull secret.",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nameOverride": {
|
||||||
|
"description": "Override value for the name of the Helm chart.",
|
||||||
|
"type": "string",
|
||||||
|
"default": ""
|
||||||
|
},
|
||||||
|
"fullnameOverride": {
|
||||||
|
"description": "Override value for the fully qualified app name.",
|
||||||
|
"type": "string",
|
||||||
|
"default": ""
|
||||||
|
},
|
||||||
|
"namespaceOverride": {
|
||||||
|
"description": "Override deployment namespace.",
|
||||||
|
"type": "string",
|
||||||
|
"default": ""
|
||||||
|
},
|
||||||
|
"automountServiceAccountToken": {
|
||||||
|
"description": "Specifies whether to automatically mount the ServiceAccount token into the Pod's filesystem.",
|
||||||
|
"type": "boolean",
|
||||||
|
"default": true
|
||||||
|
},
|
||||||
|
"serviceAccount": {
|
||||||
|
"description": "Contains properties related to the service account configuration.",
|
||||||
|
"type": "object",
|
||||||
|
"required": ["create"],
|
||||||
|
"properties": {
|
||||||
|
"create": {
|
||||||
|
"description": "Specifies whether a service account should be created.",
|
||||||
|
"type": "boolean",
|
||||||
|
"default": true
|
||||||
|
},
|
||||||
|
"annotations": {
|
||||||
|
"description": "Annotations to add to the service account.",
|
||||||
|
"type": "object",
|
||||||
|
"default": {}
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"description": "The name of the service account to use. If not set and create is true, a name is generated using the fullname template.",
|
||||||
|
"type": "string",
|
||||||
|
"default": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"schedulerName": {
|
||||||
|
"description": "Sets the schedulerName in the alertmanager pod.",
|
||||||
|
"type": "string",
|
||||||
|
"default": ""
|
||||||
|
},
|
||||||
|
"priorityClassName": {
|
||||||
|
"description": "Sets the priorityClassName in the alertmanager pod.",
|
||||||
|
"type": "string",
|
||||||
|
"default": ""
|
||||||
|
},
|
||||||
|
"podSecurityContext": {
|
||||||
|
"description": "Pod security context configuration.",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"fsGroup": {
|
||||||
|
"description": "The fsGroup value for the pod's security context.",
|
||||||
|
"type": "integer",
|
||||||
|
"default": 65534
|
||||||
|
},
|
||||||
|
"runAsUser": {
|
||||||
|
"description": "The UID to run the pod's containers as.",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"runAsGroup": {
|
||||||
|
"description": "The GID to run the pod's containers as.",
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dnsConfig": {
|
||||||
|
"description": "DNS configuration for the pod.",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"nameservers": {
|
||||||
|
"description": "List of DNS server IP addresses.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"searches": {
|
||||||
|
"description": "List of DNS search domains.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"options": {
|
||||||
|
"description": "List of DNS options.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"description": "DNS options.",
|
||||||
|
"type": "object",
|
||||||
|
"required": ["name"],
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"description": "The name of the DNS option.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"value": {
|
||||||
|
"description": "The value of the DNS option.",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hostAliases": {
|
||||||
|
"description": "List of host aliases.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"description": "Host aliases configuration.",
|
||||||
|
"type": "object",
|
||||||
|
"required": ["ip", "hostnames"],
|
||||||
|
"properties": {
|
||||||
|
"ip": {
|
||||||
|
"description": "IP address associated with the host alias.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"hostnames": {
|
||||||
|
"description": "List of hostnames associated with the IP address.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"securityContext": {
|
||||||
|
"description": "Security context for the container.",
|
||||||
|
"$ref": "#/definitions/securityContext"
|
||||||
|
},
|
||||||
|
"additionalPeers": {
|
||||||
|
"description": "Additional peers for a alertmanager.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"extraInitContainers": {
|
||||||
|
"description": "Additional InitContainers to initialize the pod.",
|
||||||
|
"type": "array",
|
||||||
|
"default": [],
|
||||||
|
"items": {
|
||||||
|
"required": ["name", "image"],
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"description": "The name of the InitContainer.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"image": {
|
||||||
|
"description": "The container image to use for the InitContainer.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"pullPolicy": {
|
||||||
|
"description": "Image pull policy. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated.",
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"Never",
|
||||||
|
"IfNotPresent",
|
||||||
|
"Always"
|
||||||
|
],
|
||||||
|
"default": "IfNotPresent"
|
||||||
|
},
|
||||||
|
"command": {
|
||||||
|
"description": "The command to run in the InitContainer.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"args": {
|
||||||
|
"description": "Additional command arguments for the InitContainer.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ports": {
|
||||||
|
"description": "List of ports to expose from the container.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"env": {
|
||||||
|
"description": "List of environment variables for the InitContainer.",
|
||||||
|
"$ref": "#/definitions/env"
|
||||||
|
},
|
||||||
|
"envFrom": {
|
||||||
|
"description": "List of sources to populate environment variables in the container.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"volumeMounts": {
|
||||||
|
"description": "List of volume mounts for the InitContainer.",
|
||||||
|
"$ref": "#/definitions/volumeMounts"
|
||||||
|
},
|
||||||
|
"resources": {
|
||||||
|
"description": "Resource requirements for the InitContainer.",
|
||||||
|
"$ref": "#/definitions/resources"
|
||||||
|
},
|
||||||
|
"securityContext": {
|
||||||
|
"$ref": "#/definitions/securityContext",
|
||||||
|
"description": "The security context for the InitContainer."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"extraContainers": {
|
||||||
|
"description": "Additional containers to add to the stateful set.",
|
||||||
|
"type": "array",
|
||||||
|
"default": [],
|
||||||
|
"items": {
|
||||||
|
"required": ["name", "image"],
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"description": "The name of the InitContainer.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"image": {
|
||||||
|
"description": "The container image to use for the InitContainer.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"pullPolicy": {
|
||||||
|
"description": "Image pull policy. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated.",
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"Never",
|
||||||
|
"IfNotPresent",
|
||||||
|
"Always"
|
||||||
|
],
|
||||||
|
"default": "IfNotPresent"
|
||||||
|
},
|
||||||
|
"command": {
|
||||||
|
"description": "The command to run in the InitContainer.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"args": {
|
||||||
|
"description": "Additional command arguments for the InitContainer.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ports": {
|
||||||
|
"description": "List of ports to expose from the container.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"env": {
|
||||||
|
"description": "List of environment variables for the InitContainer.",
|
||||||
|
"$ref": "#/definitions/env"
|
||||||
|
},
|
||||||
|
"envFrom": {
|
||||||
|
"description": "List of sources to populate environment variables in the container.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"volumeMounts": {
|
||||||
|
"description": "List of volume mounts for the InitContainer.",
|
||||||
|
"$ref": "#/definitions/volumeMounts"
|
||||||
|
},
|
||||||
|
"resources": {
|
||||||
|
"description": "Resource requirements for the InitContainer.",
|
||||||
|
"$ref": "#/definitions/resources"
|
||||||
|
},
|
||||||
|
"securityContext": {
|
||||||
|
"$ref": "#/definitions/securityContext",
|
||||||
|
"description": "The security context for the InitContainer."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"resources": {
|
||||||
|
"description": "Resource limits and requests for the pod.",
|
||||||
|
"$ref": "#/definitions/resources"
|
||||||
|
},
|
||||||
|
"containerPortName": {
|
||||||
|
"description": "Name of the port for the main container.",
|
||||||
|
"type": "string",
|
||||||
|
"default": "http"
|
||||||
|
},
|
||||||
|
"livenessProbe": {
|
||||||
|
"description": "Liveness probe configuration.",
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"readinessProbe": {
|
||||||
|
"description": "Readiness probe configuration.",
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"service": {
|
||||||
|
"description": "Service configuration.",
|
||||||
|
"type": "object",
|
||||||
|
"required": ["type", "port"],
|
||||||
|
"properties": {
|
||||||
|
"annotations": {
|
||||||
|
"description": "Annotations to add to the service.",
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"description": "Service type.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"port": {
|
||||||
|
"description": "Port number for the service.",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"clusterPort": {
|
||||||
|
"description": "Port number for the cluster.",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"loadBalancerIP": {
|
||||||
|
"description": "External IP to assign when the service type is LoadBalancer.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"loadBalancerSourceRanges": {
|
||||||
|
"description": "IP ranges to allow access to the loadBalancerIP.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nodePort": {
|
||||||
|
"description": "Specific nodePort to force when service type is NodePort.",
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ingress": {
|
||||||
|
"description": "Ingress configuration.",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"enabled": {
|
||||||
|
"description": "Indicates if Ingress is enabled.",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"className": {
|
||||||
|
"description": "Ingress class name.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"annotations": {
|
||||||
|
"description": "Annotations to add to the Ingress.",
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"hosts": {
|
||||||
|
"description": "Host and path configuration for the Ingress.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"description": "Host name for the Ingress.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"paths": {
|
||||||
|
"description": "Path configuration for the Ingress.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"path": {
|
||||||
|
"description": "Path for the Ingress.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"pathType": {
|
||||||
|
"description": "Path type for the Ingress.",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tls": {
|
||||||
|
"description": "TLS configuration for the Ingress.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"secretName": {
|
||||||
|
"description": "Name of the secret for TLS.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"hosts": {
|
||||||
|
"description": "Host names for the TLS configuration.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nodeSelector": {
|
||||||
|
"description": "Node selector for pod assignment.",
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"tolerations": {
|
||||||
|
"description": "Tolerations for pod assignment.",
|
||||||
|
"type": "array"
|
||||||
|
},
|
||||||
|
"affinity": {
|
||||||
|
"description": "Affinity rules for pod assignment.",
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"podAntiAffinity": {
|
||||||
|
"description": "Pod anti-affinity configuration.",
|
||||||
|
"type": "string",
|
||||||
|
"enum": ["", "soft", "hard"],
|
||||||
|
"default": ""
|
||||||
|
},
|
||||||
|
"podAntiAffinityTopologyKey": {
|
||||||
|
"description": "Topology key to use for pod anti-affinity.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"topologySpreadConstraints": {
|
||||||
|
"description": "Topology spread constraints for pod assignment.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"required": ["maxSkew", "topologyKey", "whenUnsatisfiable", "labelSelector"],
|
||||||
|
"properties": {
|
||||||
|
"maxSkew": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"topologyKey": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"whenUnsatisfiable": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": ["DoNotSchedule", "ScheduleAnyway"]
|
||||||
|
},
|
||||||
|
"labelSelector": {
|
||||||
|
"type": "object",
|
||||||
|
"required": ["matchLabels"],
|
||||||
|
"properties": {
|
||||||
|
"matchLabels": {
|
||||||
|
"type": "object"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"statefulSet": {
|
||||||
|
"description": "StatefulSet configuration for managing pods.",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"annotations": {
|
||||||
|
"type": "object"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"podAnnotations": {
|
||||||
|
"description": "Annotations to add to the pods.",
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"podLabels": {
|
||||||
|
"description": "Labels to add to the pods.",
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"podDisruptionBudget": {
|
||||||
|
"description": "Pod disruption budget configuration.",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"maxUnavailable": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"minAvailable": {
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"command": {
|
||||||
|
"description": "The command to be executed in the container.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"persistence": {
|
||||||
|
"description": "Persistence configuration for storing data.",
|
||||||
|
"type": "object",
|
||||||
|
"required": ["enabled", "size"],
|
||||||
|
"properties": {
|
||||||
|
"enabled": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"storageClass": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"accessModes": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"configAnnotations": {
|
||||||
|
"description": "Annotations to be added to the Alertmanager configuration.",
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"description": "Alertmanager configuration.",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"enabled": {
|
||||||
|
"description": "Whether to create alermanager configmap or not.",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"global": {
|
||||||
|
"description": "Global configuration options.",
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"templates": {
|
||||||
|
"description": "Alertmanager template files.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"receivers": {
|
||||||
|
"description": "Alert receivers configuration.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"required": ["name"],
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"description": "The unique name of the receiver.",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"route": {
|
||||||
|
"description": "Alert routing configuration.",
|
||||||
|
"type": "object",
|
||||||
|
"$ref": "#/definitions/config/route"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"configmapReload": {
|
||||||
|
"description": "Monitors ConfigMap changes and POSTs to a URL.",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"enabled": {
|
||||||
|
"description": "Specifies whether the configmap-reload container should be deployed.",
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"description": "The name of the configmap-reload container.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"image": {
|
||||||
|
"description": "The container image for the configmap-reload container.",
|
||||||
|
"$ref": "#/definitions/image"
|
||||||
|
},
|
||||||
|
"containerPort": {
|
||||||
|
"description": "Port number for the configmap-reload container.",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"resources": {
|
||||||
|
"description": "Resource requests and limits for the configmap-reload container.",
|
||||||
|
"$ref": "#/definitions/resources"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"templates": {
|
||||||
|
"description": "Custom templates used by Alertmanager.",
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"extraVolumeMounts": {
|
||||||
|
"description": "List of volume mounts for the Container.",
|
||||||
|
"$ref": "#/definitions/volumeMounts"
|
||||||
|
},
|
||||||
|
"extraVolumes": {
|
||||||
|
"description": "Additional volumes to be mounted in the Alertmanager pod.",
|
||||||
|
"type": "array",
|
||||||
|
"default": [],
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"required": ["name"],
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"extraEnv": {
|
||||||
|
"description": "List of environment variables for the Container.",
|
||||||
|
"$ref": "#/definitions/env"
|
||||||
|
},
|
||||||
|
"testFramework": {
|
||||||
|
"description": "Configuration for the test Pod.",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"enabled": {
|
||||||
|
"description": "Specifies whether the test Pod is enabled.",
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false
|
||||||
|
},
|
||||||
|
"annotations": {
|
||||||
|
"description": "Annotations to be added to the test Pod.",
|
||||||
|
"type": "object"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"verticalPodAutoscaler": {
|
||||||
|
"description": "Vertical Pod Autoscaling configuration.",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"enabled": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false
|
||||||
|
},
|
||||||
|
"recommenders": {
|
||||||
|
"type": "array"
|
||||||
|
},
|
||||||
|
"updatePolicy": {
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"resourcePolicy": {
|
||||||
|
"type": "object"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"extraPodConfigs": {
|
||||||
|
"description": "Object to allow users to add additional Pod configuration like dnsPolicy or hostNetwork",
|
||||||
|
"type": "object"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
418
charts/prometheus/charts/alertmanager/values.yaml
Normal file
418
charts/prometheus/charts/alertmanager/values.yaml
Normal file
@ -0,0 +1,418 @@
|
|||||||
|
# yaml-language-server: $schema=values.schema.json
|
||||||
|
# Default values for alertmanager.
|
||||||
|
# This is a YAML-formatted file.
|
||||||
|
# Declare variables to be passed into your templates.
|
||||||
|
|
||||||
|
replicaCount: 1
|
||||||
|
|
||||||
|
# Number of old history to retain to allow rollback
|
||||||
|
# Default Kubernetes value is set to 10
|
||||||
|
revisionHistoryLimit: 10
|
||||||
|
|
||||||
|
image:
|
||||||
|
repository: quay.io/prometheus/alertmanager
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
# Overrides the image tag whose default is the chart appVersion.
|
||||||
|
tag: ""
|
||||||
|
|
||||||
|
# Full external URL where alertmanager is reachable, used for backlinks.
|
||||||
|
baseURL: ""
|
||||||
|
|
||||||
|
extraArgs: {}
|
||||||
|
|
||||||
|
## Additional Alertmanager Secret mounts
|
||||||
|
# Defines additional mounts with secrets. Secrets must be manually created in the namespace.
|
||||||
|
extraSecretMounts: []
|
||||||
|
# - name: secret-files
|
||||||
|
# mountPath: /etc/secrets
|
||||||
|
# subPath: ""
|
||||||
|
# secretName: alertmanager-secret-files
|
||||||
|
# readOnly: true
|
||||||
|
|
||||||
|
imagePullSecrets: []
|
||||||
|
nameOverride: ""
|
||||||
|
fullnameOverride: ""
|
||||||
|
## namespaceOverride overrides the namespace which the resources will be deployed in
|
||||||
|
namespaceOverride: ""
|
||||||
|
|
||||||
|
automountServiceAccountToken: true
|
||||||
|
|
||||||
|
serviceAccount:
|
||||||
|
# Specifies whether a service account should be created
|
||||||
|
create: true
|
||||||
|
# Annotations to add to the service account
|
||||||
|
annotations: {}
|
||||||
|
# The name of the service account to use.
|
||||||
|
# If not set and create is true, a name is generated using the fullname template
|
||||||
|
name: ""
|
||||||
|
|
||||||
|
# Sets priorityClassName in alertmanager pod
|
||||||
|
priorityClassName: ""
|
||||||
|
|
||||||
|
# Sets schedulerName in alertmanager pod
|
||||||
|
schedulerName: ""
|
||||||
|
|
||||||
|
podSecurityContext:
|
||||||
|
fsGroup: 65534
|
||||||
|
dnsConfig: {}
|
||||||
|
# nameservers:
|
||||||
|
# - 1.2.3.4
|
||||||
|
# searches:
|
||||||
|
# - ns1.svc.cluster-domain.example
|
||||||
|
# - my.dns.search.suffix
|
||||||
|
# options:
|
||||||
|
# - name: ndots
|
||||||
|
# value: "2"
|
||||||
|
# - name: edns0
|
||||||
|
hostAliases: []
|
||||||
|
# - ip: "127.0.0.1"
|
||||||
|
# hostnames:
|
||||||
|
# - "foo.local"
|
||||||
|
# - "bar.local"
|
||||||
|
# - ip: "10.1.2.3"
|
||||||
|
# hostnames:
|
||||||
|
# - "foo.remote"
|
||||||
|
# - "bar.remote"
|
||||||
|
securityContext:
|
||||||
|
# capabilities:
|
||||||
|
# drop:
|
||||||
|
# - ALL
|
||||||
|
# readOnlyRootFilesystem: true
|
||||||
|
runAsUser: 65534
|
||||||
|
runAsNonRoot: true
|
||||||
|
runAsGroup: 65534
|
||||||
|
|
||||||
|
additionalPeers: []
|
||||||
|
|
||||||
|
## Additional InitContainers to initialize the pod
|
||||||
|
##
|
||||||
|
extraInitContainers: []
|
||||||
|
|
||||||
|
## Additional containers to add to the stateful set. This will allow to setup sidecarContainers like a proxy to integrate
|
||||||
|
## alertmanager with an external tool like teams that has not direct integration.
|
||||||
|
##
|
||||||
|
extraContainers: []
|
||||||
|
|
||||||
|
containerPortName: &containerPortName http
|
||||||
|
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: *containerPortName
|
||||||
|
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: *containerPortName
|
||||||
|
|
||||||
|
service:
|
||||||
|
annotations: {}
|
||||||
|
labels: {}
|
||||||
|
type: ClusterIP
|
||||||
|
port: 9093
|
||||||
|
clusterPort: 9094
|
||||||
|
loadBalancerIP: "" # Assign ext IP when Service type is LoadBalancer
|
||||||
|
loadBalancerSourceRanges: [] # Only allow access to loadBalancerIP from these IPs
|
||||||
|
# if you want to force a specific nodePort. Must be use with service.type=NodePort
|
||||||
|
# nodePort:
|
||||||
|
|
||||||
|
# Optionally specify extra list of additional ports exposed on both services
|
||||||
|
extraPorts: []
|
||||||
|
|
||||||
|
# ip dual stack
|
||||||
|
ipDualStack:
|
||||||
|
enabled: false
|
||||||
|
ipFamilies: ["IPv6", "IPv4"]
|
||||||
|
ipFamilyPolicy: "PreferDualStack"
|
||||||
|
|
||||||
|
# Configuration for creating a separate Service for each statefulset Alertmanager replica
|
||||||
|
#
|
||||||
|
servicePerReplica:
|
||||||
|
enabled: false
|
||||||
|
annotations: {}
|
||||||
|
|
||||||
|
# Loadbalancer source IP ranges
|
||||||
|
# Only used if servicePerReplica.type is "LoadBalancer"
|
||||||
|
loadBalancerSourceRanges: []
|
||||||
|
|
||||||
|
# Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints
|
||||||
|
#
|
||||||
|
externalTrafficPolicy: Cluster
|
||||||
|
|
||||||
|
# Service type
|
||||||
|
#
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
ingress:
|
||||||
|
enabled: false
|
||||||
|
className: ""
|
||||||
|
labels: {}
|
||||||
|
annotations: {}
|
||||||
|
# kubernetes.io/ingress.class: nginx
|
||||||
|
# kubernetes.io/tls-acme: "true"
|
||||||
|
hosts:
|
||||||
|
- host: alertmanager.domain.com
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: ImplementationSpecific
|
||||||
|
tls: []
|
||||||
|
# - secretName: chart-example-tls
|
||||||
|
# hosts:
|
||||||
|
# - alertmanager.domain.com
|
||||||
|
|
||||||
|
# Configuration for creating an Ingress that will map to each Alertmanager replica service
|
||||||
|
# alertmanager.servicePerReplica must be enabled
|
||||||
|
#
|
||||||
|
ingressPerReplica:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
# className for the ingresses
|
||||||
|
#
|
||||||
|
className: ""
|
||||||
|
|
||||||
|
annotations: {}
|
||||||
|
labels: {}
|
||||||
|
|
||||||
|
# Final form of the hostname for each per replica ingress is
|
||||||
|
# {{ ingressPerReplica.hostPrefix }}-{{ $replicaNumber }}.{{ ingressPerReplica.hostDomain }}
|
||||||
|
#
|
||||||
|
# Prefix for the per replica ingress that will have `-$replicaNumber`
|
||||||
|
# appended to the end
|
||||||
|
hostPrefix: "alertmanager"
|
||||||
|
# Domain that will be used for the per replica ingress
|
||||||
|
hostDomain: "domain.com"
|
||||||
|
|
||||||
|
# Paths to use for ingress rules
|
||||||
|
#
|
||||||
|
paths:
|
||||||
|
- /
|
||||||
|
|
||||||
|
# PathType for ingress rules
|
||||||
|
#
|
||||||
|
pathType: ImplementationSpecific
|
||||||
|
|
||||||
|
# Secret name containing the TLS certificate for alertmanager per replica ingress
|
||||||
|
# Secret must be manually created in the namespace
|
||||||
|
tlsSecretName: ""
|
||||||
|
|
||||||
|
# Separated secret for each per replica Ingress. Can be used together with cert-manager
|
||||||
|
#
|
||||||
|
tlsSecretPerReplica:
|
||||||
|
enabled: false
|
||||||
|
# Final form of the secret for each per replica ingress is
|
||||||
|
# {{ tlsSecretPerReplica.prefix }}-{{ $replicaNumber }}
|
||||||
|
#
|
||||||
|
prefix: "alertmanager"
|
||||||
|
|
||||||
|
resources: {}
|
||||||
|
# We usually recommend not to specify default resources and to leave this as a conscious
|
||||||
|
# choice for the user. This also increases chances charts run on environments with little
|
||||||
|
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
||||||
|
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
||||||
|
# limits:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
# requests:
|
||||||
|
# cpu: 10m
|
||||||
|
# memory: 32Mi
|
||||||
|
|
||||||
|
nodeSelector: {}
|
||||||
|
|
||||||
|
tolerations: []
|
||||||
|
|
||||||
|
affinity: {}
|
||||||
|
|
||||||
|
## Pod anti-affinity can prevent the scheduler from placing Alertmanager replicas on the same node.
|
||||||
|
## The default value "soft" means that the scheduler should *prefer* to not schedule two replica pods onto the same node but no guarantee is provided.
|
||||||
|
## The value "hard" means that the scheduler is *required* to not schedule two replica pods onto the same node.
|
||||||
|
## The value "" will disable pod anti-affinity so that no anti-affinity rules will be configured.
|
||||||
|
##
|
||||||
|
podAntiAffinity: ""
|
||||||
|
|
||||||
|
## If anti-affinity is enabled sets the topologyKey to use for anti-affinity.
|
||||||
|
## This can be changed to, for example, failure-domain.beta.kubernetes.io/zone
|
||||||
|
##
|
||||||
|
podAntiAffinityTopologyKey: kubernetes.io/hostname
|
||||||
|
|
||||||
|
## Topology spread constraints rely on node labels to identify the topology domain(s) that each Node is in.
|
||||||
|
## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
|
||||||
|
topologySpreadConstraints: []
|
||||||
|
# - maxSkew: 1
|
||||||
|
# topologyKey: failure-domain.beta.kubernetes.io/zone
|
||||||
|
# whenUnsatisfiable: DoNotSchedule
|
||||||
|
# labelSelector:
|
||||||
|
# matchLabels:
|
||||||
|
# app.kubernetes.io/instance: alertmanager
|
||||||
|
|
||||||
|
statefulSet:
|
||||||
|
annotations: {}
|
||||||
|
|
||||||
|
## Minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to
|
||||||
|
## be considered available. Defaults to 0 (pod will be considered available as soon as it is ready).
|
||||||
|
## This is an alpha field from kubernetes 1.22 until 1.24 which requires enabling the StatefulSetMinReadySeconds
|
||||||
|
## feature gate.
|
||||||
|
## Ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#minimum-ready-seconds
|
||||||
|
minReadySeconds: 0
|
||||||
|
|
||||||
|
podAnnotations: {}
|
||||||
|
podLabels: {}
|
||||||
|
|
||||||
|
# Ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
|
||||||
|
podDisruptionBudget: {}
|
||||||
|
# maxUnavailable: 1
|
||||||
|
# minAvailable: 1
|
||||||
|
|
||||||
|
command: []
|
||||||
|
|
||||||
|
persistence:
|
||||||
|
enabled: true
|
||||||
|
## Persistent Volume Storage Class
|
||||||
|
## If defined, storageClassName: <storageClass>
|
||||||
|
## If set to "-", storageClassName: "", which disables dynamic provisioning
|
||||||
|
## If undefined (the default) or set to null, no storageClassName spec is
|
||||||
|
## set, choosing the default provisioner.
|
||||||
|
##
|
||||||
|
# storageClass: "-"
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
size: 50Mi
|
||||||
|
|
||||||
|
configAnnotations: {}
|
||||||
|
## For example if you want to provide private data from a secret vault
|
||||||
|
## https://github.com/banzaicloud/bank-vaults/tree/main/charts/vault-secrets-webhook
|
||||||
|
## P.s.: Add option `configMapMutation: true` for vault-secrets-webhook
|
||||||
|
# vault.security.banzaicloud.io/vault-role: "admin"
|
||||||
|
# vault.security.banzaicloud.io/vault-addr: "https://vault.vault.svc.cluster.local:8200"
|
||||||
|
# vault.security.banzaicloud.io/vault-skip-verify: "true"
|
||||||
|
# vault.security.banzaicloud.io/vault-path: "kubernetes"
|
||||||
|
## Example for inject secret
|
||||||
|
# slack_api_url: '${vault:secret/data/slack-hook-alerts#URL}'
|
||||||
|
|
||||||
|
config:
|
||||||
|
enabled: true
|
||||||
|
global: {}
|
||||||
|
# slack_api_url: ''
|
||||||
|
|
||||||
|
templates:
|
||||||
|
- '/etc/alertmanager/*.tmpl'
|
||||||
|
|
||||||
|
receivers:
|
||||||
|
- name: default-receiver
|
||||||
|
# slack_configs:
|
||||||
|
# - channel: '@you'
|
||||||
|
# send_resolved: true
|
||||||
|
|
||||||
|
route:
|
||||||
|
group_wait: 10s
|
||||||
|
group_interval: 5m
|
||||||
|
receiver: default-receiver
|
||||||
|
repeat_interval: 3h
|
||||||
|
|
||||||
|
## Monitors ConfigMap changes and POSTs to a URL
|
||||||
|
## Ref: https://github.com/prometheus-operator/prometheus-operator/tree/main/cmd/prometheus-config-reloader
|
||||||
|
##
|
||||||
|
configmapReload:
|
||||||
|
## If false, the configmap-reload container will not be deployed
|
||||||
|
##
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
## configmap-reload container name
|
||||||
|
##
|
||||||
|
name: configmap-reload
|
||||||
|
|
||||||
|
## configmap-reload container image
|
||||||
|
##
|
||||||
|
image:
|
||||||
|
repository: quay.io/prometheus-operator/prometheus-config-reloader
|
||||||
|
tag: v0.83.0
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
|
||||||
|
# containerPort: 9533
|
||||||
|
|
||||||
|
## configmap-reload resource requests and limits
|
||||||
|
## Ref: http://kubernetes.io/docs/user-guide/compute-resources/
|
||||||
|
##
|
||||||
|
resources: {}
|
||||||
|
|
||||||
|
livenessProbe: {}
|
||||||
|
# httpGet:
|
||||||
|
# path: /healthz
|
||||||
|
# port: 8080
|
||||||
|
# scheme: HTTP
|
||||||
|
readinessProbe: {}
|
||||||
|
# httpGet:
|
||||||
|
# path: /healthz
|
||||||
|
# port: 8080
|
||||||
|
# scheme: HTTP
|
||||||
|
|
||||||
|
extraArgs: {}
|
||||||
|
|
||||||
|
## Optionally specify extra list of additional volumeMounts
|
||||||
|
extraVolumeMounts: []
|
||||||
|
# - name: extras
|
||||||
|
# mountPath: /usr/share/extras
|
||||||
|
# readOnly: true
|
||||||
|
|
||||||
|
## Optionally specify extra environment variables to add to alertmanager container
|
||||||
|
extraEnv: []
|
||||||
|
# - name: FOO
|
||||||
|
# value: BAR
|
||||||
|
|
||||||
|
securityContext: {}
|
||||||
|
# capabilities:
|
||||||
|
# drop:
|
||||||
|
# - ALL
|
||||||
|
# readOnlyRootFilesystem: true
|
||||||
|
# runAsUser: 65534
|
||||||
|
# runAsNonRoot: true
|
||||||
|
# runAsGroup: 65534
|
||||||
|
|
||||||
|
templates: {}
|
||||||
|
# alertmanager.tmpl: |-
|
||||||
|
|
||||||
|
## Optionally specify extra list of additional volumeMounts
|
||||||
|
extraVolumeMounts: []
|
||||||
|
# - name: extras
|
||||||
|
# mountPath: /usr/share/extras
|
||||||
|
# readOnly: true
|
||||||
|
|
||||||
|
## Optionally specify extra list of additional volumes
|
||||||
|
extraVolumes: []
|
||||||
|
# - name: extras
|
||||||
|
# emptyDir: {}
|
||||||
|
|
||||||
|
## Optionally specify extra environment variables to add to alertmanager container
|
||||||
|
extraEnv: []
|
||||||
|
# - name: FOO
|
||||||
|
# value: BAR
|
||||||
|
|
||||||
|
testFramework:
|
||||||
|
enabled: false
|
||||||
|
annotations:
|
||||||
|
"helm.sh/hook": test-success
|
||||||
|
# "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded"
|
||||||
|
|
||||||
|
# --- Vertical Pod Autoscaler
|
||||||
|
verticalPodAutoscaler:
|
||||||
|
# -- Use VPA for alertmanager
|
||||||
|
enabled: false
|
||||||
|
# recommenders:
|
||||||
|
# - name: 'alternative'
|
||||||
|
# updatePolicy:
|
||||||
|
# updateMode: "Auto"
|
||||||
|
# minReplicas: 1
|
||||||
|
# resourcePolicy:
|
||||||
|
# containerPolicies:
|
||||||
|
# - containerName: '*'
|
||||||
|
# minAllowed:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
# maxAllowed:
|
||||||
|
# cpu: 1
|
||||||
|
# memory: 500Mi
|
||||||
|
# controlledResources: ["cpu", "memory"]
|
||||||
|
|
||||||
|
# --- Extra Pod Configs
|
||||||
|
extraPodConfigs: {}
|
||||||
|
# dnsPolicy: ClusterFirstWithHostNet
|
||||||
|
# hostNetwork: true
|
||||||
21
charts/prometheus/charts/kube-state-metrics/.helmignore
Normal file
21
charts/prometheus/charts/kube-state-metrics/.helmignore
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# Patterns to ignore when building packages.
|
||||||
|
# This supports shell glob matching, relative path matching, and
|
||||||
|
# negation (prefixed with !). Only one pattern per line.
|
||||||
|
.DS_Store
|
||||||
|
# Common VCS dirs
|
||||||
|
.git/
|
||||||
|
.gitignore
|
||||||
|
.bzr/
|
||||||
|
.bzrignore
|
||||||
|
.hg/
|
||||||
|
.hgignore
|
||||||
|
.svn/
|
||||||
|
# Common backup files
|
||||||
|
*.swp
|
||||||
|
*.bak
|
||||||
|
*.tmp
|
||||||
|
*~
|
||||||
|
# Various IDEs
|
||||||
|
.project
|
||||||
|
.idea/
|
||||||
|
*.tmproj
|
||||||
29
charts/prometheus/charts/kube-state-metrics/Chart.yaml
Normal file
29
charts/prometheus/charts/kube-state-metrics/Chart.yaml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
annotations:
|
||||||
|
artifacthub.io/license: Apache-2.0
|
||||||
|
artifacthub.io/links: |
|
||||||
|
- name: Chart Source
|
||||||
|
url: https://github.com/prometheus-community/helm-charts
|
||||||
|
apiVersion: v2
|
||||||
|
appVersion: 2.15.0
|
||||||
|
description: Install kube-state-metrics to generate and expose cluster-level metrics
|
||||||
|
home: https://github.com/kubernetes/kube-state-metrics/
|
||||||
|
keywords:
|
||||||
|
- metric
|
||||||
|
- monitoring
|
||||||
|
- prometheus
|
||||||
|
- kubernetes
|
||||||
|
maintainers:
|
||||||
|
- email: tariq.ibrahim@mulesoft.com
|
||||||
|
name: tariq1890
|
||||||
|
url: https://github.com/tariq1890
|
||||||
|
- email: manuel@rueg.eu
|
||||||
|
name: mrueg
|
||||||
|
url: https://github.com/mrueg
|
||||||
|
- email: david@0xdc.me
|
||||||
|
name: dotdc
|
||||||
|
url: https://github.com/dotdc
|
||||||
|
name: kube-state-metrics
|
||||||
|
sources:
|
||||||
|
- https://github.com/kubernetes/kube-state-metrics/
|
||||||
|
type: application
|
||||||
|
version: 5.33.2
|
||||||
85
charts/prometheus/charts/kube-state-metrics/README.md
Normal file
85
charts/prometheus/charts/kube-state-metrics/README.md
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
# kube-state-metrics Helm Chart
|
||||||
|
|
||||||
|
Installs the [kube-state-metrics agent](https://github.com/kubernetes/kube-state-metrics).
|
||||||
|
|
||||||
|
## Get Repository Info
|
||||||
|
<!-- textlint-disable -->
|
||||||
|
```console
|
||||||
|
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
|
||||||
|
helm repo update
|
||||||
|
```
|
||||||
|
|
||||||
|
_See [helm repo](https://helm.sh/docs/helm/helm_repo/) for command documentation._
|
||||||
|
<!-- textlint-enable -->
|
||||||
|
|
||||||
|
## Install Chart
|
||||||
|
|
||||||
|
```console
|
||||||
|
helm install [RELEASE_NAME] prometheus-community/kube-state-metrics [flags]
|
||||||
|
```
|
||||||
|
|
||||||
|
_See [configuration](#configuration) below._
|
||||||
|
|
||||||
|
_See [helm install](https://helm.sh/docs/helm/helm_install/) for command documentation._
|
||||||
|
|
||||||
|
## Uninstall Chart
|
||||||
|
|
||||||
|
```console
|
||||||
|
helm uninstall [RELEASE_NAME]
|
||||||
|
```
|
||||||
|
|
||||||
|
This removes all the Kubernetes components associated with the chart and deletes the release.
|
||||||
|
|
||||||
|
_See [helm uninstall](https://helm.sh/docs/helm/helm_uninstall/) for command documentation._
|
||||||
|
|
||||||
|
## Upgrading Chart
|
||||||
|
|
||||||
|
```console
|
||||||
|
helm upgrade [RELEASE_NAME] prometheus-community/kube-state-metrics [flags]
|
||||||
|
```
|
||||||
|
|
||||||
|
_See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documentation._
|
||||||
|
|
||||||
|
### Migrating from stable/kube-state-metrics and kubernetes/kube-state-metrics
|
||||||
|
|
||||||
|
You can upgrade in-place:
|
||||||
|
|
||||||
|
1. [get repository info](#get-repository-info)
|
||||||
|
1. [upgrade](#upgrading-chart) your existing release name using the new chart repository
|
||||||
|
|
||||||
|
## Upgrading to v3.0.0
|
||||||
|
|
||||||
|
v3.0.0 includes kube-state-metrics v2.0, see the [changelog](https://github.com/kubernetes/kube-state-metrics/blob/release-2.0/CHANGELOG.md) for major changes on the application-side.
|
||||||
|
|
||||||
|
The upgraded chart now the following changes:
|
||||||
|
|
||||||
|
* Dropped support for helm v2 (helm v3 or later is required)
|
||||||
|
* collectors key was renamed to resources
|
||||||
|
* namespace key was renamed to namespaces
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
See [Customizing the Chart Before Installing](https://helm.sh/docs/intro/using_helm/#customizing-the-chart-before-installing). To see all configurable options with detailed comments:
|
||||||
|
|
||||||
|
```console
|
||||||
|
helm show values prometheus-community/kube-state-metrics
|
||||||
|
```
|
||||||
|
|
||||||
|
### kube-rbac-proxy
|
||||||
|
|
||||||
|
You can enable `kube-state-metrics` endpoint protection using `kube-rbac-proxy`. By setting `kubeRBACProxy.enabled: true`, this chart will deploy one RBAC proxy container per endpoint (metrics & telemetry).
|
||||||
|
To authorize access, authenticate your requests (via a `ServiceAccount` for example) with a `ClusterRole` attached such as:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
name: kube-state-metrics-read
|
||||||
|
rules:
|
||||||
|
- apiGroups: [ "" ]
|
||||||
|
resources: ["services/kube-state-metrics"]
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
```
|
||||||
|
|
||||||
|
See [kube-rbac-proxy examples](https://github.com/brancz/kube-rbac-proxy/tree/master/examples/resource-attributes) for more details.
|
||||||
@ -0,0 +1,23 @@
|
|||||||
|
kube-state-metrics is a simple service that listens to the Kubernetes API server and generates metrics about the state of the objects.
|
||||||
|
The exposed metrics can be found here:
|
||||||
|
https://github.com/kubernetes/kube-state-metrics/blob/master/docs/README.md#exposed-metrics
|
||||||
|
|
||||||
|
The metrics are exported on the HTTP endpoint /metrics on the listening port.
|
||||||
|
In your case, {{ template "kube-state-metrics.fullname" . }}.{{ template "kube-state-metrics.namespace" . }}.svc.cluster.local:{{ .Values.service.port }}/metrics
|
||||||
|
|
||||||
|
They are served either as plaintext or protobuf depending on the Accept header.
|
||||||
|
They are designed to be consumed either by Prometheus itself or by a scraper that is compatible with scraping a Prometheus client endpoint.
|
||||||
|
|
||||||
|
{{- if .Values.kubeRBACProxy.enabled}}
|
||||||
|
|
||||||
|
kube-rbac-proxy endpoint protections is enabled:
|
||||||
|
- Metrics endpoints are now HTTPS
|
||||||
|
- Ensure that the client authenticates the requests (e.g. via service account) with the following role permissions:
|
||||||
|
```
|
||||||
|
rules:
|
||||||
|
- apiGroups: [ "" ]
|
||||||
|
resources: ["services/{{ template "kube-state-metrics.fullname" . }}"]
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
```
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,175 @@
|
|||||||
|
{{/* vim: set filetype=mustache: */}}
|
||||||
|
{{/*
|
||||||
|
Expand the name of the chart.
|
||||||
|
*/}}
|
||||||
|
{{- define "kube-state-metrics.name" -}}
|
||||||
|
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create a default fully qualified app name.
|
||||||
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
If release name contains chart name it will be used as a full name.
|
||||||
|
*/}}
|
||||||
|
{{- define "kube-state-metrics.fullname" -}}
|
||||||
|
{{- if .Values.fullnameOverride -}}
|
||||||
|
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||||
|
{{- if contains $name .Release.Name -}}
|
||||||
|
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create the name of the service account to use
|
||||||
|
*/}}
|
||||||
|
{{- define "kube-state-metrics.serviceAccountName" -}}
|
||||||
|
{{- if .Values.serviceAccount.create -}}
|
||||||
|
{{ default (include "kube-state-metrics.fullname" .) .Values.serviceAccount.name }}
|
||||||
|
{{- else -}}
|
||||||
|
{{ default "default" .Values.serviceAccount.name }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Allow the release namespace to be overridden for multi-namespace deployments in combined charts
|
||||||
|
*/}}
|
||||||
|
{{- define "kube-state-metrics.namespace" -}}
|
||||||
|
{{- if .Values.namespaceOverride -}}
|
||||||
|
{{- .Values.namespaceOverride -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- .Release.Namespace -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create chart name and version as used by the chart label.
|
||||||
|
*/}}
|
||||||
|
{{- define "kube-state-metrics.chart" -}}
|
||||||
|
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Generate basic labels
|
||||||
|
*/}}
|
||||||
|
{{- define "kube-state-metrics.labels" }}
|
||||||
|
helm.sh/chart: {{ template "kube-state-metrics.chart" . }}
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||||
|
app.kubernetes.io/component: metrics
|
||||||
|
app.kubernetes.io/part-of: {{ template "kube-state-metrics.name" . }}
|
||||||
|
{{- include "kube-state-metrics.selectorLabels" . }}
|
||||||
|
{{- if .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.customLabels }}
|
||||||
|
{{ tpl (toYaml .Values.customLabels) . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.releaseLabel }}
|
||||||
|
release: {{ .Release.Name }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Selector labels
|
||||||
|
*/}}
|
||||||
|
{{- define "kube-state-metrics.selectorLabels" }}
|
||||||
|
{{- if .Values.selectorOverride }}
|
||||||
|
{{ toYaml .Values.selectorOverride }}
|
||||||
|
{{- else }}
|
||||||
|
app.kubernetes.io/name: {{ include "kube-state-metrics.name" . }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/* Sets default scrape limits for servicemonitor */}}
|
||||||
|
{{- define "servicemonitor.scrapeLimits" -}}
|
||||||
|
{{- with .sampleLimit }}
|
||||||
|
sampleLimit: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .targetLimit }}
|
||||||
|
targetLimit: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .labelLimit }}
|
||||||
|
labelLimit: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .labelNameLengthLimit }}
|
||||||
|
labelNameLengthLimit: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .labelValueLengthLimit }}
|
||||||
|
labelValueLengthLimit: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/* Sets default scrape limits for scrapeconfig */}}
|
||||||
|
{{- define "scrapeconfig.scrapeLimits" -}}
|
||||||
|
{{- with .sampleLimit }}
|
||||||
|
sampleLimit: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .targetLimit }}
|
||||||
|
targetLimit: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .labelLimit }}
|
||||||
|
labelLimit: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .labelNameLengthLimit }}
|
||||||
|
labelNameLengthLimit: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .labelValueLengthLimit }}
|
||||||
|
labelValueLengthLimit: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Formats imagePullSecrets. Input is (dict "Values" .Values "imagePullSecrets" .{specific imagePullSecrets})
|
||||||
|
*/}}
|
||||||
|
{{- define "kube-state-metrics.imagePullSecrets" -}}
|
||||||
|
{{- range (concat .Values.global.imagePullSecrets .imagePullSecrets) }}
|
||||||
|
{{- if eq (typeOf .) "map[string]interface {}" }}
|
||||||
|
- {{ toYaml . | trim }}
|
||||||
|
{{- else }}
|
||||||
|
- name: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
The image to use for kube-state-metrics
|
||||||
|
*/}}
|
||||||
|
{{- define "kube-state-metrics.image" -}}
|
||||||
|
{{- if .Values.image.sha }}
|
||||||
|
{{- if .Values.global.imageRegistry }}
|
||||||
|
{{- printf "%s/%s:%s@%s" .Values.global.imageRegistry .Values.image.repository (default (printf "v%s" .Chart.AppVersion) .Values.image.tag) .Values.image.sha }}
|
||||||
|
{{- else }}
|
||||||
|
{{- printf "%s/%s:%s@%s" .Values.image.registry .Values.image.repository (default (printf "v%s" .Chart.AppVersion) .Values.image.tag) .Values.image.sha }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
{{- if .Values.global.imageRegistry }}
|
||||||
|
{{- printf "%s/%s:%s" .Values.global.imageRegistry .Values.image.repository (default (printf "v%s" .Chart.AppVersion) .Values.image.tag) }}
|
||||||
|
{{- else }}
|
||||||
|
{{- printf "%s/%s:%s" .Values.image.registry .Values.image.repository (default (printf "v%s" .Chart.AppVersion) .Values.image.tag) }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
The image to use for kubeRBACProxy
|
||||||
|
*/}}
|
||||||
|
{{- define "kubeRBACProxy.image" -}}
|
||||||
|
{{- if .Values.kubeRBACProxy.image.sha }}
|
||||||
|
{{- if .Values.global.imageRegistry }}
|
||||||
|
{{- printf "%s/%s:%s@%s" .Values.global.imageRegistry .Values.kubeRBACProxy.image.repository (default (printf "v%s" .Chart.AppVersion) .Values.kubeRBACProxy.image.tag) .Values.kubeRBACProxy.image.sha }}
|
||||||
|
{{- else }}
|
||||||
|
{{- printf "%s/%s:%s@%s" .Values.kubeRBACProxy.image.registry .Values.kubeRBACProxy.image.repository (default (printf "v%s" .Chart.AppVersion) .Values.kubeRBACProxy.image.tag) .Values.kubeRBACProxy.image.sha }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
{{- if .Values.global.imageRegistry }}
|
||||||
|
{{- printf "%s/%s:%s" .Values.global.imageRegistry .Values.kubeRBACProxy.image.repository (default (printf "v%s" .Chart.AppVersion) .Values.kubeRBACProxy.image.tag) }}
|
||||||
|
{{- else }}
|
||||||
|
{{- printf "%s/%s:%s" .Values.kubeRBACProxy.image.registry .Values.kubeRBACProxy.image.repository (default (printf "v%s" .Chart.AppVersion) .Values.kubeRBACProxy.image.tag) }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,33 @@
|
|||||||
|
{{- if and .Values.networkPolicy.enabled (eq .Values.networkPolicy.flavor "cilium") }}
|
||||||
|
apiVersion: cilium.io/v2
|
||||||
|
kind: CiliumNetworkPolicy
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.annotations | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "kube-state-metrics.labels" . | indent 4 }}
|
||||||
|
name: {{ template "kube-state-metrics.fullname" . }}
|
||||||
|
namespace: {{ template "kube-state-metrics.namespace" . }}
|
||||||
|
spec:
|
||||||
|
endpointSelector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "kube-state-metrics.selectorLabels" . | indent 6 }}
|
||||||
|
egress:
|
||||||
|
{{- if and .Values.networkPolicy.cilium .Values.networkPolicy.cilium.kubeApiServerSelector }}
|
||||||
|
{{ toYaml .Values.networkPolicy.cilium.kubeApiServerSelector | nindent 6 }}
|
||||||
|
{{- else }}
|
||||||
|
- toEntities:
|
||||||
|
- kube-apiserver
|
||||||
|
{{- end }}
|
||||||
|
ingress:
|
||||||
|
- toPorts:
|
||||||
|
- ports:
|
||||||
|
- port: {{ .Values.service.port | quote }}
|
||||||
|
protocol: TCP
|
||||||
|
{{- if .Values.selfMonitor.enabled }}
|
||||||
|
- port: {{ .Values.selfMonitor.telemetryPort | default 8081 | quote }}
|
||||||
|
protocol: TCP
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
{{- if and .Values.rbac.create .Values.rbac.useClusterRole -}}
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "kube-state-metrics.labels" . | indent 4 }}
|
||||||
|
name: {{ template "kube-state-metrics.fullname" . }}
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
{{- if .Values.rbac.useExistingRole }}
|
||||||
|
name: {{ .Values.rbac.useExistingRole }}
|
||||||
|
{{- else }}
|
||||||
|
name: {{ template "kube-state-metrics.fullname" . }}
|
||||||
|
{{- end }}
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: {{ template "kube-state-metrics.serviceAccountName" . }}
|
||||||
|
namespace: {{ template "kube-state-metrics.namespace" . }}
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
{{- if .Values.customResourceState.enabled}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: {{ template "kube-state-metrics.fullname" . }}-customresourcestate-config
|
||||||
|
namespace: {{ template "kube-state-metrics.namespace" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "kube-state-metrics.labels" . | indent 4 }}
|
||||||
|
{{- if .Values.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.annotations | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
data:
|
||||||
|
config.yaml: |
|
||||||
|
{{- toYaml .Values.customResourceState.config | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,372 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
{{- if .Values.autosharding.enabled }}
|
||||||
|
kind: StatefulSet
|
||||||
|
{{- else }}
|
||||||
|
kind: Deployment
|
||||||
|
{{- end }}
|
||||||
|
metadata:
|
||||||
|
name: {{ template "kube-state-metrics.fullname" . }}
|
||||||
|
namespace: {{ template "kube-state-metrics.namespace" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "kube-state-metrics.labels" . | indent 4 }}
|
||||||
|
{{- if .Values.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.annotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "kube-state-metrics.selectorLabels" . | indent 6 }}
|
||||||
|
replicas: {{ .Values.replicas }}
|
||||||
|
{{- if not .Values.autosharding.enabled }}
|
||||||
|
strategy:
|
||||||
|
type: {{ .Values.updateStrategy | default "RollingUpdate" }}
|
||||||
|
{{- end }}
|
||||||
|
revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
|
||||||
|
{{- if .Values.autosharding.enabled }}
|
||||||
|
serviceName: {{ template "kube-state-metrics.fullname" . }}
|
||||||
|
volumeClaimTemplates: []
|
||||||
|
{{- end }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "kube-state-metrics.labels" . | indent 8 }}
|
||||||
|
{{- with .Values.podLabels }}
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.podAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.podAnnotations | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
automountServiceAccountToken: {{ .Values.automountServiceAccountToken }}
|
||||||
|
hostNetwork: {{ .Values.hostNetwork }}
|
||||||
|
serviceAccountName: {{ template "kube-state-metrics.serviceAccountName" . }}
|
||||||
|
{{- if .Values.securityContext.enabled }}
|
||||||
|
securityContext: {{- omit .Values.securityContext "enabled" | toYaml | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.priorityClassName }}
|
||||||
|
priorityClassName: {{ .Values.priorityClassName }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.initContainers }}
|
||||||
|
initContainers:
|
||||||
|
{{- toYaml . | nindent 6 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.dnsConfig }}
|
||||||
|
dnsConfig: {{ toYaml .Values.dnsConfig | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
dnsPolicy: {{ .Values.dnsPolicy }}
|
||||||
|
containers:
|
||||||
|
{{- $servicePort := ternary 9090 (.Values.service.port | default 8080) .Values.kubeRBACProxy.enabled}}
|
||||||
|
{{- $telemetryPort := ternary 9091 (.Values.selfMonitor.telemetryPort | default 8081) .Values.kubeRBACProxy.enabled}}
|
||||||
|
- name: {{ template "kube-state-metrics.name" . }}
|
||||||
|
{{- if .Values.autosharding.enabled }}
|
||||||
|
env:
|
||||||
|
- name: POD_NAME
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: metadata.name
|
||||||
|
- name: POD_NAMESPACE
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: metadata.namespace
|
||||||
|
{{- if .Values.env }}
|
||||||
|
{{- toYaml .Values.env | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{ else }}
|
||||||
|
{{- if .Values.env }}
|
||||||
|
env:
|
||||||
|
{{- toYaml .Values.env | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
args:
|
||||||
|
{{- if .Values.extraArgs }}
|
||||||
|
{{- .Values.extraArgs | toYaml | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.kubeRBACProxy.enabled }}
|
||||||
|
- --host=127.0.0.1
|
||||||
|
{{- end }}
|
||||||
|
- --port={{ $servicePort }}
|
||||||
|
{{- if .Values.collectors }}
|
||||||
|
- --resources={{ .Values.collectors | join "," }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.metricLabelsAllowlist }}
|
||||||
|
- --metric-labels-allowlist={{ .Values.metricLabelsAllowlist | join "," }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.metricAnnotationsAllowList }}
|
||||||
|
- --metric-annotations-allowlist={{ .Values.metricAnnotationsAllowList | join "," }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.metricAllowlist }}
|
||||||
|
- --metric-allowlist={{ .Values.metricAllowlist | join "," }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.metricDenylist }}
|
||||||
|
- --metric-denylist={{ .Values.metricDenylist | join "," }}
|
||||||
|
{{- end }}
|
||||||
|
{{- $namespaces := list }}
|
||||||
|
{{- if .Values.namespaces }}
|
||||||
|
{{- range $ns := join "," .Values.namespaces | split "," }}
|
||||||
|
{{- $namespaces = append $namespaces (tpl $ns $) }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.releaseNamespace }}
|
||||||
|
{{- $namespaces = append $namespaces ( include "kube-state-metrics.namespace" . ) }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if $namespaces }}
|
||||||
|
- --namespaces={{ $namespaces | mustUniq | join "," }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.namespacesDenylist }}
|
||||||
|
- --namespaces-denylist={{ tpl (.Values.namespacesDenylist | join ",") $ }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.autosharding.enabled }}
|
||||||
|
- --pod=$(POD_NAME)
|
||||||
|
- --pod-namespace=$(POD_NAMESPACE)
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.kubeconfig.enabled }}
|
||||||
|
- --kubeconfig=/opt/k8s/.kube/config
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.kubeRBACProxy.enabled }}
|
||||||
|
- --telemetry-host=127.0.0.1
|
||||||
|
- --telemetry-port={{ $telemetryPort }}
|
||||||
|
{{- else }}
|
||||||
|
{{- if .Values.selfMonitor.telemetryHost }}
|
||||||
|
- --telemetry-host={{ .Values.selfMonitor.telemetryHost }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.selfMonitor.telemetryPort }}
|
||||||
|
- --telemetry-port={{ $telemetryPort }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.customResourceState.enabled }}
|
||||||
|
- --custom-resource-state-config-file=/etc/customresourcestate/config.yaml
|
||||||
|
{{- end }}
|
||||||
|
{{- if or (.Values.kubeconfig.enabled) (.Values.customResourceState.enabled) (.Values.volumeMounts) }}
|
||||||
|
volumeMounts:
|
||||||
|
{{- if .Values.kubeconfig.enabled }}
|
||||||
|
- name: kubeconfig
|
||||||
|
mountPath: /opt/k8s/.kube/
|
||||||
|
readOnly: true
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.customResourceState.enabled }}
|
||||||
|
- name: customresourcestate-config
|
||||||
|
mountPath: /etc/customresourcestate
|
||||||
|
readOnly: true
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.volumeMounts }}
|
||||||
|
{{ toYaml .Values.volumeMounts | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||||
|
image: {{ include "kube-state-metrics.image" . }}
|
||||||
|
{{- if eq .Values.kubeRBACProxy.enabled false }}
|
||||||
|
ports:
|
||||||
|
- containerPort: {{ .Values.service.port | default 8080}}
|
||||||
|
name: "http"
|
||||||
|
{{- if .Values.selfMonitor.enabled }}
|
||||||
|
- containerPort: {{ $telemetryPort }}
|
||||||
|
name: "metrics"
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if not .Values.kubeRBACProxy.enabled }}
|
||||||
|
{{- if .Values.startupProbe.enabled }}
|
||||||
|
startupProbe:
|
||||||
|
failureThreshold: {{ .Values.startupProbe.failureThreshold }}
|
||||||
|
httpGet:
|
||||||
|
{{- if .Values.hostNetwork }}
|
||||||
|
host: 127.0.0.1
|
||||||
|
{{- end }}
|
||||||
|
httpHeaders:
|
||||||
|
{{- range $_, $header := .Values.startupProbe.httpGet.httpHeaders }}
|
||||||
|
- name: {{ $header.name }}
|
||||||
|
value: {{ $header.value }}
|
||||||
|
{{- end }}
|
||||||
|
path: /healthz
|
||||||
|
{{- if .Values.kubeRBACProxy.enabled }}
|
||||||
|
port: {{ .Values.service.port | default 8080 }}
|
||||||
|
scheme: HTTPS
|
||||||
|
{{- else }}
|
||||||
|
port: {{ $servicePort }}
|
||||||
|
scheme: {{ upper .Values.startupProbe.httpGet.scheme }}
|
||||||
|
{{- end }}
|
||||||
|
initialDelaySeconds: {{ .Values.startupProbe.initialDelaySeconds }}
|
||||||
|
periodSeconds: {{ .Values.startupProbe.periodSeconds }}
|
||||||
|
successThreshold: {{ .Values.startupProbe.successThreshold }}
|
||||||
|
timeoutSeconds: {{ .Values.startupProbe.timeoutSeconds }}
|
||||||
|
{{- end }}
|
||||||
|
livenessProbe:
|
||||||
|
failureThreshold: {{ .Values.livenessProbe.failureThreshold }}
|
||||||
|
httpGet:
|
||||||
|
{{- if .Values.hostNetwork }}
|
||||||
|
host: 127.0.0.1
|
||||||
|
{{- end }}
|
||||||
|
httpHeaders:
|
||||||
|
{{- range $_, $header := .Values.livenessProbe.httpGet.httpHeaders }}
|
||||||
|
- name: {{ $header.name }}
|
||||||
|
value: {{ $header.value }}
|
||||||
|
{{- end }}
|
||||||
|
path: /livez
|
||||||
|
{{- if .Values.kubeRBACProxy.enabled }}
|
||||||
|
port: {{ .Values.service.port | default 8080 }}
|
||||||
|
scheme: HTTPS
|
||||||
|
{{- else }}
|
||||||
|
port: {{ $servicePort }}
|
||||||
|
scheme: {{ upper .Values.livenessProbe.httpGet.scheme }}
|
||||||
|
{{- end }}
|
||||||
|
initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }}
|
||||||
|
periodSeconds: {{ .Values.livenessProbe.periodSeconds }}
|
||||||
|
successThreshold: {{ .Values.livenessProbe.successThreshold }}
|
||||||
|
timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }}
|
||||||
|
readinessProbe:
|
||||||
|
failureThreshold: {{ .Values.readinessProbe.failureThreshold }}
|
||||||
|
httpGet:
|
||||||
|
{{- if .Values.hostNetwork }}
|
||||||
|
host: 127.0.0.1
|
||||||
|
{{- end }}
|
||||||
|
httpHeaders:
|
||||||
|
{{- range $_, $header := .Values.readinessProbe.httpGet.httpHeaders }}
|
||||||
|
- name: {{ $header.name }}
|
||||||
|
value: {{ $header.value }}
|
||||||
|
{{- end }}
|
||||||
|
path: /readyz
|
||||||
|
{{- if .Values.kubeRBACProxy.enabled }}
|
||||||
|
port: {{ .Values.selfMonitor.telemetryPort | default 8081 }}
|
||||||
|
scheme: HTTPS
|
||||||
|
{{- else }}
|
||||||
|
port: {{ $telemetryPort }}
|
||||||
|
scheme: {{ upper .Values.readinessProbe.httpGet.scheme }}
|
||||||
|
{{- end }}
|
||||||
|
initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }}
|
||||||
|
periodSeconds: {{ .Values.readinessProbe.periodSeconds }}
|
||||||
|
successThreshold: {{ .Values.readinessProbe.successThreshold }}
|
||||||
|
timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }}
|
||||||
|
{{- end }}
|
||||||
|
resources:
|
||||||
|
{{ toYaml .Values.resources | indent 10 }}
|
||||||
|
{{- if .Values.containerSecurityContext }}
|
||||||
|
securityContext:
|
||||||
|
{{ toYaml .Values.containerSecurityContext | indent 10 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.kubeRBACProxy.enabled }}
|
||||||
|
- name: kube-rbac-proxy-http
|
||||||
|
args:
|
||||||
|
{{- if .Values.kubeRBACProxy.extraArgs }}
|
||||||
|
{{- .Values.kubeRBACProxy.extraArgs | toYaml | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
- --secure-listen-address=:{{ .Values.service.port | default 8080}}
|
||||||
|
- --upstream=http://127.0.0.1:{{ $servicePort }}/
|
||||||
|
- --proxy-endpoints-port=8888
|
||||||
|
- --config-file=/etc/kube-rbac-proxy-config/config-file.yaml
|
||||||
|
volumeMounts:
|
||||||
|
- name: kube-rbac-proxy-config
|
||||||
|
mountPath: /etc/kube-rbac-proxy-config
|
||||||
|
{{- with .Values.kubeRBACProxy.volumeMounts }}
|
||||||
|
{{- toYaml . | nindent 10 }}
|
||||||
|
{{- end }}
|
||||||
|
imagePullPolicy: {{ .Values.kubeRBACProxy.image.pullPolicy }}
|
||||||
|
image: {{ include "kubeRBACProxy.image" . }}
|
||||||
|
ports:
|
||||||
|
- containerPort: {{ .Values.service.port | default 8080}}
|
||||||
|
name: "http"
|
||||||
|
- containerPort: 8888
|
||||||
|
name: "http-healthz"
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
scheme: HTTPS
|
||||||
|
port: 8888
|
||||||
|
path: healthz
|
||||||
|
initialDelaySeconds: 5
|
||||||
|
timeoutSeconds: 5
|
||||||
|
{{- if .Values.kubeRBACProxy.resources }}
|
||||||
|
resources:
|
||||||
|
{{ toYaml .Values.kubeRBACProxy.resources | indent 10 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.kubeRBACProxy.containerSecurityContext }}
|
||||||
|
securityContext:
|
||||||
|
{{ toYaml .Values.kubeRBACProxy.containerSecurityContext | indent 10 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.selfMonitor.enabled }}
|
||||||
|
- name: kube-rbac-proxy-telemetry
|
||||||
|
args:
|
||||||
|
{{- if .Values.kubeRBACProxy.extraArgs }}
|
||||||
|
{{- .Values.kubeRBACProxy.extraArgs | toYaml | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
- --secure-listen-address=:{{ .Values.selfMonitor.telemetryPort | default 8081 }}
|
||||||
|
- --upstream=http://127.0.0.1:{{ $telemetryPort }}/
|
||||||
|
- --proxy-endpoints-port=8889
|
||||||
|
- --config-file=/etc/kube-rbac-proxy-config/config-file.yaml
|
||||||
|
volumeMounts:
|
||||||
|
- name: kube-rbac-proxy-config
|
||||||
|
mountPath: /etc/kube-rbac-proxy-config
|
||||||
|
{{- with .Values.kubeRBACProxy.volumeMounts }}
|
||||||
|
{{- toYaml . | nindent 10 }}
|
||||||
|
{{- end }}
|
||||||
|
imagePullPolicy: {{ .Values.kubeRBACProxy.image.pullPolicy }}
|
||||||
|
image: {{ include "kubeRBACProxy.image" . }}
|
||||||
|
ports:
|
||||||
|
- containerPort: {{ .Values.selfMonitor.telemetryPort | default 8081 }}
|
||||||
|
name: "metrics"
|
||||||
|
- containerPort: 8889
|
||||||
|
name: "metrics-healthz"
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
scheme: HTTPS
|
||||||
|
port: 8889
|
||||||
|
path: healthz
|
||||||
|
initialDelaySeconds: 5
|
||||||
|
timeoutSeconds: 5
|
||||||
|
{{- if .Values.kubeRBACProxy.resources }}
|
||||||
|
resources:
|
||||||
|
{{ toYaml .Values.kubeRBACProxy.resources | indent 10 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.kubeRBACProxy.containerSecurityContext }}
|
||||||
|
securityContext:
|
||||||
|
{{ toYaml .Values.kubeRBACProxy.containerSecurityContext | indent 10 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.containers }}
|
||||||
|
{{- toYaml . | nindent 6 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or .Values.imagePullSecrets .Values.global.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{- include "kube-state-metrics.imagePullSecrets" (dict "Values" .Values "imagePullSecrets" .Values.imagePullSecrets) | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- if kindIs "map" .Values.affinity }}
|
||||||
|
{{- toYaml .Values.affinity | nindent 8 }}
|
||||||
|
{{- else }}
|
||||||
|
{{- tpl .Values.affinity $ | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{ tpl (toYaml .) $ | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{ tpl (toYaml .) $ | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.topologySpreadConstraints }}
|
||||||
|
topologySpreadConstraints:
|
||||||
|
{{ toYaml .Values.topologySpreadConstraints | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or (.Values.kubeconfig.enabled) (.Values.customResourceState.enabled) (.Values.volumes) (.Values.kubeRBACProxy.enabled) }}
|
||||||
|
volumes:
|
||||||
|
{{- if .Values.kubeconfig.enabled}}
|
||||||
|
- name: kubeconfig
|
||||||
|
secret:
|
||||||
|
secretName: {{ template "kube-state-metrics.fullname" . }}-kubeconfig
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.kubeRBACProxy.enabled}}
|
||||||
|
- name: kube-rbac-proxy-config
|
||||||
|
configMap:
|
||||||
|
name: {{ template "kube-state-metrics.fullname" . }}-rbac-config
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.customResourceState.enabled}}
|
||||||
|
- name: customresourcestate-config
|
||||||
|
configMap:
|
||||||
|
name: {{ template "kube-state-metrics.fullname" . }}-customresourcestate-config
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.volumes }}
|
||||||
|
{{ toYaml .Values.volumes | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,4 @@
|
|||||||
|
{{ range .Values.extraManifests }}
|
||||||
|
---
|
||||||
|
{{ tpl (toYaml .) $ }}
|
||||||
|
{{ end }}
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
{{- if .Values.kubeconfig.enabled -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: {{ template "kube-state-metrics.fullname" . }}-kubeconfig
|
||||||
|
namespace: {{ template "kube-state-metrics.namespace" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "kube-state-metrics.labels" . | indent 4 }}
|
||||||
|
type: Opaque
|
||||||
|
data:
|
||||||
|
config: '{{ .Values.kubeconfig.secret }}'
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,43 @@
|
|||||||
|
{{- if and .Values.networkPolicy.enabled (eq .Values.networkPolicy.flavor "kubernetes") }}
|
||||||
|
kind: NetworkPolicy
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.annotations | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "kube-state-metrics.labels" . | indent 4 }}
|
||||||
|
name: {{ template "kube-state-metrics.fullname" . }}
|
||||||
|
namespace: {{ template "kube-state-metrics.namespace" . }}
|
||||||
|
spec:
|
||||||
|
{{- if .Values.networkPolicy.egress }}
|
||||||
|
## Deny all egress by default
|
||||||
|
egress:
|
||||||
|
{{- toYaml .Values.networkPolicy.egress | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
ingress:
|
||||||
|
{{- if .Values.networkPolicy.ingress }}
|
||||||
|
{{- toYaml .Values.networkPolicy.ingress | nindent 4 }}
|
||||||
|
{{- else }}
|
||||||
|
## Allow ingress on default ports by default
|
||||||
|
- ports:
|
||||||
|
- port: {{ .Values.service.port | default 8080 }}
|
||||||
|
protocol: TCP
|
||||||
|
{{- if .Values.selfMonitor.enabled }}
|
||||||
|
{{- $telemetryPort := ternary 9091 (.Values.selfMonitor.telemetryPort | default 8081) .Values.kubeRBACProxy.enabled}}
|
||||||
|
- port: {{ $telemetryPort }}
|
||||||
|
protocol: TCP
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
podSelector:
|
||||||
|
{{- if .Values.networkPolicy.podSelector }}
|
||||||
|
{{- toYaml .Values.networkPolicy.podSelector | nindent 4 }}
|
||||||
|
{{- else }}
|
||||||
|
matchLabels:
|
||||||
|
{{- include "kube-state-metrics.selectorLabels" . | indent 6 }}
|
||||||
|
{{- end }}
|
||||||
|
policyTypes:
|
||||||
|
- Ingress
|
||||||
|
- Egress
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
{{- if .Values.podDisruptionBudget -}}
|
||||||
|
{{ if $.Capabilities.APIVersions.Has "policy/v1/PodDisruptionBudget" -}}
|
||||||
|
apiVersion: policy/v1
|
||||||
|
{{- else -}}
|
||||||
|
apiVersion: policy/v1beta1
|
||||||
|
{{- end }}
|
||||||
|
kind: PodDisruptionBudget
|
||||||
|
metadata:
|
||||||
|
name: {{ template "kube-state-metrics.fullname" . }}
|
||||||
|
namespace: {{ template "kube-state-metrics.namespace" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "kube-state-metrics.labels" . | indent 4 }}
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }}
|
||||||
|
{{ toYaml .Values.podDisruptionBudget | indent 2 }}
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,39 @@
|
|||||||
|
{{- if and .Values.podSecurityPolicy.enabled (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }}
|
||||||
|
apiVersion: policy/v1beta1
|
||||||
|
kind: PodSecurityPolicy
|
||||||
|
metadata:
|
||||||
|
name: {{ template "kube-state-metrics.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "kube-state-metrics.labels" . | indent 4 }}
|
||||||
|
{{- if .Values.podSecurityPolicy.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.podSecurityPolicy.annotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
privileged: false
|
||||||
|
volumes:
|
||||||
|
- 'secret'
|
||||||
|
{{- if .Values.podSecurityPolicy.additionalVolumes }}
|
||||||
|
{{ toYaml .Values.podSecurityPolicy.additionalVolumes | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
hostNetwork: false
|
||||||
|
hostIPC: false
|
||||||
|
hostPID: false
|
||||||
|
runAsUser:
|
||||||
|
rule: 'MustRunAsNonRoot'
|
||||||
|
seLinux:
|
||||||
|
rule: 'RunAsAny'
|
||||||
|
supplementalGroups:
|
||||||
|
rule: 'MustRunAs'
|
||||||
|
ranges:
|
||||||
|
# Forbid adding the root group.
|
||||||
|
- min: 1
|
||||||
|
max: 65535
|
||||||
|
fsGroup:
|
||||||
|
rule: 'MustRunAs'
|
||||||
|
ranges:
|
||||||
|
# Forbid adding the root group.
|
||||||
|
- min: 1
|
||||||
|
max: 65535
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
{{- if and .Values.podSecurityPolicy.enabled (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }}
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "kube-state-metrics.labels" . | indent 4 }}
|
||||||
|
name: psp-{{ template "kube-state-metrics.fullname" . }}
|
||||||
|
rules:
|
||||||
|
{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}
|
||||||
|
{{- if semverCompare "> 1.15.0-0" $kubeTargetVersion }}
|
||||||
|
- apiGroups: ['policy']
|
||||||
|
{{- else }}
|
||||||
|
- apiGroups: ['extensions']
|
||||||
|
{{- end }}
|
||||||
|
resources: ['podsecuritypolicies']
|
||||||
|
verbs: ['use']
|
||||||
|
resourceNames:
|
||||||
|
- {{ template "kube-state-metrics.fullname" . }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
{{- if and .Values.podSecurityPolicy.enabled (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }}
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "kube-state-metrics.labels" . | indent 4 }}
|
||||||
|
name: psp-{{ template "kube-state-metrics.fullname" . }}
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: psp-{{ template "kube-state-metrics.fullname" . }}
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: {{ template "kube-state-metrics.serviceAccountName" . }}
|
||||||
|
namespace: {{ template "kube-state-metrics.namespace" . }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
{{- if .Values.kubeRBACProxy.enabled}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: {{ template "kube-state-metrics.fullname" . }}-rbac-config
|
||||||
|
namespace: {{ template "kube-state-metrics.namespace" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "kube-state-metrics.labels" . | indent 4 }}
|
||||||
|
{{- if .Values.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.annotations | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
data:
|
||||||
|
config-file.yaml: |+
|
||||||
|
authorization:
|
||||||
|
resourceAttributes:
|
||||||
|
namespace: {{ template "kube-state-metrics.namespace" . }}
|
||||||
|
apiVersion: v1
|
||||||
|
resource: services
|
||||||
|
subresource: {{ template "kube-state-metrics.fullname" . }}
|
||||||
|
name: {{ template "kube-state-metrics.fullname" . }}
|
||||||
|
{{- end }}
|
||||||
236
charts/prometheus/charts/kube-state-metrics/templates/role.yaml
Normal file
236
charts/prometheus/charts/kube-state-metrics/templates/role.yaml
Normal file
@ -0,0 +1,236 @@
|
|||||||
|
{{- if and (eq .Values.rbac.create true) (not .Values.rbac.useExistingRole) -}}
|
||||||
|
{{- range (ternary (join "," .Values.namespaces | split "," ) (list "") (eq $.Values.rbac.useClusterRole false)) }}
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
{{- if eq $.Values.rbac.useClusterRole false }}
|
||||||
|
kind: Role
|
||||||
|
{{- else }}
|
||||||
|
kind: ClusterRole
|
||||||
|
{{- end }}
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "kube-state-metrics.labels" $ | indent 4 }}
|
||||||
|
name: {{ template "kube-state-metrics.fullname" $ }}
|
||||||
|
{{- if eq $.Values.rbac.useClusterRole false }}
|
||||||
|
namespace: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
rules:
|
||||||
|
{{ if has "certificatesigningrequests" $.Values.collectors }}
|
||||||
|
- apiGroups: ["certificates.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- certificatesigningrequests
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "configmaps" $.Values.collectors }}
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- configmaps
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "cronjobs" $.Values.collectors }}
|
||||||
|
- apiGroups: ["batch"]
|
||||||
|
resources:
|
||||||
|
- cronjobs
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "daemonsets" $.Values.collectors }}
|
||||||
|
- apiGroups: ["extensions", "apps"]
|
||||||
|
resources:
|
||||||
|
- daemonsets
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "deployments" $.Values.collectors }}
|
||||||
|
- apiGroups: ["extensions", "apps"]
|
||||||
|
resources:
|
||||||
|
- deployments
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "endpoints" $.Values.collectors }}
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- endpoints
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "endpointslices" $.Values.collectors }}
|
||||||
|
- apiGroups: ["discovery.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- endpointslices
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "horizontalpodautoscalers" $.Values.collectors }}
|
||||||
|
- apiGroups: ["autoscaling"]
|
||||||
|
resources:
|
||||||
|
- horizontalpodautoscalers
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "ingresses" $.Values.collectors }}
|
||||||
|
- apiGroups: ["extensions", "networking.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- ingresses
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "jobs" $.Values.collectors }}
|
||||||
|
- apiGroups: ["batch"]
|
||||||
|
resources:
|
||||||
|
- jobs
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "leases" $.Values.collectors }}
|
||||||
|
- apiGroups: ["coordination.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- leases
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "limitranges" $.Values.collectors }}
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- limitranges
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "mutatingwebhookconfigurations" $.Values.collectors }}
|
||||||
|
- apiGroups: ["admissionregistration.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- mutatingwebhookconfigurations
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "namespaces" $.Values.collectors }}
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- namespaces
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "networkpolicies" $.Values.collectors }}
|
||||||
|
- apiGroups: ["networking.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- networkpolicies
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "ingressclasses" $.Values.collectors }}
|
||||||
|
- apiGroups: ["networking.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- ingressclasses
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "clusterrolebindings" $.Values.collectors }}
|
||||||
|
- apiGroups: ["rbac.authorization.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- clusterrolebindings
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "clusterroles" $.Values.collectors }}
|
||||||
|
- apiGroups: ["rbac.authorization.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- clusterroles
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "roles" $.Values.collectors }}
|
||||||
|
- apiGroups: ["rbac.authorization.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- roles
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "nodes" $.Values.collectors }}
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- nodes
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "persistentvolumeclaims" $.Values.collectors }}
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- persistentvolumeclaims
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "persistentvolumes" $.Values.collectors }}
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- persistentvolumes
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "poddisruptionbudgets" $.Values.collectors }}
|
||||||
|
- apiGroups: ["policy"]
|
||||||
|
resources:
|
||||||
|
- poddisruptionbudgets
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "pods" $.Values.collectors }}
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- pods
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "replicasets" $.Values.collectors }}
|
||||||
|
- apiGroups: ["extensions", "apps"]
|
||||||
|
resources:
|
||||||
|
- replicasets
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "replicationcontrollers" $.Values.collectors }}
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- replicationcontrollers
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "resourcequotas" $.Values.collectors }}
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- resourcequotas
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "secrets" $.Values.collectors }}
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- secrets
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "services" $.Values.collectors }}
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- services
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "statefulsets" $.Values.collectors }}
|
||||||
|
- apiGroups: ["apps"]
|
||||||
|
resources:
|
||||||
|
- statefulsets
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "storageclasses" $.Values.collectors }}
|
||||||
|
- apiGroups: ["storage.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- storageclasses
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "validatingwebhookconfigurations" $.Values.collectors }}
|
||||||
|
- apiGroups: ["admissionregistration.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- validatingwebhookconfigurations
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if has "volumeattachments" $.Values.collectors }}
|
||||||
|
- apiGroups: ["storage.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- volumeattachments
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{- if $.Values.kubeRBACProxy.enabled }}
|
||||||
|
- apiGroups: ["authentication.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- tokenreviews
|
||||||
|
verbs: ["create"]
|
||||||
|
- apiGroups: ["authorization.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- subjectaccessreviews
|
||||||
|
verbs: ["create"]
|
||||||
|
{{- end }}
|
||||||
|
{{- if $.Values.customResourceState.enabled }}
|
||||||
|
- apiGroups: ["apiextensions.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- customresourcedefinitions
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{- end }}
|
||||||
|
{{ if $.Values.rbac.extraRules }}
|
||||||
|
{{ toYaml $.Values.rbac.extraRules }}
|
||||||
|
{{ end }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
{{- if and (eq .Values.rbac.create true) (eq .Values.rbac.useClusterRole false) -}}
|
||||||
|
{{- range (join "," $.Values.namespaces) | split "," }}
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: RoleBinding
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "kube-state-metrics.labels" $ | indent 4 }}
|
||||||
|
name: {{ template "kube-state-metrics.fullname" $ }}
|
||||||
|
namespace: {{ . }}
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: Role
|
||||||
|
{{- if (not $.Values.rbac.useExistingRole) }}
|
||||||
|
name: {{ template "kube-state-metrics.fullname" $ }}
|
||||||
|
{{- else }}
|
||||||
|
name: {{ $.Values.rbac.useExistingRole }}
|
||||||
|
{{- end }}
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: {{ template "kube-state-metrics.serviceAccountName" $ }}
|
||||||
|
namespace: {{ template "kube-state-metrics.namespace" $ }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,60 @@
|
|||||||
|
{{- if .Values.prometheus.scrapeconfig.enabled }}
|
||||||
|
apiVersion: monitoring.coreos.com/v1alpha1
|
||||||
|
kind: ScrapeConfig
|
||||||
|
metadata:
|
||||||
|
name: {{ template "kube-state-metrics.fullname" . }}
|
||||||
|
namespace: {{ template "kube-state-metrics.namespace" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "kube-state-metrics.labels" . | indent 4 }}
|
||||||
|
{{- with .Values.prometheus.scrapeconfig.additionalLabels }}
|
||||||
|
{{- tpl (toYaml . | nindent 4) $ }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.prometheus.scrapeconfig.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- tpl (toYaml . | nindent 4) $ }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
{{- include "scrapeconfig.scrapeLimits" .Values.prometheus.scrapeconfig | indent 2 }}
|
||||||
|
staticConfigs:
|
||||||
|
- targets:
|
||||||
|
- {{ template "kube-state-metrics.fullname" . }}.{{ template "kube-state-metrics.namespace" . }}.svc:{{ .Values.service.port }}
|
||||||
|
{{- if .Values.prometheus.scrapeconfig.staticConfigLabels}}
|
||||||
|
labels:
|
||||||
|
{{- with .Values.prometheus.scrapeconfig.staticConfigLabels }}
|
||||||
|
{{- tpl (toYaml . | nindent 8) $ }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.prometheus.scrapeconfig.jobName }}
|
||||||
|
jobName: {{ .Values.prometheus.scrapeconfig.jobName }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.prometheus.scrapeconfig.honorLabels }}
|
||||||
|
honorLabels: true
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.prometheus.scrapeconfig.scrapeInterval }}
|
||||||
|
scrapeInterval: {{ .Values.prometheus.scrapeconfig.scrapeInterval }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.prometheus.scrapeconfig.scrapeTimeout }}
|
||||||
|
scrapeTimeout: {{ .Values.prometheus.scrapeconfig.scrapeTimeout }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.prometheus.scrapeconfig.proxyUrl }}
|
||||||
|
proxyUrl: {{ .Values.prometheus.scrapeconfig.proxyUrl }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.prometheus.scrapeconfig.enableHttp2 }}
|
||||||
|
enableHttp2: {{ .Values.prometheus.scrapeconfig.enableHttp2 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.prometheus.scrapeconfig.metricRelabelings }}
|
||||||
|
metricRelabelings:
|
||||||
|
{{- toYaml .Values.prometheus.scrapeconfig.metricRelabelings | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.prometheus.scrapeconfig.relabelings }}
|
||||||
|
relabelings:
|
||||||
|
{{- toYaml .Values.prometheus.scrapeconfig.relabelings | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.prometheus.scrapeconfig.scheme }}
|
||||||
|
scheme: {{ .Values.prometheus.scrapeconfig.scheme }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.prometheus.scrapeconfig.tlsConfig }}
|
||||||
|
tlsConfig:
|
||||||
|
{{- toYaml (.Values.prometheus.scrapeconfig.tlsConfig ) | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,53 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ template "kube-state-metrics.fullname" . }}
|
||||||
|
namespace: {{ template "kube-state-metrics.namespace" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "kube-state-metrics.labels" . | indent 4 }}
|
||||||
|
annotations:
|
||||||
|
{{- if .Values.prometheusScrape }}
|
||||||
|
prometheus.io/scrape: '{{ .Values.prometheusScrape }}'
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.service.annotations }}
|
||||||
|
{{- toYaml .Values.service.annotations | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
type: "{{ .Values.service.type }}"
|
||||||
|
{{- if .Values.service.ipDualStack.enabled }}
|
||||||
|
ipFamilies: {{ toYaml .Values.service.ipDualStack.ipFamilies | nindent 4 }}
|
||||||
|
ipFamilyPolicy: {{ .Values.service.ipDualStack.ipFamilyPolicy }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- name: "http"
|
||||||
|
protocol: TCP
|
||||||
|
port: {{ .Values.service.port | default 8080}}
|
||||||
|
{{- if .Values.service.nodePort }}
|
||||||
|
nodePort: {{ .Values.service.nodePort }}
|
||||||
|
{{- end }}
|
||||||
|
targetPort: {{ .Values.service.port | default 8080}}
|
||||||
|
{{ if .Values.selfMonitor.enabled }}
|
||||||
|
- name: "metrics"
|
||||||
|
protocol: TCP
|
||||||
|
port: {{ .Values.selfMonitor.telemetryPort | default 8081 }}
|
||||||
|
targetPort: {{ .Values.selfMonitor.telemetryPort | default 8081 }}
|
||||||
|
{{- if .Values.selfMonitor.telemetryNodePort }}
|
||||||
|
nodePort: {{ .Values.selfMonitor.telemetryNodePort }}
|
||||||
|
{{- end }}
|
||||||
|
{{ end }}
|
||||||
|
{{- if .Values.service.loadBalancerIP }}
|
||||||
|
loadBalancerIP: "{{ .Values.service.loadBalancerIP }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.service.loadBalancerSourceRanges }}
|
||||||
|
loadBalancerSourceRanges:
|
||||||
|
{{- range $cidr := .Values.service.loadBalancerSourceRanges }}
|
||||||
|
- {{ $cidr }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.autosharding.enabled }}
|
||||||
|
clusterIP: None
|
||||||
|
{{- else if .Values.service.clusterIP }}
|
||||||
|
clusterIP: "{{ .Values.service.clusterIP }}"
|
||||||
|
{{- end }}
|
||||||
|
selector:
|
||||||
|
{{- include "kube-state-metrics.selectorLabels" . | indent 4 }}
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
{{- if .Values.serviceAccount.create -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
automountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }}
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "kube-state-metrics.labels" . | indent 4 }}
|
||||||
|
name: {{ template "kube-state-metrics.serviceAccountName" . }}
|
||||||
|
namespace: {{ template "kube-state-metrics.namespace" . }}
|
||||||
|
{{- if .Values.serviceAccount.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.serviceAccount.annotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or .Values.serviceAccount.imagePullSecrets .Values.global.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{- include "kube-state-metrics.imagePullSecrets" (dict "Values" .Values "imagePullSecrets" .Values.serviceAccount.imagePullSecrets) | indent 2 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,120 @@
|
|||||||
|
{{- if .Values.prometheus.monitor.enabled }}
|
||||||
|
apiVersion: monitoring.coreos.com/v1
|
||||||
|
kind: ServiceMonitor
|
||||||
|
metadata:
|
||||||
|
name: {{ template "kube-state-metrics.fullname" . }}
|
||||||
|
namespace: {{ template "kube-state-metrics.namespace" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "kube-state-metrics.labels" . | indent 4 }}
|
||||||
|
{{- with .Values.prometheus.monitor.additionalLabels }}
|
||||||
|
{{- tpl (toYaml . | nindent 4) $ }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.prometheus.monitor.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- tpl (toYaml . | nindent 4) $ }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
jobLabel: {{ default "app.kubernetes.io/name" .Values.prometheus.monitor.jobLabel }}
|
||||||
|
{{- with .Values.prometheus.monitor.targetLabels }}
|
||||||
|
targetLabels:
|
||||||
|
{{- toYaml . | trim | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.prometheus.monitor.podTargetLabels }}
|
||||||
|
podTargetLabels:
|
||||||
|
{{- toYaml . | trim | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- include "servicemonitor.scrapeLimits" .Values.prometheus.monitor | indent 2 }}
|
||||||
|
{{- if .Values.prometheus.monitor.namespaceSelector }}
|
||||||
|
namespaceSelector:
|
||||||
|
matchNames:
|
||||||
|
{{- with .Values.prometheus.monitor.namespaceSelector }}
|
||||||
|
{{- toYaml . | nindent 6 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- with .Values.prometheus.monitor.selectorOverride }}
|
||||||
|
{{- toYaml . | nindent 6 }}
|
||||||
|
{{- else }}
|
||||||
|
{{- include "kube-state-metrics.selectorLabels" . | indent 6 }}
|
||||||
|
{{- end }}
|
||||||
|
endpoints:
|
||||||
|
- port: http
|
||||||
|
{{- if or .Values.prometheus.monitor.http.interval .Values.prometheus.monitor.interval }}
|
||||||
|
interval: {{ .Values.prometheus.monitor.http.interval | default .Values.prometheus.monitor.interval }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or .Values.prometheus.monitor.http.scrapeTimeout .Values.prometheus.monitor.scrapeTimeout }}
|
||||||
|
scrapeTimeout: {{ .Values.prometheus.monitor.http.scrapeTimeout | default .Values.prometheus.monitor.scrapeTimeout }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or .Values.prometheus.monitor.http.proxyUrl .Values.prometheus.monitor.proxyUrl }}
|
||||||
|
proxyUrl: {{ .Values.prometheus.monitor.http.proxyUrl | default .Values.prometheus.monitor.proxyUrl }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or .Values.prometheus.monitor.http.enableHttp2 .Values.prometheus.monitor.enableHttp2 }}
|
||||||
|
enableHttp2: {{ .Values.prometheus.monitor.http.enableHttp2 | default .Values.prometheus.monitor.enableHttp2 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or .Values.prometheus.monitor.http.honorLabels .Values.prometheus.monitor.honorLabels }}
|
||||||
|
honorLabels: true
|
||||||
|
{{- end }}
|
||||||
|
{{- if or .Values.prometheus.monitor.http.metricRelabelings .Values.prometheus.monitor.metricRelabelings }}
|
||||||
|
metricRelabelings:
|
||||||
|
{{- toYaml (.Values.prometheus.monitor.http.metricRelabelings | default .Values.prometheus.monitor.metricRelabelings) | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or .Values.prometheus.monitor.http.relabelings .Values.prometheus.monitor.relabelings }}
|
||||||
|
relabelings:
|
||||||
|
{{- toYaml (.Values.prometheus.monitor.http.relabelings | default .Values.prometheus.monitor.relabelings) | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or .Values.prometheus.monitor.http.scheme .Values.prometheus.monitor.scheme }}
|
||||||
|
scheme: {{ .Values.prometheus.monitor.http.scheme | default .Values.prometheus.monitor.scheme }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or .Values.prometheus.monitor.http.tlsConfig .Values.prometheus.monitor.tlsConfig }}
|
||||||
|
tlsConfig:
|
||||||
|
{{- toYaml (.Values.prometheus.monitor.http.tlsConfig | default .Values.prometheus.monitor.tlsConfig) | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or .Values.prometheus.monitor.http.bearerTokenFile .Values.prometheus.monitor.bearerTokenFile }}
|
||||||
|
bearerTokenFile: {{ .Values.prometheus.monitor.http.bearerTokenFile | default .Values.prometheus.monitor.bearerTokenFile }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with (.Values.prometheus.monitor.http.bearerTokenSecret | default .Values.prometheus.monitor.bearerTokenSecret) }}
|
||||||
|
bearerTokenSecret:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.selfMonitor.enabled }}
|
||||||
|
- port: metrics
|
||||||
|
{{- if or .Values.prometheus.monitor.metrics.interval .Values.prometheus.monitor.interval }}
|
||||||
|
interval: {{ .Values.prometheus.monitor.metrics.interval | default .Values.prometheus.monitor.interval }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or .Values.prometheus.monitor.metrics.scrapeTimeout .Values.prometheus.monitor.scrapeTimeout }}
|
||||||
|
scrapeTimeout: {{ .Values.prometheus.monitor.metrics.scrapeTimeout | default .Values.prometheus.monitor.scrapeTimeout }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or .Values.prometheus.monitor.metrics.proxyUrl .Values.prometheus.monitor.proxyUrl }}
|
||||||
|
proxyUrl: {{ .Values.prometheus.monitor.metrics.proxyUrl | default .Values.prometheus.monitor.proxyUrl }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or .Values.prometheus.monitor.metrics.enableHttp2 .Values.prometheus.monitor.enableHttp2 }}
|
||||||
|
enableHttp2: {{ .Values.prometheus.monitor.metrics.enableHttp2 | default .Values.prometheus.monitor.enableHttp2 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or .Values.prometheus.monitor.metrics.honorLabels .Values.prometheus.monitor.honorLabels }}
|
||||||
|
honorLabels: true
|
||||||
|
{{- end }}
|
||||||
|
{{- if or .Values.prometheus.monitor.metrics.metricRelabelings .Values.prometheus.monitor.metricRelabelings }}
|
||||||
|
metricRelabelings:
|
||||||
|
{{- toYaml (.Values.prometheus.monitor.metrics.metricRelabelings | default .Values.prometheus.monitor.metricRelabelings) | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or .Values.prometheus.monitor.metrics.relabelings .Values.prometheus.monitor.relabelings }}
|
||||||
|
relabelings:
|
||||||
|
{{- toYaml (.Values.prometheus.monitor.metrics.relabelings | default .Values.prometheus.monitor.relabelings) | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or .Values.prometheus.monitor.metrics.scheme .Values.prometheus.monitor.scheme }}
|
||||||
|
scheme: {{ .Values.prometheus.monitor.metrics.scheme | default .Values.prometheus.monitor.scheme }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or .Values.prometheus.monitor.metrics.tlsConfig .Values.prometheus.monitor.tlsConfig }}
|
||||||
|
tlsConfig:
|
||||||
|
{{- toYaml (.Values.prometheus.monitor.metrics.tlsConfig | default .Values.prometheus.monitor.tlsConfig) | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or .Values.prometheus.monitor.metrics.bearerTokenFile .Values.prometheus.monitor.bearerTokenFile }}
|
||||||
|
bearerTokenFile: {{ .Values.prometheus.monitor.metrics.bearerTokenFile | default .Values.prometheus.monitor.bearerTokenFile }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with (.Values.prometheus.monitor.metrics.bearerTokenSecret | default .Values.prometheus.monitor.bearerTokenSecret) }}
|
||||||
|
bearerTokenSecret:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,26 @@
|
|||||||
|
{{- if and .Values.autosharding.enabled .Values.rbac.create -}}
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: Role
|
||||||
|
metadata:
|
||||||
|
name: stsdiscovery-{{ template "kube-state-metrics.fullname" . }}
|
||||||
|
namespace: {{ template "kube-state-metrics.namespace" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "kube-state-metrics.labels" . | indent 4 }}
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- pods
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- apiGroups:
|
||||||
|
- apps
|
||||||
|
resourceNames:
|
||||||
|
- {{ template "kube-state-metrics.fullname" . }}
|
||||||
|
resources:
|
||||||
|
- statefulsets
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,17 @@
|
|||||||
|
{{- if and .Values.autosharding.enabled .Values.rbac.create -}}
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: RoleBinding
|
||||||
|
metadata:
|
||||||
|
name: stsdiscovery-{{ template "kube-state-metrics.fullname" . }}
|
||||||
|
namespace: {{ template "kube-state-metrics.namespace" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "kube-state-metrics.labels" . | indent 4 }}
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: Role
|
||||||
|
name: stsdiscovery-{{ template "kube-state-metrics.fullname" . }}
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: {{ template "kube-state-metrics.serviceAccountName" . }}
|
||||||
|
namespace: {{ template "kube-state-metrics.namespace" . }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,44 @@
|
|||||||
|
{{- if and (.Capabilities.APIVersions.Has "autoscaling.k8s.io/v1") (.Values.verticalPodAutoscaler.enabled) }}
|
||||||
|
apiVersion: autoscaling.k8s.io/v1
|
||||||
|
kind: VerticalPodAutoscaler
|
||||||
|
metadata:
|
||||||
|
name: {{ template "kube-state-metrics.fullname" . }}
|
||||||
|
namespace: {{ template "kube-state-metrics.namespace" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "kube-state-metrics.labels" . | indent 4 }}
|
||||||
|
spec:
|
||||||
|
{{- with .Values.verticalPodAutoscaler.recommenders }}
|
||||||
|
recommenders:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
resourcePolicy:
|
||||||
|
containerPolicies:
|
||||||
|
- containerName: {{ template "kube-state-metrics.name" . }}
|
||||||
|
{{- with .Values.verticalPodAutoscaler.controlledResources }}
|
||||||
|
controlledResources:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.verticalPodAutoscaler.controlledValues }}
|
||||||
|
controlledValues: {{ .Values.verticalPodAutoscaler.controlledValues }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.verticalPodAutoscaler.maxAllowed }}
|
||||||
|
maxAllowed:
|
||||||
|
{{ toYaml .Values.verticalPodAutoscaler.maxAllowed | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.verticalPodAutoscaler.minAllowed }}
|
||||||
|
minAllowed:
|
||||||
|
{{ toYaml .Values.verticalPodAutoscaler.minAllowed | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
targetRef:
|
||||||
|
apiVersion: apps/v1
|
||||||
|
{{- if .Values.autosharding.enabled }}
|
||||||
|
kind: StatefulSet
|
||||||
|
{{- else }}
|
||||||
|
kind: Deployment
|
||||||
|
{{- end }}
|
||||||
|
name: {{ template "kube-state-metrics.fullname" . }}
|
||||||
|
{{- with .Values.verticalPodAutoscaler.updatePolicy }}
|
||||||
|
updatePolicy:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
609
charts/prometheus/charts/kube-state-metrics/values.yaml
Normal file
609
charts/prometheus/charts/kube-state-metrics/values.yaml
Normal file
@ -0,0 +1,609 @@
|
|||||||
|
# Default values for kube-state-metrics.
|
||||||
|
prometheusScrape: true
|
||||||
|
image:
|
||||||
|
registry: registry.k8s.io
|
||||||
|
repository: kube-state-metrics/kube-state-metrics
|
||||||
|
# If unset use v + .Charts.appVersion
|
||||||
|
tag: ""
|
||||||
|
sha: ""
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
|
||||||
|
imagePullSecrets: []
|
||||||
|
# - name: "image-pull-secret"
|
||||||
|
|
||||||
|
global:
|
||||||
|
# To help compatibility with other charts which use global.imagePullSecrets.
|
||||||
|
# Allow either an array of {name: pullSecret} maps (k8s-style), or an array of strings (more common helm-style).
|
||||||
|
# global:
|
||||||
|
# imagePullSecrets:
|
||||||
|
# - name: pullSecret1
|
||||||
|
# - name: pullSecret2
|
||||||
|
# or
|
||||||
|
# global:
|
||||||
|
# imagePullSecrets:
|
||||||
|
# - pullSecret1
|
||||||
|
# - pullSecret2
|
||||||
|
imagePullSecrets: []
|
||||||
|
#
|
||||||
|
# Allow parent charts to override registry hostname
|
||||||
|
imageRegistry: ""
|
||||||
|
|
||||||
|
# If set to true, this will deploy kube-state-metrics as a StatefulSet and the data
|
||||||
|
# will be automatically sharded across <.Values.replicas> pods using the built-in
|
||||||
|
# autodiscovery feature: https://github.com/kubernetes/kube-state-metrics#automated-sharding
|
||||||
|
# This is an experimental feature and there are no stability guarantees.
|
||||||
|
autosharding:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
replicas: 1
|
||||||
|
|
||||||
|
# Change the deployment strategy when autosharding is disabled.
|
||||||
|
# ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy
|
||||||
|
# The default is "RollingUpdate" as per Kubernetes defaults.
|
||||||
|
# During a release, 'RollingUpdate' can lead to two running instances for a short period of time while 'Recreate' can create a small gap in data.
|
||||||
|
# updateStrategy: Recreate
|
||||||
|
|
||||||
|
# Number of old history to retain to allow rollback
|
||||||
|
# Default Kubernetes value is set to 10
|
||||||
|
revisionHistoryLimit: 10
|
||||||
|
|
||||||
|
# List of additional cli arguments to configure kube-state-metrics
|
||||||
|
# for example: --enable-gzip-encoding, --log-file, etc.
|
||||||
|
# all the possible args can be found here: https://github.com/kubernetes/kube-state-metrics/blob/master/docs/cli-arguments.md
|
||||||
|
extraArgs: []
|
||||||
|
|
||||||
|
# If false then the user will opt out of automounting API credentials.
|
||||||
|
automountServiceAccountToken: true
|
||||||
|
|
||||||
|
service:
|
||||||
|
port: 8080
|
||||||
|
# Default to clusterIP for backward compatibility
|
||||||
|
type: ClusterIP
|
||||||
|
ipDualStack:
|
||||||
|
enabled: false
|
||||||
|
ipFamilies: ["IPv6", "IPv4"]
|
||||||
|
ipFamilyPolicy: "PreferDualStack"
|
||||||
|
nodePort: 0
|
||||||
|
loadBalancerIP: ""
|
||||||
|
# Only allow access to the loadBalancerIP from these IPs
|
||||||
|
loadBalancerSourceRanges: []
|
||||||
|
clusterIP: ""
|
||||||
|
annotations: {}
|
||||||
|
|
||||||
|
## Additional labels to add to all resources
|
||||||
|
customLabels: {}
|
||||||
|
# app: kube-state-metrics
|
||||||
|
|
||||||
|
## Override selector labels
|
||||||
|
selectorOverride: {}
|
||||||
|
|
||||||
|
## set to true to add the release label so scraping of the servicemonitor with kube-prometheus-stack works out of the box
|
||||||
|
releaseLabel: false
|
||||||
|
|
||||||
|
hostNetwork: false
|
||||||
|
|
||||||
|
rbac:
|
||||||
|
# If true, create & use RBAC resources
|
||||||
|
create: true
|
||||||
|
|
||||||
|
# Set to a rolename to use existing role - skipping role creating - but still doing serviceaccount and rolebinding to it, rolename set here.
|
||||||
|
# useExistingRole: your-existing-role
|
||||||
|
|
||||||
|
# If set to false - Run without Cluteradmin privs needed - ONLY works if namespace is also set (if useExistingRole is set this name is used as ClusterRole or Role to bind to)
|
||||||
|
useClusterRole: true
|
||||||
|
|
||||||
|
# Add permissions for CustomResources' apiGroups in Role/ClusterRole. Should be used in conjunction with Custom Resource State Metrics configuration
|
||||||
|
# Example:
|
||||||
|
# - apiGroups: ["monitoring.coreos.com"]
|
||||||
|
# resources: ["prometheuses"]
|
||||||
|
# verbs: ["list", "watch"]
|
||||||
|
extraRules: []
|
||||||
|
|
||||||
|
# Configure kube-rbac-proxy. When enabled, creates one kube-rbac-proxy container per exposed HTTP endpoint (metrics and telemetry if enabled).
|
||||||
|
# The requests are served through the same service but requests are then HTTPS.
|
||||||
|
kubeRBACProxy:
|
||||||
|
enabled: false
|
||||||
|
image:
|
||||||
|
registry: quay.io
|
||||||
|
repository: brancz/kube-rbac-proxy
|
||||||
|
tag: v0.19.1
|
||||||
|
sha: ""
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
|
||||||
|
# List of additional cli arguments to configure kube-rbac-prxy
|
||||||
|
# for example: --tls-cipher-suites, --log-file, etc.
|
||||||
|
# all the possible args can be found here: https://github.com/brancz/kube-rbac-proxy#usage
|
||||||
|
extraArgs: []
|
||||||
|
|
||||||
|
## Specify security settings for a Container
|
||||||
|
## Allows overrides and additional options compared to (Pod) securityContext
|
||||||
|
## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
|
||||||
|
containerSecurityContext:
|
||||||
|
readOnlyRootFilesystem: true
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- ALL
|
||||||
|
|
||||||
|
resources: {}
|
||||||
|
# We usually recommend not to specify default resources and to leave this as a conscious
|
||||||
|
# choice for the user. This also increases chances charts run on environments with little
|
||||||
|
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
||||||
|
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
||||||
|
# limits:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 64Mi
|
||||||
|
# requests:
|
||||||
|
# cpu: 10m
|
||||||
|
# memory: 32Mi
|
||||||
|
|
||||||
|
## volumeMounts enables mounting custom volumes in rbac-proxy containers
|
||||||
|
## Useful for TLS certificates and keys
|
||||||
|
volumeMounts: []
|
||||||
|
# - mountPath: /etc/tls
|
||||||
|
# name: kube-rbac-proxy-tls
|
||||||
|
# readOnly: true
|
||||||
|
|
||||||
|
serviceAccount:
|
||||||
|
# Specifies whether a ServiceAccount should be created, require rbac true
|
||||||
|
create: true
|
||||||
|
# The name of the ServiceAccount to use.
|
||||||
|
# If not set and create is true, a name is generated using the fullname template
|
||||||
|
name:
|
||||||
|
# Reference to one or more secrets to be used when pulling images
|
||||||
|
# ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||||
|
imagePullSecrets: []
|
||||||
|
# ServiceAccount annotations.
|
||||||
|
# Use case: AWS EKS IAM roles for service accounts
|
||||||
|
# ref: https://docs.aws.amazon.com/eks/latest/userguide/specify-service-account-role.html
|
||||||
|
annotations: {}
|
||||||
|
# If false then the user will opt out of automounting API credentials.
|
||||||
|
automountServiceAccountToken: true
|
||||||
|
|
||||||
|
# Additional Environment variables
|
||||||
|
env: []
|
||||||
|
# - name: GOMAXPROCS
|
||||||
|
# valueFrom:
|
||||||
|
# resourceFieldRef:
|
||||||
|
# resource: limits.cpu
|
||||||
|
|
||||||
|
prometheus:
|
||||||
|
monitor:
|
||||||
|
enabled: false
|
||||||
|
annotations: {}
|
||||||
|
additionalLabels: {}
|
||||||
|
namespace: ""
|
||||||
|
namespaceSelector: []
|
||||||
|
jobLabel: ""
|
||||||
|
targetLabels: []
|
||||||
|
podTargetLabels: []
|
||||||
|
## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.
|
||||||
|
##
|
||||||
|
sampleLimit: 0
|
||||||
|
|
||||||
|
## TargetLimit defines a limit on the number of scraped targets that will be accepted.
|
||||||
|
##
|
||||||
|
targetLimit: 0
|
||||||
|
|
||||||
|
## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
|
||||||
|
##
|
||||||
|
labelLimit: 0
|
||||||
|
|
||||||
|
## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
|
||||||
|
##
|
||||||
|
labelNameLengthLimit: 0
|
||||||
|
|
||||||
|
## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
|
||||||
|
##
|
||||||
|
labelValueLengthLimit: 0
|
||||||
|
selectorOverride: {}
|
||||||
|
|
||||||
|
## kube-state-metrics endpoint
|
||||||
|
http:
|
||||||
|
interval: ""
|
||||||
|
scrapeTimeout: ""
|
||||||
|
proxyUrl: ""
|
||||||
|
## Whether to enable HTTP2 for servicemonitor
|
||||||
|
enableHttp2: false
|
||||||
|
honorLabels: false
|
||||||
|
metricRelabelings: []
|
||||||
|
relabelings: []
|
||||||
|
scheme: ""
|
||||||
|
## File to read bearer token for scraping targets
|
||||||
|
bearerTokenFile: ""
|
||||||
|
## Secret to mount to read bearer token for scraping targets. The secret needs
|
||||||
|
## to be in the same namespace as the service monitor and accessible by the
|
||||||
|
## Prometheus Operator
|
||||||
|
bearerTokenSecret: {}
|
||||||
|
# name: secret-name
|
||||||
|
# key: key-name
|
||||||
|
tlsConfig: {}
|
||||||
|
|
||||||
|
## selfMonitor endpoint
|
||||||
|
metrics:
|
||||||
|
interval: ""
|
||||||
|
scrapeTimeout: ""
|
||||||
|
proxyUrl: ""
|
||||||
|
## Whether to enable HTTP2 for servicemonitor
|
||||||
|
enableHttp2: false
|
||||||
|
honorLabels: false
|
||||||
|
metricRelabelings: []
|
||||||
|
relabelings: []
|
||||||
|
scheme: ""
|
||||||
|
## File to read bearer token for scraping targets
|
||||||
|
bearerTokenFile: ""
|
||||||
|
## Secret to mount to read bearer token for scraping targets. The secret needs
|
||||||
|
## to be in the same namespace as the service monitor and accessible by the
|
||||||
|
## Prometheus Operator
|
||||||
|
bearerTokenSecret: {}
|
||||||
|
# name: secret-name
|
||||||
|
# key: key-name
|
||||||
|
tlsConfig: {}
|
||||||
|
## Create a scrapeConfig resource for scraping the kube-state-metrics service. Use this instead of serviceMonitor
|
||||||
|
## to have more instances of kube-state-metrics safety.
|
||||||
|
scrapeconfig:
|
||||||
|
## To avoid duplicate metrics, first disable the serviceMonitor creation via prometheus.monitor.enabled=false
|
||||||
|
enabled: false
|
||||||
|
annotations: {}
|
||||||
|
additionalLabels: {}
|
||||||
|
jobName: kube-state-metrics
|
||||||
|
## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.
|
||||||
|
##
|
||||||
|
sampleLimit: 0
|
||||||
|
|
||||||
|
## TargetLimit defines a limit on the number of scraped targets that will be accepted.
|
||||||
|
##
|
||||||
|
targetLimit: 0
|
||||||
|
|
||||||
|
## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
|
||||||
|
##
|
||||||
|
labelLimit: 0
|
||||||
|
|
||||||
|
## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
|
||||||
|
##
|
||||||
|
labelNameLengthLimit: 0
|
||||||
|
|
||||||
|
## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
|
||||||
|
##
|
||||||
|
labelValueLengthLimit: 0
|
||||||
|
|
||||||
|
## StaticConfigLabels defines the labels to be used in the Prometheus static configuration for scraping.
|
||||||
|
staticConfigLabels: {}
|
||||||
|
scrapeInterval: ""
|
||||||
|
scrapeTimeout: ""
|
||||||
|
proxyUrl: ""
|
||||||
|
## Whether to enable HTTP2 for scrapeconfig
|
||||||
|
enableHttp2: false
|
||||||
|
honorLabels: true
|
||||||
|
metricRelabelings: []
|
||||||
|
relabelings: []
|
||||||
|
scheme: ""
|
||||||
|
tlsConfig: {}
|
||||||
|
|
||||||
|
## Specify if a Pod Security Policy for kube-state-metrics must be created
|
||||||
|
## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/
|
||||||
|
##
|
||||||
|
podSecurityPolicy:
|
||||||
|
enabled: false
|
||||||
|
annotations: {}
|
||||||
|
## Specify pod annotations
|
||||||
|
## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#apparmor
|
||||||
|
## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#seccomp
|
||||||
|
## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#sysctl
|
||||||
|
##
|
||||||
|
# seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*'
|
||||||
|
# seccomp.security.alpha.kubernetes.io/defaultProfileName: 'docker/default'
|
||||||
|
# apparmor.security.beta.kubernetes.io/defaultProfileName: 'runtime/default'
|
||||||
|
|
||||||
|
additionalVolumes: []
|
||||||
|
|
||||||
|
## Configure network policy for kube-state-metrics
|
||||||
|
networkPolicy:
|
||||||
|
enabled: false
|
||||||
|
# networkPolicy.flavor -- Flavor of the network policy to use.
|
||||||
|
# Can be:
|
||||||
|
# * kubernetes for networking.k8s.io/v1/NetworkPolicy
|
||||||
|
# * cilium for cilium.io/v2/CiliumNetworkPolicy
|
||||||
|
flavor: kubernetes
|
||||||
|
|
||||||
|
## Configure the cilium network policy kube-apiserver selector
|
||||||
|
# cilium:
|
||||||
|
# kubeApiServerSelector:
|
||||||
|
# - toEntities:
|
||||||
|
# - kube-apiserver
|
||||||
|
|
||||||
|
# egress:
|
||||||
|
# - {}
|
||||||
|
# ingress:
|
||||||
|
# - {}
|
||||||
|
# podSelector:
|
||||||
|
# matchLabels:
|
||||||
|
# app.kubernetes.io/name: kube-state-metrics
|
||||||
|
|
||||||
|
securityContext:
|
||||||
|
enabled: true
|
||||||
|
runAsGroup: 65534
|
||||||
|
runAsUser: 65534
|
||||||
|
fsGroup: 65534
|
||||||
|
runAsNonRoot: true
|
||||||
|
seccompProfile:
|
||||||
|
type: RuntimeDefault
|
||||||
|
|
||||||
|
## Specify security settings for a Container
|
||||||
|
## Allows overrides and additional options compared to (Pod) securityContext
|
||||||
|
## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
|
||||||
|
containerSecurityContext:
|
||||||
|
readOnlyRootFilesystem: true
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- ALL
|
||||||
|
|
||||||
|
## Node labels for pod assignment
|
||||||
|
## Ref: https://kubernetes.io/docs/user-guide/node-selection/
|
||||||
|
nodeSelector: {}
|
||||||
|
|
||||||
|
## Affinity settings for pod assignment
|
||||||
|
## Can be defined as either a dict or string. String is useful for `tpl` templating.
|
||||||
|
## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
|
||||||
|
affinity: {}
|
||||||
|
# affinity: |
|
||||||
|
# podAntiAffinity:
|
||||||
|
# requiredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
# - labelSelector:
|
||||||
|
# matchLabels:
|
||||||
|
# {{- include "kube-state-metrics.selectorLabels" . | indent 10 }}
|
||||||
|
# topologyKey: kubernetes.io/hostname
|
||||||
|
|
||||||
|
## Tolerations for pod assignment
|
||||||
|
## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
|
||||||
|
tolerations: []
|
||||||
|
|
||||||
|
## Topology spread constraints for pod assignment
|
||||||
|
## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
|
||||||
|
topologySpreadConstraints: []
|
||||||
|
|
||||||
|
# Annotations to be added to the deployment/statefulset
|
||||||
|
annotations: {}
|
||||||
|
|
||||||
|
# Annotations to be added to the pod
|
||||||
|
podAnnotations: {}
|
||||||
|
|
||||||
|
# Labels to be added to the pod
|
||||||
|
podLabels: {}
|
||||||
|
|
||||||
|
## Assign a PriorityClassName to pods if set
|
||||||
|
# priorityClassName: ""
|
||||||
|
|
||||||
|
# Ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
|
||||||
|
podDisruptionBudget: {}
|
||||||
|
|
||||||
|
# Comma-separated list of metrics to be exposed.
|
||||||
|
# This list comprises of exact metric names and/or regex patterns.
|
||||||
|
# The allowlist and denylist are mutually exclusive.
|
||||||
|
metricAllowlist: []
|
||||||
|
|
||||||
|
# Comma-separated list of metrics not to be enabled.
|
||||||
|
# This list comprises of exact metric names and/or regex patterns.
|
||||||
|
# The allowlist and denylist are mutually exclusive.
|
||||||
|
metricDenylist: []
|
||||||
|
|
||||||
|
# Comma-separated list of additional Kubernetes label keys that will be used in the resource's
|
||||||
|
# labels metric. By default the metric contains only name and namespace labels.
|
||||||
|
# To include additional labels, provide a list of resource names in their plural form and Kubernetes
|
||||||
|
# label keys you would like to allow for them (Example: '=namespaces=[k8s-label-1,k8s-label-n,...],pods=[app],...)'.
|
||||||
|
# A single '*' can be provided per resource instead to allow any labels, but that has
|
||||||
|
# severe performance implications (Example: '=pods=[*]').
|
||||||
|
metricLabelsAllowlist: []
|
||||||
|
# - namespaces=[k8s-label-1,k8s-label-n]
|
||||||
|
|
||||||
|
# Comma-separated list of Kubernetes annotations keys that will be used in the resource'
|
||||||
|
# labels metric. By default the metric contains only name and namespace labels.
|
||||||
|
# To include additional annotations provide a list of resource names in their plural form and Kubernetes
|
||||||
|
# annotation keys you would like to allow for them (Example: '=namespaces=[kubernetes.io/team,...],pods=[kubernetes.io/team],...)'.
|
||||||
|
# A single '*' can be provided per resource instead to allow any annotations, but that has
|
||||||
|
# severe performance implications (Example: '=pods=[*]').
|
||||||
|
metricAnnotationsAllowList: []
|
||||||
|
# - pods=[k8s-annotation-1,k8s-annotation-n]
|
||||||
|
|
||||||
|
# Available collectors for kube-state-metrics.
|
||||||
|
# By default, all available resources are enabled, comment out to disable.
|
||||||
|
collectors:
|
||||||
|
- certificatesigningrequests
|
||||||
|
- configmaps
|
||||||
|
- cronjobs
|
||||||
|
- daemonsets
|
||||||
|
- deployments
|
||||||
|
- endpoints
|
||||||
|
- horizontalpodautoscalers
|
||||||
|
- ingresses
|
||||||
|
- jobs
|
||||||
|
- leases
|
||||||
|
- limitranges
|
||||||
|
- mutatingwebhookconfigurations
|
||||||
|
- namespaces
|
||||||
|
- networkpolicies
|
||||||
|
- nodes
|
||||||
|
- persistentvolumeclaims
|
||||||
|
- persistentvolumes
|
||||||
|
- poddisruptionbudgets
|
||||||
|
- pods
|
||||||
|
- replicasets
|
||||||
|
- replicationcontrollers
|
||||||
|
- resourcequotas
|
||||||
|
- secrets
|
||||||
|
- services
|
||||||
|
- statefulsets
|
||||||
|
- storageclasses
|
||||||
|
- validatingwebhookconfigurations
|
||||||
|
- volumeattachments
|
||||||
|
# - ingressclasses
|
||||||
|
# - clusterrolebindings
|
||||||
|
# - clusterroles
|
||||||
|
# - roles
|
||||||
|
|
||||||
|
# Enabling kubeconfig will pass the --kubeconfig argument to the container
|
||||||
|
kubeconfig:
|
||||||
|
enabled: false
|
||||||
|
# base64 encoded kube-config file
|
||||||
|
secret:
|
||||||
|
|
||||||
|
# Enabling support for customResourceState, will create a configMap including your config that will be read from kube-state-metrics
|
||||||
|
customResourceState:
|
||||||
|
enabled: false
|
||||||
|
# Add (Cluster)Role permissions to list/watch the customResources defined in the config to rbac.extraRules
|
||||||
|
config: {}
|
||||||
|
|
||||||
|
# Enable only the release namespace for collecting resources. By default all namespaces are collected.
|
||||||
|
# If releaseNamespace and namespaces are both set a merged list will be collected.
|
||||||
|
releaseNamespace: false
|
||||||
|
|
||||||
|
# Comma-separated list(string) or yaml list of namespaces to be enabled for collecting resources. By default all namespaces are collected.
|
||||||
|
namespaces: ""
|
||||||
|
|
||||||
|
# Comma-separated list of namespaces not to be enabled. If namespaces and namespaces-denylist are both set,
|
||||||
|
# only namespaces that are excluded in namespaces-denylist will be used.
|
||||||
|
namespacesDenylist: ""
|
||||||
|
|
||||||
|
## Override the deployment namespace
|
||||||
|
##
|
||||||
|
namespaceOverride: ""
|
||||||
|
|
||||||
|
resources: {}
|
||||||
|
# We usually recommend not to specify default resources and to leave this as a conscious
|
||||||
|
# choice for the user. This also increases chances charts run on environments with little
|
||||||
|
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
||||||
|
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
||||||
|
# limits:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 64Mi
|
||||||
|
# requests:
|
||||||
|
# cpu: 10m
|
||||||
|
# memory: 32Mi
|
||||||
|
|
||||||
|
## Provide a k8s version to define apiGroups for podSecurityPolicy Cluster Role.
|
||||||
|
## For example: kubeTargetVersionOverride: 1.14.9
|
||||||
|
##
|
||||||
|
kubeTargetVersionOverride: ""
|
||||||
|
|
||||||
|
# Enable self metrics configuration for service and Service Monitor
|
||||||
|
# Default values for telemetry configuration can be overridden
|
||||||
|
# If you set telemetryNodePort, you must also set service.type to NodePort
|
||||||
|
selfMonitor:
|
||||||
|
enabled: false
|
||||||
|
# telemetryHost: 0.0.0.0
|
||||||
|
# telemetryPort: 8081
|
||||||
|
# telemetryNodePort: 0
|
||||||
|
|
||||||
|
# Enable vertical pod autoscaler support for kube-state-metrics
|
||||||
|
verticalPodAutoscaler:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
# Recommender responsible for generating recommendation for the object.
|
||||||
|
# List should be empty (then the default recommender will generate the recommendation)
|
||||||
|
# or contain exactly one recommender.
|
||||||
|
# recommenders: []
|
||||||
|
# - name: custom-recommender-performance
|
||||||
|
|
||||||
|
# List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory
|
||||||
|
controlledResources: []
|
||||||
|
# Specifies which resource values should be controlled: RequestsOnly or RequestsAndLimits.
|
||||||
|
# controlledValues: RequestsAndLimits
|
||||||
|
|
||||||
|
# Define the max allowed resources for the pod
|
||||||
|
maxAllowed: {}
|
||||||
|
# cpu: 200m
|
||||||
|
# memory: 100Mi
|
||||||
|
# Define the min allowed resources for the pod
|
||||||
|
minAllowed: {}
|
||||||
|
# cpu: 200m
|
||||||
|
# memory: 100Mi
|
||||||
|
|
||||||
|
# updatePolicy:
|
||||||
|
# Specifies minimal number of replicas which need to be alive for VPA Updater to attempt pod eviction
|
||||||
|
# minReplicas: 1
|
||||||
|
# Specifies whether recommended updates are applied when a Pod is started and whether recommended updates
|
||||||
|
# are applied during the life of a Pod. Possible values are "Off", "Initial", "Recreate", and "Auto".
|
||||||
|
# updateMode: Auto
|
||||||
|
|
||||||
|
# volumeMounts are used to add custom volume mounts to deployment.
|
||||||
|
# See example below
|
||||||
|
volumeMounts: []
|
||||||
|
# - mountPath: /etc/config
|
||||||
|
# name: config-volume
|
||||||
|
|
||||||
|
# volumes are used to add custom volumes to deployment
|
||||||
|
# See example below
|
||||||
|
volumes: []
|
||||||
|
# - configMap:
|
||||||
|
# name: cm-for-volume
|
||||||
|
# name: config-volume
|
||||||
|
|
||||||
|
# Extra manifests to deploy as an array
|
||||||
|
extraManifests: []
|
||||||
|
# - apiVersion: v1
|
||||||
|
# kind: ConfigMap
|
||||||
|
# metadata:
|
||||||
|
# labels:
|
||||||
|
# name: prometheus-extra
|
||||||
|
# data:
|
||||||
|
# extra-data: "value"
|
||||||
|
|
||||||
|
## Containers allows injecting additional containers.
|
||||||
|
containers: []
|
||||||
|
# - name: crd-init
|
||||||
|
# image: kiwigrid/k8s-sidecar:latest
|
||||||
|
|
||||||
|
## InitContainers allows injecting additional initContainers.
|
||||||
|
initContainers: []
|
||||||
|
# - name: crd-sidecar
|
||||||
|
# image: kiwigrid/k8s-sidecar:latest
|
||||||
|
|
||||||
|
## dnsPolicy allows to change the default DNS configuration for the pod
|
||||||
|
## Ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-dns-policy
|
||||||
|
dnsPolicy: ClusterFirst
|
||||||
|
|
||||||
|
## dnsConfig allows setting up specific DNS configuration for the pod
|
||||||
|
## Ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config
|
||||||
|
dnsConfig: {}
|
||||||
|
|
||||||
|
## Settings for startup, liveness and readiness probes
|
||||||
|
## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/
|
||||||
|
##
|
||||||
|
|
||||||
|
## Startup probe can optionally be enabled.
|
||||||
|
##
|
||||||
|
startupProbe:
|
||||||
|
enabled: false
|
||||||
|
failureThreshold: 3
|
||||||
|
httpGet:
|
||||||
|
httpHeaders: []
|
||||||
|
scheme: http
|
||||||
|
initialDelaySeconds: 0
|
||||||
|
periodSeconds: 10
|
||||||
|
successThreshold: 1
|
||||||
|
timeoutSeconds: 5
|
||||||
|
|
||||||
|
## Liveness probe
|
||||||
|
##
|
||||||
|
livenessProbe:
|
||||||
|
failureThreshold: 3
|
||||||
|
httpGet:
|
||||||
|
httpHeaders: []
|
||||||
|
scheme: http
|
||||||
|
initialDelaySeconds: 5
|
||||||
|
periodSeconds: 10
|
||||||
|
successThreshold: 1
|
||||||
|
timeoutSeconds: 5
|
||||||
|
|
||||||
|
## Readiness probe
|
||||||
|
##
|
||||||
|
readinessProbe:
|
||||||
|
failureThreshold: 3
|
||||||
|
httpGet:
|
||||||
|
httpHeaders: []
|
||||||
|
scheme: http
|
||||||
|
initialDelaySeconds: 5
|
||||||
|
periodSeconds: 10
|
||||||
|
successThreshold: 1
|
||||||
|
timeoutSeconds: 5
|
||||||
@ -0,0 +1,23 @@
|
|||||||
|
# Patterns to ignore when building packages.
|
||||||
|
# This supports shell glob matching, relative path matching, and
|
||||||
|
# negation (prefixed with !). Only one pattern per line.
|
||||||
|
.DS_Store
|
||||||
|
# Common VCS dirs
|
||||||
|
.git/
|
||||||
|
.gitignore
|
||||||
|
.bzr/
|
||||||
|
.bzrignore
|
||||||
|
.hg/
|
||||||
|
.hgignore
|
||||||
|
.svn/
|
||||||
|
# Common backup files
|
||||||
|
*.swp
|
||||||
|
*.bak
|
||||||
|
*.tmp
|
||||||
|
*~
|
||||||
|
# Various IDEs
|
||||||
|
.project
|
||||||
|
.idea/
|
||||||
|
*.tmproj
|
||||||
|
|
||||||
|
ci/
|
||||||
28
charts/prometheus/charts/prometheus-node-exporter/Chart.yaml
Normal file
28
charts/prometheus/charts/prometheus-node-exporter/Chart.yaml
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
annotations:
|
||||||
|
artifacthub.io/license: Apache-2.0
|
||||||
|
artifacthub.io/links: |
|
||||||
|
- name: Chart Source
|
||||||
|
url: https://github.com/prometheus-community/helm-charts
|
||||||
|
apiVersion: v2
|
||||||
|
appVersion: 1.9.1
|
||||||
|
description: A Helm chart for prometheus node-exporter
|
||||||
|
home: https://github.com/prometheus/node_exporter/
|
||||||
|
keywords:
|
||||||
|
- node-exporter
|
||||||
|
- prometheus
|
||||||
|
- exporter
|
||||||
|
maintainers:
|
||||||
|
- email: gianrubio@gmail.com
|
||||||
|
name: gianrubio
|
||||||
|
url: https://github.com/gianrubio
|
||||||
|
- email: zanhsieh@gmail.com
|
||||||
|
name: zanhsieh
|
||||||
|
url: https://github.com/zanhsieh
|
||||||
|
- email: rootsandtrees@posteo.de
|
||||||
|
name: zeritti
|
||||||
|
url: https://github.com/zeritti
|
||||||
|
name: prometheus-node-exporter
|
||||||
|
sources:
|
||||||
|
- https://github.com/prometheus/node_exporter/
|
||||||
|
type: application
|
||||||
|
version: 4.46.1
|
||||||
96
charts/prometheus/charts/prometheus-node-exporter/README.md
Normal file
96
charts/prometheus/charts/prometheus-node-exporter/README.md
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
# Prometheus Node Exporter
|
||||||
|
|
||||||
|
Prometheus exporter for hardware and OS metrics exposed by *NIX kernels, written in Go with pluggable metric collectors.
|
||||||
|
|
||||||
|
This chart bootstraps a Prometheus [Node Exporter](http://github.com/prometheus/node_exporter) daemonset on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
|
||||||
|
|
||||||
|
## Get Repository Info
|
||||||
|
<!-- textlint-disable terminology -->
|
||||||
|
```console
|
||||||
|
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
|
||||||
|
helm repo update
|
||||||
|
```
|
||||||
|
|
||||||
|
_See [helm repo](https://helm.sh/docs/helm/helm_repo/) for command documentation._
|
||||||
|
<!-- textlint-enable -->
|
||||||
|
## Install Chart
|
||||||
|
|
||||||
|
```console
|
||||||
|
helm install [RELEASE_NAME] prometheus-community/prometheus-node-exporter
|
||||||
|
```
|
||||||
|
|
||||||
|
_See [configuration](#configuring) below._
|
||||||
|
|
||||||
|
_See [helm install](https://helm.sh/docs/helm/helm_install/) for command documentation._
|
||||||
|
|
||||||
|
## Uninstall Chart
|
||||||
|
|
||||||
|
```console
|
||||||
|
helm uninstall [RELEASE_NAME]
|
||||||
|
```
|
||||||
|
|
||||||
|
This removes all the Kubernetes components associated with the chart and deletes the release.
|
||||||
|
|
||||||
|
_See [helm uninstall](https://helm.sh/docs/helm/helm_uninstall/) for command documentation._
|
||||||
|
|
||||||
|
## Upgrading Chart
|
||||||
|
|
||||||
|
```console
|
||||||
|
helm upgrade [RELEASE_NAME] prometheus-community/prometheus-node-exporter --install
|
||||||
|
```
|
||||||
|
|
||||||
|
_See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documentation._
|
||||||
|
|
||||||
|
### 3.x to 4.x
|
||||||
|
|
||||||
|
Starting from version 4.0.0, the `node exporter` chart is using the [Kubernetes recommended labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/common-labels/). Therefore you have to delete the daemonset before you upgrade.
|
||||||
|
|
||||||
|
```console
|
||||||
|
kubectl delete daemonset -l app=prometheus-node-exporter
|
||||||
|
helm upgrade -i prometheus-node-exporter prometheus-community/prometheus-node-exporter
|
||||||
|
```
|
||||||
|
|
||||||
|
If you use your own custom [ServiceMonitor](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#servicemonitor) or [PodMonitor](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#podmonitor), please ensure to upgrade their `selector` fields accordingly to the new labels.
|
||||||
|
|
||||||
|
### From 2.x to 3.x
|
||||||
|
|
||||||
|
Change the following:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
hostRootFsMount: true
|
||||||
|
```
|
||||||
|
|
||||||
|
to:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
hostRootFsMount:
|
||||||
|
enabled: true
|
||||||
|
mountPropagation: HostToContainer
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configuring
|
||||||
|
|
||||||
|
See [Customizing the Chart Before Installing](https://helm.sh/docs/intro/using_helm/#customizing-the-chart-before-installing). To see all configurable options with detailed comments, visit the chart's [values.yaml](./values.yaml), or run these configuration commands:
|
||||||
|
|
||||||
|
```console
|
||||||
|
helm show values prometheus-community/prometheus-node-exporter
|
||||||
|
```
|
||||||
|
|
||||||
|
### kube-rbac-proxy
|
||||||
|
|
||||||
|
You can enable `prometheus-node-exporter` endpoint protection using `kube-rbac-proxy`. By setting `kubeRBACProxy.enabled: true`, this chart will deploy a RBAC proxy container protecting the node-exporter endpoint.
|
||||||
|
To authorize access, authenticate your requests (via a `ServiceAccount` for example) with a `ClusterRole` attached such as:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
name: prometheus-node-exporter-read
|
||||||
|
rules:
|
||||||
|
- apiGroups: [ "" ]
|
||||||
|
resources: ["services/node-exporter-prometheus-node-exporter"]
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
```
|
||||||
|
|
||||||
|
See [kube-rbac-proxy examples](https://github.com/brancz/kube-rbac-proxy/tree/master/examples/resource-attributes) for more details.
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
1. Get the application URL by running these commands:
|
||||||
|
{{- if contains "NodePort" .Values.service.type }}
|
||||||
|
export NODE_PORT=$(kubectl get --namespace {{ template "prometheus-node-exporter.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "prometheus-node-exporter.fullname" . }})
|
||||||
|
export NODE_IP=$(kubectl get nodes --namespace {{ template "prometheus-node-exporter.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||||
|
echo http://$NODE_IP:$NODE_PORT
|
||||||
|
{{- else if contains "LoadBalancer" .Values.service.type }}
|
||||||
|
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||||
|
You can watch the status of by running 'kubectl get svc -w {{ template "prometheus-node-exporter.fullname" . }}'
|
||||||
|
export SERVICE_IP=$(kubectl get svc --namespace {{ template "prometheus-node-exporter.namespace" . }} {{ template "prometheus-node-exporter.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
|
||||||
|
echo http://$SERVICE_IP:{{ .Values.service.port }}
|
||||||
|
{{- else if contains "ClusterIP" .Values.service.type }}
|
||||||
|
export POD_NAME=$(kubectl get pods --namespace {{ template "prometheus-node-exporter.namespace" . }} -l "app.kubernetes.io/name={{ template "prometheus-node-exporter.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||||
|
echo "Visit http://127.0.0.1:9100 to use your application"
|
||||||
|
kubectl port-forward --namespace {{ template "prometheus-node-exporter.namespace" . }} $POD_NAME 9100
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if .Values.kubeRBACProxy.enabled}}
|
||||||
|
|
||||||
|
kube-rbac-proxy endpoint protections is enabled:
|
||||||
|
- Metrics endpoints is now HTTPS
|
||||||
|
- Ensure that the client authenticates the requests (e.g. via service account) with the following role permissions:
|
||||||
|
```
|
||||||
|
rules:
|
||||||
|
- apiGroups: [ "" ]
|
||||||
|
resources: ["services/{{ template "prometheus-node-exporter.fullname" . }}"]
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
```
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,237 @@
|
|||||||
|
{{/* vim: set filetype=mustache: */}}
|
||||||
|
{{/*
|
||||||
|
Expand the name of the chart.
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus-node-exporter.name" -}}
|
||||||
|
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create a default fully qualified app name.
|
||||||
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
If release name contains chart name it will be used as a full name.
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus-node-exporter.fullname" -}}
|
||||||
|
{{- if .Values.fullnameOverride }}
|
||||||
|
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- $name := default .Chart.Name .Values.nameOverride }}
|
||||||
|
{{- if contains $name .Release.Name }}
|
||||||
|
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create chart name and version as used by the chart label.
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus-node-exporter.chart" -}}
|
||||||
|
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Common labels
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus-node-exporter.labels" -}}
|
||||||
|
helm.sh/chart: {{ include "prometheus-node-exporter.chart" . }}
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||||
|
app.kubernetes.io/component: metrics
|
||||||
|
app.kubernetes.io/part-of: {{ include "prometheus-node-exporter.name" . }}
|
||||||
|
{{ include "prometheus-node-exporter.selectorLabels" . }}
|
||||||
|
{{- with .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/version: {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.commonLabels }}
|
||||||
|
{{ tpl (toYaml .) $ }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.releaseLabel }}
|
||||||
|
release: {{ .Release.Name }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Selector labels
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus-node-exporter.selectorLabels" -}}
|
||||||
|
app.kubernetes.io/name: {{ include "prometheus-node-exporter.name" . }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create the name of the service account to use
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus-node-exporter.serviceAccountName" -}}
|
||||||
|
{{- if .Values.serviceAccount.create }}
|
||||||
|
{{- default (include "prometheus-node-exporter.fullname" .) .Values.serviceAccount.name }}
|
||||||
|
{{- else }}
|
||||||
|
{{- default "default" .Values.serviceAccount.name }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
The image to use
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus-node-exporter.image" -}}
|
||||||
|
{{- if .Values.image.sha }}
|
||||||
|
{{- fail "image.sha forbidden. Use image.digest instead" }}
|
||||||
|
{{- else if .Values.image.digest }}
|
||||||
|
{{- if .Values.global.imageRegistry }}
|
||||||
|
{{- printf "%s/%s:%s@%s" .Values.global.imageRegistry .Values.image.repository (default (printf "v%s" .Chart.AppVersion) .Values.image.tag) .Values.image.digest }}
|
||||||
|
{{- else }}
|
||||||
|
{{- printf "%s/%s:%s@%s" .Values.image.registry .Values.image.repository (default (printf "v%s" .Chart.AppVersion) .Values.image.tag) .Values.image.digest }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
{{- if .Values.global.imageRegistry }}
|
||||||
|
{{- printf "%s/%s:%s" .Values.global.imageRegistry .Values.image.repository (default (printf "v%s" .Chart.AppVersion) .Values.image.tag) }}
|
||||||
|
{{- else }}
|
||||||
|
{{- printf "%s/%s:%s" .Values.image.registry .Values.image.repository (default (printf "v%s" .Chart.AppVersion) .Values.image.tag) }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Allow the release namespace to be overridden for multi-namespace deployments in combined charts
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus-node-exporter.namespace" -}}
|
||||||
|
{{- if .Values.namespaceOverride }}
|
||||||
|
{{- .Values.namespaceOverride }}
|
||||||
|
{{- else }}
|
||||||
|
{{- .Release.Namespace }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create the namespace name of the service monitor
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus-node-exporter.monitor-namespace" -}}
|
||||||
|
{{- if .Values.namespaceOverride }}
|
||||||
|
{{- .Values.namespaceOverride }}
|
||||||
|
{{- else }}
|
||||||
|
{{- if .Values.prometheus.monitor.namespace }}
|
||||||
|
{{- .Values.prometheus.monitor.namespace }}
|
||||||
|
{{- else }}
|
||||||
|
{{- .Release.Namespace }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/* Sets default scrape limits for servicemonitor */}}
|
||||||
|
{{- define "servicemonitor.scrapeLimits" -}}
|
||||||
|
{{- with .sampleLimit }}
|
||||||
|
sampleLimit: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .targetLimit }}
|
||||||
|
targetLimit: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .labelLimit }}
|
||||||
|
labelLimit: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .labelNameLengthLimit }}
|
||||||
|
labelNameLengthLimit: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .labelValueLengthLimit }}
|
||||||
|
labelValueLengthLimit: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Formats imagePullSecrets. Input is (dict "Values" .Values "imagePullSecrets" .{specific imagePullSecrets})
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus-node-exporter.imagePullSecrets" -}}
|
||||||
|
{{- range (concat .Values.global.imagePullSecrets .imagePullSecrets) }}
|
||||||
|
{{- if eq (typeOf .) "map[string]interface {}" }}
|
||||||
|
- {{ toYaml . | trim }}
|
||||||
|
{{- else }}
|
||||||
|
- name: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create the namespace name of the pod monitor
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus-node-exporter.podmonitor-namespace" -}}
|
||||||
|
{{- if .Values.namespaceOverride }}
|
||||||
|
{{- .Values.namespaceOverride }}
|
||||||
|
{{- else }}
|
||||||
|
{{- if .Values.prometheus.podMonitor.namespace }}
|
||||||
|
{{- .Values.prometheus.podMonitor.namespace }}
|
||||||
|
{{- else }}
|
||||||
|
{{- .Release.Namespace }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/* Sets default scrape limits for podmonitor */}}
|
||||||
|
{{- define "podmonitor.scrapeLimits" -}}
|
||||||
|
{{- with .sampleLimit }}
|
||||||
|
sampleLimit: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .targetLimit }}
|
||||||
|
targetLimit: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .labelLimit }}
|
||||||
|
labelLimit: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .labelNameLengthLimit }}
|
||||||
|
labelNameLengthLimit: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .labelValueLengthLimit }}
|
||||||
|
labelValueLengthLimit: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/* Sets sidecar volumeMounts */}}
|
||||||
|
{{- define "prometheus-node-exporter.sidecarVolumeMounts" -}}
|
||||||
|
{{- range $_, $mount := $.Values.sidecarVolumeMount }}
|
||||||
|
- name: {{ $mount.name }}
|
||||||
|
mountPath: {{ $mount.mountPath }}
|
||||||
|
readOnly: {{ $mount.readOnly }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range $_, $mount := $.Values.sidecarHostVolumeMounts }}
|
||||||
|
- name: {{ $mount.name }}
|
||||||
|
mountPath: {{ $mount.mountPath }}
|
||||||
|
readOnly: {{ $mount.readOnly }}
|
||||||
|
{{- if $mount.mountPropagation }}
|
||||||
|
mountPropagation: {{ $mount.mountPropagation }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
The default node affinity to exclude
|
||||||
|
- AWS Fargate
|
||||||
|
- Azure virtual nodes
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus-node-exporter.defaultAffinity" -}}
|
||||||
|
nodeAffinity:
|
||||||
|
requiredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
nodeSelectorTerms:
|
||||||
|
- matchExpressions:
|
||||||
|
- key: eks.amazonaws.com/compute-type
|
||||||
|
operator: NotIn
|
||||||
|
values:
|
||||||
|
- fargate
|
||||||
|
- key: type
|
||||||
|
operator: NotIn
|
||||||
|
values:
|
||||||
|
- virtual-kubelet
|
||||||
|
{{- end -}}
|
||||||
|
{{- define "prometheus-node-exporter.mergedAffinities" -}}
|
||||||
|
{{- $defaultAffinity := include "prometheus-node-exporter.defaultAffinity" . | fromYaml -}}
|
||||||
|
{{- with .Values.affinity -}}
|
||||||
|
{{- if .nodeAffinity -}}
|
||||||
|
{{- $_ := set $defaultAffinity "nodeAffinity" (mergeOverwrite $defaultAffinity.nodeAffinity .nodeAffinity) -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- if .podAffinity -}}
|
||||||
|
{{- $_ := set $defaultAffinity "podAffinity" .podAffinity -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- if .podAntiAffinity -}}
|
||||||
|
{{- $_ := set $defaultAffinity "podAntiAffinity" .podAntiAffinity -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- toYaml $defaultAffinity -}}
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
{{- if and (eq .Values.rbac.create true) (eq .Values.kubeRBACProxy.enabled true) -}}
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
name: {{ include "prometheus-node-exporter.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus-node-exporter.labels" . | nindent 4 }}
|
||||||
|
rules:
|
||||||
|
{{- if $.Values.kubeRBACProxy.enabled }}
|
||||||
|
- apiGroups: [ "authentication.k8s.io" ]
|
||||||
|
resources:
|
||||||
|
- tokenreviews
|
||||||
|
verbs: [ "create" ]
|
||||||
|
- apiGroups: [ "authorization.k8s.io" ]
|
||||||
|
resources:
|
||||||
|
- subjectaccessreviews
|
||||||
|
verbs: [ "create" ]
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
{{- if and (eq .Values.rbac.create true) (eq .Values.kubeRBACProxy.enabled true) -}}
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus-node-exporter.labels" . | nindent 4 }}
|
||||||
|
name: {{ template "prometheus-node-exporter.fullname" . }}
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
{{- if .Values.rbac.useExistingRole }}
|
||||||
|
name: {{ .Values.rbac.useExistingRole }}
|
||||||
|
{{- else }}
|
||||||
|
name: {{ template "prometheus-node-exporter.fullname" . }}
|
||||||
|
{{- end }}
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: {{ template "prometheus-node-exporter.serviceAccountName" . }}
|
||||||
|
namespace: {{ template "prometheus-node-exporter.namespace" . }}
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,348 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: DaemonSet
|
||||||
|
metadata:
|
||||||
|
name: {{ include "prometheus-node-exporter.fullname" . }}
|
||||||
|
namespace: {{ include "prometheus-node-exporter.namespace" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus-node-exporter.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.daemonsetAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "prometheus-node-exporter.selectorLabels" . | nindent 6 }}
|
||||||
|
revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
|
||||||
|
{{- with .Values.updateStrategy }}
|
||||||
|
updateStrategy:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
{{- with .Values.podAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus-node-exporter.labels" . | nindent 8 }}
|
||||||
|
{{- with .Values.podLabels }}
|
||||||
|
{{- tpl (toYaml .) $ | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
automountServiceAccountToken: {{ ternary true false (or .Values.serviceAccount.automountServiceAccountToken .Values.kubeRBACProxy.enabled) }}
|
||||||
|
{{- with .Values.securityContext }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.priorityClassName }}
|
||||||
|
priorityClassName: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.extraInitContainers }}
|
||||||
|
initContainers:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
serviceAccountName: {{ include "prometheus-node-exporter.serviceAccountName" . }}
|
||||||
|
{{- with .Values.terminationGracePeriodSeconds }}
|
||||||
|
terminationGracePeriodSeconds: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
containers:
|
||||||
|
{{- $servicePort := ternary .Values.kubeRBACProxy.port .Values.service.port .Values.kubeRBACProxy.enabled }}
|
||||||
|
- name: node-exporter
|
||||||
|
image: {{ include "prometheus-node-exporter.image" . }}
|
||||||
|
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||||
|
args:
|
||||||
|
- --path.procfs=/host/proc
|
||||||
|
- --path.sysfs=/host/sys
|
||||||
|
{{- if .Values.hostRootFsMount.enabled }}
|
||||||
|
- --path.rootfs=/host/root
|
||||||
|
{{- if semverCompare ">=1.4.0-0" (coalesce .Values.version .Values.image.tag .Chart.AppVersion) }}
|
||||||
|
- --path.udev.data=/host/root/run/udev/data
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
- --web.listen-address=[$(HOST_IP)]:{{ $servicePort }}
|
||||||
|
{{- with .Values.extraArgs }}
|
||||||
|
{{- toYaml . | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.containerSecurityContext }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml . | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
env:
|
||||||
|
- name: HOST_IP
|
||||||
|
{{- if .Values.kubeRBACProxy.enabled }}
|
||||||
|
value: 127.0.0.1
|
||||||
|
{{- else if .Values.service.listenOnAllInterfaces }}
|
||||||
|
value: 0.0.0.0
|
||||||
|
{{- else }}
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
apiVersion: v1
|
||||||
|
fieldPath: status.hostIP
|
||||||
|
{{- end }}
|
||||||
|
{{- range $key, $value := .Values.env }}
|
||||||
|
- name: {{ $key }}
|
||||||
|
value: {{ $value | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if eq .Values.kubeRBACProxy.enabled false }}
|
||||||
|
ports:
|
||||||
|
- name: {{ .Values.service.portName }}
|
||||||
|
containerPort: {{ .Values.service.port }}
|
||||||
|
protocol: TCP
|
||||||
|
{{- end }}
|
||||||
|
livenessProbe:
|
||||||
|
failureThreshold: {{ .Values.livenessProbe.failureThreshold }}
|
||||||
|
httpGet:
|
||||||
|
{{- if .Values.kubeRBACProxy.enabled }}
|
||||||
|
host: 127.0.0.1
|
||||||
|
{{- end }}
|
||||||
|
httpHeaders:
|
||||||
|
{{- range $_, $header := .Values.livenessProbe.httpGet.httpHeaders }}
|
||||||
|
- name: {{ $header.name }}
|
||||||
|
value: {{ $header.value }}
|
||||||
|
{{- end }}
|
||||||
|
path: /
|
||||||
|
port: {{ $servicePort }}
|
||||||
|
scheme: {{ upper .Values.livenessProbe.httpGet.scheme }}
|
||||||
|
initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }}
|
||||||
|
periodSeconds: {{ .Values.livenessProbe.periodSeconds }}
|
||||||
|
successThreshold: {{ .Values.livenessProbe.successThreshold }}
|
||||||
|
timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }}
|
||||||
|
readinessProbe:
|
||||||
|
failureThreshold: {{ .Values.readinessProbe.failureThreshold }}
|
||||||
|
httpGet:
|
||||||
|
{{- if .Values.kubeRBACProxy.enabled }}
|
||||||
|
host: 127.0.0.1
|
||||||
|
{{- end }}
|
||||||
|
httpHeaders:
|
||||||
|
{{- range $_, $header := .Values.readinessProbe.httpGet.httpHeaders }}
|
||||||
|
- name: {{ $header.name }}
|
||||||
|
value: {{ $header.value }}
|
||||||
|
{{- end }}
|
||||||
|
path: /
|
||||||
|
port: {{ $servicePort }}
|
||||||
|
scheme: {{ upper .Values.readinessProbe.httpGet.scheme }}
|
||||||
|
initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }}
|
||||||
|
periodSeconds: {{ .Values.readinessProbe.periodSeconds }}
|
||||||
|
successThreshold: {{ .Values.readinessProbe.successThreshold }}
|
||||||
|
timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }}
|
||||||
|
{{- with .Values.resources }}
|
||||||
|
resources:
|
||||||
|
{{- toYaml . | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.terminationMessageParams.enabled }}
|
||||||
|
{{- with .Values.terminationMessageParams }}
|
||||||
|
terminationMessagePath: {{ .terminationMessagePath }}
|
||||||
|
terminationMessagePolicy: {{ .terminationMessagePolicy }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
volumeMounts:
|
||||||
|
- name: proc
|
||||||
|
mountPath: /host/proc
|
||||||
|
{{- with .Values.hostProcFsMount.mountPropagation }}
|
||||||
|
mountPropagation: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
readOnly: true
|
||||||
|
- name: sys
|
||||||
|
mountPath: /host/sys
|
||||||
|
{{- with .Values.hostSysFsMount.mountPropagation }}
|
||||||
|
mountPropagation: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
readOnly: true
|
||||||
|
{{- if .Values.hostRootFsMount.enabled }}
|
||||||
|
- name: root
|
||||||
|
mountPath: /host/root
|
||||||
|
{{- with .Values.hostRootFsMount.mountPropagation }}
|
||||||
|
mountPropagation: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
readOnly: true
|
||||||
|
{{- end }}
|
||||||
|
{{- range $_, $mount := .Values.extraHostVolumeMounts }}
|
||||||
|
- name: {{ $mount.name }}
|
||||||
|
mountPath: {{ $mount.mountPath }}
|
||||||
|
readOnly: {{ $mount.readOnly }}
|
||||||
|
{{- with $mount.mountPropagation }}
|
||||||
|
mountPropagation: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range $_, $mount := .Values.sidecarVolumeMount }}
|
||||||
|
- name: {{ $mount.name }}
|
||||||
|
mountPath: {{ $mount.mountPath }}
|
||||||
|
readOnly: true
|
||||||
|
{{- end }}
|
||||||
|
{{- range $_, $mount := .Values.configmaps }}
|
||||||
|
- name: {{ $mount.name }}
|
||||||
|
mountPath: {{ $mount.mountPath }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range $_, $mount := .Values.secrets }}
|
||||||
|
- name: {{ .name }}
|
||||||
|
mountPath: {{ .mountPath }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.extraVolumeMounts }}
|
||||||
|
{{- toYaml . | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range .Values.sidecars }}
|
||||||
|
{{- $overwrites := dict "volumeMounts" (concat (include "prometheus-node-exporter.sidecarVolumeMounts" $ | fromYamlArray) (.volumeMounts | default list) | default list) }}
|
||||||
|
{{- $defaults := dict "image" (include "prometheus-node-exporter.image" $) "securityContext" $.Values.containerSecurityContext "imagePullPolicy" $.Values.image.pullPolicy }}
|
||||||
|
- {{- toYaml (merge $overwrites . $defaults) | nindent 10 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.kubeRBACProxy.enabled }}
|
||||||
|
- name: kube-rbac-proxy
|
||||||
|
args:
|
||||||
|
{{- if .Values.kubeRBACProxy.extraArgs }}
|
||||||
|
{{- .Values.kubeRBACProxy.extraArgs | toYaml | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
- --secure-listen-address=:{{ .Values.service.port}}
|
||||||
|
- --upstream=http://127.0.0.1:{{ $servicePort }}/
|
||||||
|
- --proxy-endpoints-port={{ .Values.kubeRBACProxy.proxyEndpointsPort }}
|
||||||
|
- --config-file=/etc/kube-rbac-proxy-config/config-file.yaml
|
||||||
|
{{- if and .Values.kubeRBACProxy.tls.enabled .Values.tlsSecret.enabled }}
|
||||||
|
- --tls-cert-file=/tls/private/{{ .Values.tlsSecret.certItem }}
|
||||||
|
- --tls-private-key-file=/tls/private/{{ .Values.tlsSecret.keyItem }}
|
||||||
|
{{- if and .Values.kubeRBACProxy.tls.tlsClientAuth .Values.tlsSecret.caItem }}
|
||||||
|
- --client-ca-file=/tls/private/{{ .Values.tlsSecret.caItem }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
volumeMounts:
|
||||||
|
- name: kube-rbac-proxy-config
|
||||||
|
mountPath: /etc/kube-rbac-proxy-config
|
||||||
|
{{- if and .Values.kubeRBACProxy.tls.enabled .Values.tlsSecret.enabled }}
|
||||||
|
- name: {{ tpl .Values.tlsSecret.volumeName . | quote }}
|
||||||
|
mountPath: /tls/private
|
||||||
|
readOnly: true
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.kubeRBACProxy.extraVolumeMounts }}
|
||||||
|
{{- toYaml . | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
imagePullPolicy: {{ .Values.kubeRBACProxy.image.pullPolicy }}
|
||||||
|
{{- if .Values.kubeRBACProxy.image.sha }}
|
||||||
|
image: "{{ .Values.global.imageRegistry | default .Values.kubeRBACProxy.image.registry}}/{{ .Values.kubeRBACProxy.image.repository }}:{{ .Values.kubeRBACProxy.image.tag }}@sha256:{{ .Values.kubeRBACProxy.image.sha }}"
|
||||||
|
{{- else }}
|
||||||
|
image: "{{ .Values.global.imageRegistry | default .Values.kubeRBACProxy.image.registry}}/{{ .Values.kubeRBACProxy.image.repository }}:{{ .Values.kubeRBACProxy.image.tag }}"
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- containerPort: {{ .Values.service.port}}
|
||||||
|
name: {{ .Values.kubeRBACProxy.portName }}
|
||||||
|
{{- if .Values.kubeRBACProxy.enableHostPort }}
|
||||||
|
hostPort: {{ .Values.service.port }}
|
||||||
|
{{- end }}
|
||||||
|
- containerPort: {{ .Values.kubeRBACProxy.proxyEndpointsPort }}
|
||||||
|
{{- if .Values.kubeRBACProxy.enableProxyEndpointsHostPort }}
|
||||||
|
hostPort: {{ .Values.kubeRBACProxy.proxyEndpointsPort }}
|
||||||
|
{{- end }}
|
||||||
|
name: "http-healthz"
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
scheme: HTTPS
|
||||||
|
port: {{ .Values.kubeRBACProxy.proxyEndpointsPort }}
|
||||||
|
path: healthz
|
||||||
|
initialDelaySeconds: 5
|
||||||
|
timeoutSeconds: 5
|
||||||
|
{{- if .Values.kubeRBACProxy.resources }}
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.kubeRBACProxy.resources | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.terminationMessageParams.enabled }}
|
||||||
|
{{- with .Values.terminationMessageParams }}
|
||||||
|
terminationMessagePath: {{ .terminationMessagePath }}
|
||||||
|
terminationMessagePolicy: {{ .terminationMessagePolicy }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.kubeRBACProxy.env }}
|
||||||
|
env:
|
||||||
|
{{- range $key, $value := $.Values.kubeRBACProxy.env }}
|
||||||
|
- name: {{ $key }}
|
||||||
|
value: {{ $value | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.kubeRBACProxy.containerSecurityContext }}
|
||||||
|
securityContext:
|
||||||
|
{{ toYaml .Values.kubeRBACProxy.containerSecurityContext | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or .Values.imagePullSecrets .Values.global.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{- include "prometheus-node-exporter.imagePullSecrets" (dict "Values" .Values "imagePullSecrets" .Values.imagePullSecrets) | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
hostNetwork: {{ .Values.hostNetwork }}
|
||||||
|
hostPID: {{ .Values.hostPID }}
|
||||||
|
hostIPC: {{ .Values.hostIPC }}
|
||||||
|
affinity:
|
||||||
|
{{- include "prometheus-node-exporter.mergedAffinities" . | nindent 8 }}
|
||||||
|
{{- with .Values.dnsConfig }}
|
||||||
|
dnsConfig:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.restartPolicy }}
|
||||||
|
restartPolicy: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
volumes:
|
||||||
|
- name: proc
|
||||||
|
hostPath:
|
||||||
|
path: /proc
|
||||||
|
- name: sys
|
||||||
|
hostPath:
|
||||||
|
path: /sys
|
||||||
|
{{- if .Values.hostRootFsMount.enabled }}
|
||||||
|
- name: root
|
||||||
|
hostPath:
|
||||||
|
path: /
|
||||||
|
{{- end }}
|
||||||
|
{{- range $_, $mount := .Values.extraHostVolumeMounts }}
|
||||||
|
- name: {{ $mount.name }}
|
||||||
|
hostPath:
|
||||||
|
path: {{ $mount.hostPath }}
|
||||||
|
{{- with $mount.type }}
|
||||||
|
type: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range $_, $mount := .Values.sidecarVolumeMount }}
|
||||||
|
- name: {{ $mount.name }}
|
||||||
|
emptyDir:
|
||||||
|
medium: Memory
|
||||||
|
{{- end }}
|
||||||
|
{{- range $_, $mount := .Values.sidecarHostVolumeMounts }}
|
||||||
|
- name: {{ $mount.name }}
|
||||||
|
hostPath:
|
||||||
|
path: {{ $mount.hostPath }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range $_, $mount := .Values.configmaps }}
|
||||||
|
- name: {{ $mount.name }}
|
||||||
|
configMap:
|
||||||
|
name: {{ $mount.name }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range $_, $mount := .Values.secrets }}
|
||||||
|
- name: {{ $mount.name }}
|
||||||
|
secret:
|
||||||
|
secretName: {{ $mount.name }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.kubeRBACProxy.enabled }}
|
||||||
|
- name: kube-rbac-proxy-config
|
||||||
|
configMap:
|
||||||
|
name: {{ template "prometheus-node-exporter.fullname" . }}-rbac-config
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.tlsSecret.enabled }}
|
||||||
|
- name: {{ tpl .Values.tlsSecret.volumeName . | quote }}
|
||||||
|
secret:
|
||||||
|
secretName: {{ tpl .Values.tlsSecret.secretName . | quote }}
|
||||||
|
items:
|
||||||
|
- key: {{ required "Value tlsSecret.certItem must be set." .Values.tlsSecret.certItem | quote }}
|
||||||
|
path: {{ .Values.tlsSecret.certItem | quote }}
|
||||||
|
- key: {{ required "Value tlsSecret.keyItem must be set." .Values.tlsSecret.keyItem | quote }}
|
||||||
|
path: {{ .Values.tlsSecret.keyItem | quote }}
|
||||||
|
{{- if .Values.tlsSecret.caItem }}
|
||||||
|
- key: {{ .Values.tlsSecret.caItem | quote }}
|
||||||
|
path: {{ .Values.tlsSecret.caItem | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.extraVolumes }}
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
{{- if .Values.endpoints }}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: {{ include "prometheus-node-exporter.fullname" . }}
|
||||||
|
namespace: {{ include "prometheus-node-exporter.namespace" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus-node-exporter.labels" . | nindent 4 }}
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
{{- range .Values.endpoints }}
|
||||||
|
- ip: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- name: {{ .Values.service.portName }}
|
||||||
|
port: 9100
|
||||||
|
protocol: TCP
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,4 @@
|
|||||||
|
{{ range .Values.extraManifests }}
|
||||||
|
---
|
||||||
|
{{ tpl . $ }}
|
||||||
|
{{ end }}
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
{{- if .Values.networkPolicy.enabled }}
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: NetworkPolicy
|
||||||
|
metadata:
|
||||||
|
name: {{ include "prometheus-node-exporter.fullname" . }}
|
||||||
|
namespace: {{ include "prometheus-node-exporter.namespace" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus-node-exporter.labels" $ | nindent 4 }}
|
||||||
|
{{- with .Values.service.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
ingress:
|
||||||
|
{{- if .Values.networkPolicy.ingress }}
|
||||||
|
{{- toYaml .Values.networkPolicy.ingress | nindent 4 }}
|
||||||
|
{{- else }}
|
||||||
|
- ports:
|
||||||
|
- port: {{ .Values.service.port }}
|
||||||
|
{{- end }}
|
||||||
|
policyTypes:
|
||||||
|
- Egress
|
||||||
|
- Ingress
|
||||||
|
podSelector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "prometheus-node-exporter.selectorLabels" . | nindent 6 }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,91 @@
|
|||||||
|
{{- if .Values.prometheus.podMonitor.enabled }}
|
||||||
|
apiVersion: {{ .Values.prometheus.podMonitor.apiVersion | default "monitoring.coreos.com/v1" }}
|
||||||
|
kind: PodMonitor
|
||||||
|
metadata:
|
||||||
|
name: {{ include "prometheus-node-exporter.fullname" . }}
|
||||||
|
namespace: {{ include "prometheus-node-exporter.podmonitor-namespace" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus-node-exporter.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.prometheus.podMonitor.additionalLabels }}
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
jobLabel: {{ default "app.kubernetes.io/name" .Values.prometheus.podMonitor.jobLabel }}
|
||||||
|
{{- include "podmonitor.scrapeLimits" .Values.prometheus.podMonitor | nindent 2 }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- with .Values.prometheus.podMonitor.selectorOverride }}
|
||||||
|
{{- toYaml . | nindent 6 }}
|
||||||
|
{{- else }}
|
||||||
|
{{- include "prometheus-node-exporter.selectorLabels" . | nindent 6 }}
|
||||||
|
{{- end }}
|
||||||
|
namespaceSelector:
|
||||||
|
matchNames:
|
||||||
|
- {{ include "prometheus-node-exporter.namespace" . }}
|
||||||
|
{{- with .Values.prometheus.podMonitor.attachMetadata }}
|
||||||
|
attachMetadata:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.prometheus.podMonitor.podTargetLabels }}
|
||||||
|
podTargetLabels:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
podMetricsEndpoints:
|
||||||
|
- port: {{ .Values.service.portName }}
|
||||||
|
{{- with .Values.prometheus.podMonitor.scheme }}
|
||||||
|
scheme: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.prometheus.podMonitor.path }}
|
||||||
|
path: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.prometheus.podMonitor.basicAuth }}
|
||||||
|
basicAuth:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.prometheus.podMonitor.bearerTokenSecret }}
|
||||||
|
bearerTokenSecret:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.prometheus.podMonitor.tlsConfig }}
|
||||||
|
tlsConfig:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.prometheus.podMonitor.authorization }}
|
||||||
|
authorization:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.prometheus.podMonitor.oauth2 }}
|
||||||
|
oauth2:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.prometheus.podMonitor.proxyUrl }}
|
||||||
|
proxyUrl: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.prometheus.podMonitor.interval }}
|
||||||
|
interval: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.prometheus.podMonitor.honorTimestamps }}
|
||||||
|
honorTimestamps: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.prometheus.podMonitor.honorLabels }}
|
||||||
|
honorLabels: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.prometheus.podMonitor.scrapeTimeout }}
|
||||||
|
scrapeTimeout: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.prometheus.podMonitor.relabelings }}
|
||||||
|
relabelings:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.prometheus.podMonitor.metricRelabelings }}
|
||||||
|
metricRelabelings:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
enableHttp2: {{ default false .Values.prometheus.podMonitor.enableHttp2 }}
|
||||||
|
filterRunning: {{ default true .Values.prometheus.podMonitor.filterRunning }}
|
||||||
|
followRedirects: {{ default false .Values.prometheus.podMonitor.followRedirects }}
|
||||||
|
{{- with .Values.prometheus.podMonitor.params }}
|
||||||
|
params:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
{{- if and .Values.rbac.create .Values.rbac.pspEnabled (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }}
|
||||||
|
kind: ClusterRole
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: psp-{{ include "prometheus-node-exporter.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus-node-exporter.labels" . | nindent 4 }}
|
||||||
|
rules:
|
||||||
|
- apiGroups: ['extensions']
|
||||||
|
resources: ['podsecuritypolicies']
|
||||||
|
verbs: ['use']
|
||||||
|
resourceNames:
|
||||||
|
- {{ include "prometheus-node-exporter.fullname" . }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
{{- if and .Values.rbac.create .Values.rbac.pspEnabled (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }}
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
name: psp-{{ include "prometheus-node-exporter.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus-node-exporter.labels" . | nindent 4 }}
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: psp-{{ include "prometheus-node-exporter.fullname" . }}
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: {{ include "prometheus-node-exporter.fullname" . }}
|
||||||
|
namespace: {{ include "prometheus-node-exporter.namespace" . }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,49 @@
|
|||||||
|
{{- if and .Values.rbac.create .Values.rbac.pspEnabled (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }}
|
||||||
|
apiVersion: policy/v1beta1
|
||||||
|
kind: PodSecurityPolicy
|
||||||
|
metadata:
|
||||||
|
name: {{ include "prometheus-node-exporter.fullname" . }}
|
||||||
|
namespace: {{ include "prometheus-node-exporter.namespace" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus-node-exporter.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.rbac.pspAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
privileged: false
|
||||||
|
# Allow core volume types.
|
||||||
|
volumes:
|
||||||
|
- 'configMap'
|
||||||
|
- 'emptyDir'
|
||||||
|
- 'projected'
|
||||||
|
- 'secret'
|
||||||
|
- 'downwardAPI'
|
||||||
|
- 'persistentVolumeClaim'
|
||||||
|
- 'hostPath'
|
||||||
|
hostNetwork: true
|
||||||
|
hostIPC: false
|
||||||
|
hostPID: true
|
||||||
|
hostPorts:
|
||||||
|
- min: 0
|
||||||
|
max: 65535
|
||||||
|
runAsUser:
|
||||||
|
# Permits the container to run with root privileges as well.
|
||||||
|
rule: 'RunAsAny'
|
||||||
|
seLinux:
|
||||||
|
# This policy assumes the nodes are using AppArmor rather than SELinux.
|
||||||
|
rule: 'RunAsAny'
|
||||||
|
supplementalGroups:
|
||||||
|
rule: 'MustRunAs'
|
||||||
|
ranges:
|
||||||
|
# Allow adding the root group.
|
||||||
|
- min: 0
|
||||||
|
max: 65535
|
||||||
|
fsGroup:
|
||||||
|
rule: 'MustRunAs'
|
||||||
|
ranges:
|
||||||
|
# Allow adding the root group.
|
||||||
|
- min: 0
|
||||||
|
max: 65535
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
{{- if .Values.kubeRBACProxy.enabled}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: {{ template "prometheus-node-exporter.fullname" . }}-rbac-config
|
||||||
|
namespace: {{ include "prometheus-node-exporter.namespace" . }}
|
||||||
|
data:
|
||||||
|
config-file.yaml: |+
|
||||||
|
authorization:
|
||||||
|
resourceAttributes:
|
||||||
|
namespace: {{ template "prometheus-node-exporter.namespace" . }}
|
||||||
|
apiVersion: v1
|
||||||
|
resource: services
|
||||||
|
subresource: {{ template "prometheus-node-exporter.fullname" . }}
|
||||||
|
name: {{ template "prometheus-node-exporter.fullname" . }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,41 @@
|
|||||||
|
{{- if .Values.service.enabled }}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ include "prometheus-node-exporter.fullname" . }}
|
||||||
|
namespace: {{ include "prometheus-node-exporter.namespace" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus-node-exporter.labels" $ | nindent 4 }}
|
||||||
|
{{- with .Values.service.labels }}
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.service.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
{{- if .Values.service.ipDualStack.enabled }}
|
||||||
|
ipFamilies: {{ toYaml .Values.service.ipDualStack.ipFamilies | nindent 4 }}
|
||||||
|
ipFamilyPolicy: {{ .Values.service.ipDualStack.ipFamilyPolicy }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.service.externalTrafficPolicy }}
|
||||||
|
externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.service.internalTrafficPolicy }}
|
||||||
|
internalTrafficPolicy: {{ .Values.service.internalTrafficPolicy }}
|
||||||
|
{{- end }}
|
||||||
|
type: {{ .Values.service.type }}
|
||||||
|
{{- if and (eq .Values.service.type "ClusterIP") .Values.service.clusterIP }}
|
||||||
|
clusterIP: "{{ .Values.service.clusterIP }}"
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- port: {{ .Values.service.servicePort | default .Values.service.port }}
|
||||||
|
{{- if ( and (eq .Values.service.type "NodePort" ) (not (empty .Values.service.nodePort)) ) }}
|
||||||
|
nodePort: {{ .Values.service.nodePort }}
|
||||||
|
{{- end }}
|
||||||
|
targetPort: {{ .Values.service.targetPort }}
|
||||||
|
protocol: TCP
|
||||||
|
name: {{ .Values.service.portName }}
|
||||||
|
selector:
|
||||||
|
{{- include "prometheus-node-exporter.selectorLabels" . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
{{- if and .Values.rbac.create .Values.serviceAccount.create -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: {{ include "prometheus-node-exporter.serviceAccountName" . }}
|
||||||
|
namespace: {{ include "prometheus-node-exporter.namespace" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus-node-exporter.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.serviceAccount.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
automountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }}
|
||||||
|
{{- if or .Values.serviceAccount.imagePullSecrets .Values.global.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{- include "prometheus-node-exporter.imagePullSecrets" (dict "Values" .Values "imagePullSecrets" .Values.serviceAccount.imagePullSecrets) | indent 2 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,65 @@
|
|||||||
|
{{- if .Values.prometheus.monitor.enabled }}
|
||||||
|
apiVersion: {{ .Values.prometheus.monitor.apiVersion | default "monitoring.coreos.com/v1" }}
|
||||||
|
kind: ServiceMonitor
|
||||||
|
metadata:
|
||||||
|
name: {{ include "prometheus-node-exporter.fullname" . }}
|
||||||
|
namespace: {{ include "prometheus-node-exporter.monitor-namespace" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus-node-exporter.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.prometheus.monitor.additionalLabels }}
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
jobLabel: {{ default "app.kubernetes.io/name" .Values.prometheus.monitor.jobLabel }}
|
||||||
|
{{- include "servicemonitor.scrapeLimits" .Values.prometheus.monitor | nindent 2 }}
|
||||||
|
{{- with .Values.prometheus.monitor.podTargetLabels }}
|
||||||
|
podTargetLabels:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.prometheus.monitor.targetLabels }}
|
||||||
|
targetLabels:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- with .Values.prometheus.monitor.selectorOverride }}
|
||||||
|
{{- toYaml . | nindent 6 }}
|
||||||
|
{{- else }}
|
||||||
|
{{- include "prometheus-node-exporter.selectorLabels" . | nindent 6 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.prometheus.monitor.attachMetadata }}
|
||||||
|
attachMetadata:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
endpoints:
|
||||||
|
- port: {{ .Values.service.portName }}
|
||||||
|
scheme: {{ .Values.prometheus.monitor.scheme }}
|
||||||
|
{{- with .Values.prometheus.monitor.basicAuth }}
|
||||||
|
basicAuth:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.prometheus.monitor.bearerTokenFile }}
|
||||||
|
bearerTokenFile: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.prometheus.monitor.tlsConfig }}
|
||||||
|
tlsConfig:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.prometheus.monitor.proxyUrl }}
|
||||||
|
proxyUrl: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.prometheus.monitor.interval }}
|
||||||
|
interval: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.prometheus.monitor.scrapeTimeout }}
|
||||||
|
scrapeTimeout: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.prometheus.monitor.relabelings }}
|
||||||
|
relabelings:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.prometheus.monitor.metricRelabelings }}
|
||||||
|
metricRelabelings:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,40 @@
|
|||||||
|
{{- if and (.Capabilities.APIVersions.Has "autoscaling.k8s.io/v1") (.Values.verticalPodAutoscaler.enabled) }}
|
||||||
|
apiVersion: autoscaling.k8s.io/v1
|
||||||
|
kind: VerticalPodAutoscaler
|
||||||
|
metadata:
|
||||||
|
name: {{ include "prometheus-node-exporter.fullname" . }}
|
||||||
|
namespace: {{ include "prometheus-node-exporter.namespace" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus-node-exporter.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
{{- with .Values.verticalPodAutoscaler.recommenders }}
|
||||||
|
recommenders:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
resourcePolicy:
|
||||||
|
containerPolicies:
|
||||||
|
- containerName: node-exporter
|
||||||
|
{{- with .Values.verticalPodAutoscaler.controlledResources }}
|
||||||
|
controlledResources:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.verticalPodAutoscaler.controlledValues }}
|
||||||
|
controlledValues: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.verticalPodAutoscaler.maxAllowed }}
|
||||||
|
maxAllowed:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.verticalPodAutoscaler.minAllowed }}
|
||||||
|
minAllowed:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
targetRef:
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: DaemonSet
|
||||||
|
name: {{ include "prometheus-node-exporter.fullname" . }}
|
||||||
|
{{- with .Values.verticalPodAutoscaler.updatePolicy }}
|
||||||
|
updatePolicy:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
620
charts/prometheus/charts/prometheus-node-exporter/values.yaml
Normal file
620
charts/prometheus/charts/prometheus-node-exporter/values.yaml
Normal file
@ -0,0 +1,620 @@
|
|||||||
|
# Default values for prometheus-node-exporter.
|
||||||
|
# This is a YAML-formatted file.
|
||||||
|
# Declare variables to be passed into your templates.
|
||||||
|
image:
|
||||||
|
registry: quay.io
|
||||||
|
repository: prometheus/node-exporter
|
||||||
|
# Overrides the image tag whose default is {{ printf "v%s" .Chart.AppVersion }}
|
||||||
|
tag: ""
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
digest: ""
|
||||||
|
|
||||||
|
imagePullSecrets: []
|
||||||
|
# - name: "image-pull-secret"
|
||||||
|
nameOverride: ""
|
||||||
|
fullnameOverride: ""
|
||||||
|
|
||||||
|
# Number of old history to retain to allow rollback
|
||||||
|
# Default Kubernetes value is set to 10
|
||||||
|
revisionHistoryLimit: 10
|
||||||
|
|
||||||
|
global:
|
||||||
|
# To help compatibility with other charts which use global.imagePullSecrets.
|
||||||
|
# Allow either an array of {name: pullSecret} maps (k8s-style), or an array of strings (more common helm-style).
|
||||||
|
# global:
|
||||||
|
# imagePullSecrets:
|
||||||
|
# - name: pullSecret1
|
||||||
|
# - name: pullSecret2
|
||||||
|
# or
|
||||||
|
# global:
|
||||||
|
# imagePullSecrets:
|
||||||
|
# - pullSecret1
|
||||||
|
# - pullSecret2
|
||||||
|
imagePullSecrets: []
|
||||||
|
#
|
||||||
|
# Allow parent charts to override registry hostname
|
||||||
|
imageRegistry: ""
|
||||||
|
|
||||||
|
# Configure kube-rbac-proxy. When enabled, creates a kube-rbac-proxy to protect the node-exporter http endpoint.
|
||||||
|
# The requests are served through the same service but requests are HTTPS.
|
||||||
|
kubeRBACProxy:
|
||||||
|
enabled: false
|
||||||
|
## Set environment variables as name/value pairs
|
||||||
|
env: {}
|
||||||
|
# VARIABLE: value
|
||||||
|
image:
|
||||||
|
registry: quay.io
|
||||||
|
repository: brancz/kube-rbac-proxy
|
||||||
|
tag: v0.19.1
|
||||||
|
sha: ""
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
|
||||||
|
# List of additional cli arguments to configure kube-rbac-proxy
|
||||||
|
# for example: --tls-cipher-suites, --log-file, etc.
|
||||||
|
# all the possible args can be found here: https://github.com/brancz/kube-rbac-proxy#usage
|
||||||
|
extraArgs: []
|
||||||
|
|
||||||
|
## Specify security settings for a Container
|
||||||
|
## Allows overrides and additional options compared to (Pod) securityContext
|
||||||
|
## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
|
||||||
|
containerSecurityContext: {}
|
||||||
|
|
||||||
|
# Specify the port used for the Node exporter container (upstream port)
|
||||||
|
port: 8100
|
||||||
|
# Specify the name of the container port
|
||||||
|
portName: http
|
||||||
|
# Configure a hostPort. If true, hostPort will be enabled in the container and set to service.port.
|
||||||
|
enableHostPort: false
|
||||||
|
|
||||||
|
# Configure Proxy Endpoints Port
|
||||||
|
# This is the port being probed for readiness
|
||||||
|
proxyEndpointsPort: 8888
|
||||||
|
# Configure a hostPort. If true, hostPort will be enabled in the container and set to proxyEndpointsPort.
|
||||||
|
enableProxyEndpointsHostPort: false
|
||||||
|
|
||||||
|
resources: {}
|
||||||
|
# We usually recommend not to specify default resources and to leave this as a conscious
|
||||||
|
# choice for the user. This also increases chances charts run on environments with little
|
||||||
|
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
||||||
|
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
||||||
|
# limits:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 64Mi
|
||||||
|
# requests:
|
||||||
|
# cpu: 10m
|
||||||
|
# memory: 32Mi
|
||||||
|
|
||||||
|
## Additional volume mounts in the kube-rbac-proxy container
|
||||||
|
## See extraVolumes below
|
||||||
|
extraVolumeMounts: []
|
||||||
|
# - name: extra-volume
|
||||||
|
# mountPath: /extra
|
||||||
|
# readOnly: true
|
||||||
|
|
||||||
|
## tls enables using TLS resources from a volume on secret referred to in tlsSecret below.
|
||||||
|
## When enabling tlsClientAuth, client CA certificate must be set in tlsSecret.caItem.
|
||||||
|
## Ref. https://github.com/brancz/kube-rbac-proxy/issues/187
|
||||||
|
tls:
|
||||||
|
enabled: false
|
||||||
|
tlsClientAuth: false
|
||||||
|
|
||||||
|
## tlsSecret refers to an existing secret holding TLS items: client CA certificate, private key and certificate.
|
||||||
|
## secretName and volumeName can be templated.
|
||||||
|
## If enabled, volume volumeName gets created on secret secretName.
|
||||||
|
## The volume's resources will be used by kube-rbac-proxy if kubeRBACProxy.tls.enabled is set.
|
||||||
|
tlsSecret:
|
||||||
|
enabled: false
|
||||||
|
## Key with client CA certificate (optional)
|
||||||
|
caItem: ""
|
||||||
|
## Key with certificate
|
||||||
|
certItem: tls.crt
|
||||||
|
## Key with private key
|
||||||
|
keyItem: tls.key
|
||||||
|
## Name of an existing secret
|
||||||
|
secretName: prometheus-node-exporter-tls
|
||||||
|
## Name of the volume to be created
|
||||||
|
volumeName: prometheus-node-exporter-tls
|
||||||
|
|
||||||
|
## Service configuration
|
||||||
|
service:
|
||||||
|
## Creating a service is enabled by default
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
## Service type
|
||||||
|
type: ClusterIP
|
||||||
|
## IP address for type ClusterIP
|
||||||
|
clusterIP: ""
|
||||||
|
## Default service port. Sets the port of the exposed container as well (NE or kubeRBACProxy).
|
||||||
|
## Use "servicePort" below if changing the service port only is desired.
|
||||||
|
port: 9100
|
||||||
|
## Service port. Use this field if you wish to set a different service port
|
||||||
|
## without changing the container port ("port" above).
|
||||||
|
servicePort: ""
|
||||||
|
## Targeted port in the pod. Must refer to an open container port ("port" or "portName").
|
||||||
|
## (IntOrString)
|
||||||
|
targetPort: 9100
|
||||||
|
## Name of the service port. Sets the port name of the main container (NE) as well.
|
||||||
|
portName: metrics
|
||||||
|
## Port number for service type NodePort
|
||||||
|
nodePort: null
|
||||||
|
|
||||||
|
## If true, node exporter will listen on all interfaces
|
||||||
|
listenOnAllInterfaces: true
|
||||||
|
|
||||||
|
## Additional annotations and labels for the service
|
||||||
|
annotations:
|
||||||
|
prometheus.io/scrape: "true"
|
||||||
|
labels: {}
|
||||||
|
|
||||||
|
## Dual stack settings for the service
|
||||||
|
## https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
|
||||||
|
ipDualStack:
|
||||||
|
enabled: false
|
||||||
|
ipFamilies: ["IPv6", "IPv4"]
|
||||||
|
ipFamilyPolicy: "PreferDualStack"
|
||||||
|
|
||||||
|
## External/Internal traffic policy setting (Cluster, Local)
|
||||||
|
## https://kubernetes.io/docs/reference/networking/virtual-ips/#traffic-policies
|
||||||
|
externalTrafficPolicy: ""
|
||||||
|
internalTrafficPolicy: ""
|
||||||
|
|
||||||
|
# Set a NetworkPolicy with:
|
||||||
|
# ingress only on service.port or custom policy
|
||||||
|
# no egress permitted
|
||||||
|
networkPolicy:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
# ingress:
|
||||||
|
# - {}
|
||||||
|
|
||||||
|
# Additional environment variables that will be passed to the daemonset
|
||||||
|
env: {}
|
||||||
|
## env:
|
||||||
|
## VARIABLE: value
|
||||||
|
|
||||||
|
prometheus:
|
||||||
|
monitor:
|
||||||
|
enabled: false
|
||||||
|
additionalLabels: {}
|
||||||
|
namespace: ""
|
||||||
|
|
||||||
|
jobLabel: ""
|
||||||
|
|
||||||
|
# List of pod labels to add to node exporter metrics
|
||||||
|
# https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#servicemonitor
|
||||||
|
podTargetLabels: []
|
||||||
|
|
||||||
|
# List of target labels to add to node exporter metrics
|
||||||
|
# https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#servicemonitor
|
||||||
|
targetLabels: []
|
||||||
|
|
||||||
|
scheme: http
|
||||||
|
basicAuth: {}
|
||||||
|
bearerTokenFile:
|
||||||
|
tlsConfig: {}
|
||||||
|
|
||||||
|
## proxyUrl: URL of a proxy that should be used for scraping.
|
||||||
|
##
|
||||||
|
proxyUrl: ""
|
||||||
|
|
||||||
|
## Override serviceMonitor selector
|
||||||
|
##
|
||||||
|
selectorOverride: {}
|
||||||
|
|
||||||
|
## Attach node metadata to discovered targets. Requires Prometheus v2.35.0 and above.
|
||||||
|
##
|
||||||
|
attachMetadata:
|
||||||
|
node: false
|
||||||
|
|
||||||
|
relabelings: []
|
||||||
|
metricRelabelings: []
|
||||||
|
interval: ""
|
||||||
|
scrapeTimeout: 10s
|
||||||
|
## prometheus.monitor.apiVersion ApiVersion for the serviceMonitor Resource(defaults to "monitoring.coreos.com/v1")
|
||||||
|
apiVersion: ""
|
||||||
|
|
||||||
|
## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.
|
||||||
|
##
|
||||||
|
sampleLimit: 0
|
||||||
|
|
||||||
|
## TargetLimit defines a limit on the number of scraped targets that will be accepted.
|
||||||
|
##
|
||||||
|
targetLimit: 0
|
||||||
|
|
||||||
|
## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
|
||||||
|
##
|
||||||
|
labelLimit: 0
|
||||||
|
|
||||||
|
## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
|
||||||
|
##
|
||||||
|
labelNameLengthLimit: 0
|
||||||
|
|
||||||
|
## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.
|
||||||
|
##
|
||||||
|
labelValueLengthLimit: 0
|
||||||
|
|
||||||
|
# PodMonitor defines monitoring for a set of pods.
|
||||||
|
# ref. https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#podmonitor
|
||||||
|
# Using a PodMonitor may be preferred in some environments where there is very large number
|
||||||
|
# of Node Exporter endpoints (1000+) behind a single service.
|
||||||
|
# The PodMonitor is disabled by default. When switching from ServiceMonitor to PodMonitor,
|
||||||
|
# the time series resulting from the configuration through PodMonitor may have different labels.
|
||||||
|
# For instance, there will not be the service label any longer which might
|
||||||
|
# affect PromQL queries selecting that label.
|
||||||
|
podMonitor:
|
||||||
|
enabled: false
|
||||||
|
# Namespace in which to deploy the pod monitor. Defaults to the release namespace.
|
||||||
|
namespace: ""
|
||||||
|
# Additional labels, e.g. setting a label for pod monitor selector as set in prometheus
|
||||||
|
additionalLabels: {}
|
||||||
|
# release: kube-prometheus-stack
|
||||||
|
# PodTargetLabels transfers labels of the Kubernetes Pod onto the target.
|
||||||
|
podTargetLabels: []
|
||||||
|
# apiVersion defaults to monitoring.coreos.com/v1.
|
||||||
|
apiVersion: ""
|
||||||
|
# Override pod selector to select pod objects.
|
||||||
|
selectorOverride: {}
|
||||||
|
# Attach node metadata to discovered targets. Requires Prometheus v2.35.0 and above.
|
||||||
|
attachMetadata:
|
||||||
|
node: false
|
||||||
|
# The label to use to retrieve the job name from. Defaults to label app.kubernetes.io/name.
|
||||||
|
jobLabel: ""
|
||||||
|
|
||||||
|
# Scheme/protocol to use for scraping.
|
||||||
|
scheme: "http"
|
||||||
|
# Path to scrape metrics at.
|
||||||
|
path: "/metrics"
|
||||||
|
|
||||||
|
# BasicAuth allow an endpoint to authenticate over basic authentication.
|
||||||
|
# More info: https://prometheus.io/docs/operating/configuration/#endpoint
|
||||||
|
basicAuth: {}
|
||||||
|
# Secret to mount to read bearer token for scraping targets.
|
||||||
|
# The secret needs to be in the same namespace as the pod monitor and accessible by the Prometheus Operator.
|
||||||
|
# https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/#secretkeyselector-v1-core
|
||||||
|
bearerTokenSecret: {}
|
||||||
|
# TLS configuration to use when scraping the endpoint.
|
||||||
|
tlsConfig: {}
|
||||||
|
# Authorization section for this endpoint.
|
||||||
|
# https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#safeauthorization
|
||||||
|
authorization: {}
|
||||||
|
# OAuth2 for the URL. Only valid in Prometheus versions 2.27.0 and newer.
|
||||||
|
# https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#oauth2
|
||||||
|
oauth2: {}
|
||||||
|
|
||||||
|
# ProxyURL eg http://proxyserver:2195. Directs scrapes through proxy to this endpoint.
|
||||||
|
proxyUrl: ""
|
||||||
|
# Interval at which endpoints should be scraped. If not specified Prometheus' global scrape interval is used.
|
||||||
|
interval: ""
|
||||||
|
# Timeout after which the scrape is ended. If not specified, the Prometheus global scrape interval is used.
|
||||||
|
scrapeTimeout: ""
|
||||||
|
# HonorTimestamps controls whether Prometheus respects the timestamps present in scraped data.
|
||||||
|
honorTimestamps: true
|
||||||
|
# HonorLabels chooses the metric's labels on collisions with target labels.
|
||||||
|
honorLabels: true
|
||||||
|
# Whether to enable HTTP2. Default false.
|
||||||
|
enableHttp2: ""
|
||||||
|
# Drop pods that are not running. (Failed, Succeeded).
|
||||||
|
# Enabled by default. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase
|
||||||
|
filterRunning: ""
|
||||||
|
# FollowRedirects configures whether scrape requests follow HTTP 3xx redirects. Default false.
|
||||||
|
followRedirects: ""
|
||||||
|
# Optional HTTP URL parameters
|
||||||
|
params: {}
|
||||||
|
|
||||||
|
# RelabelConfigs to apply to samples before scraping. Prometheus Operator automatically adds
|
||||||
|
# relabelings for a few standard Kubernetes fields. The original scrape job's name
|
||||||
|
# is available via the __tmp_prometheus_job_name label.
|
||||||
|
# More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config
|
||||||
|
relabelings: []
|
||||||
|
# MetricRelabelConfigs to apply to samples before ingestion.
|
||||||
|
metricRelabelings: []
|
||||||
|
|
||||||
|
# SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.
|
||||||
|
sampleLimit: 0
|
||||||
|
# TargetLimit defines a limit on the number of scraped targets that will be accepted.
|
||||||
|
targetLimit: 0
|
||||||
|
# Per-scrape limit on number of labels that will be accepted for a sample.
|
||||||
|
# Only valid in Prometheus versions 2.27.0 and newer.
|
||||||
|
labelLimit: 0
|
||||||
|
# Per-scrape limit on length of labels name that will be accepted for a sample.
|
||||||
|
# Only valid in Prometheus versions 2.27.0 and newer.
|
||||||
|
labelNameLengthLimit: 0
|
||||||
|
# Per-scrape limit on length of labels value that will be accepted for a sample.
|
||||||
|
# Only valid in Prometheus versions 2.27.0 and newer.
|
||||||
|
labelValueLengthLimit: 0
|
||||||
|
|
||||||
|
## Customize the updateStrategy if set
|
||||||
|
updateStrategy:
|
||||||
|
type: RollingUpdate
|
||||||
|
rollingUpdate:
|
||||||
|
maxUnavailable: 1
|
||||||
|
|
||||||
|
resources: {}
|
||||||
|
# We usually recommend not to specify default resources and to leave this as a conscious
|
||||||
|
# choice for the user. This also increases chances charts run on environments with little
|
||||||
|
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
||||||
|
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
||||||
|
# limits:
|
||||||
|
# cpu: 200m
|
||||||
|
# memory: 50Mi
|
||||||
|
# requests:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 30Mi
|
||||||
|
|
||||||
|
# Specify the container restart policy passed to the Node Export container
|
||||||
|
# Possible Values: Always (default)|OnFailure|Never
|
||||||
|
restartPolicy: null
|
||||||
|
|
||||||
|
serviceAccount:
|
||||||
|
# Specifies whether a ServiceAccount should be created
|
||||||
|
create: true
|
||||||
|
# The name of the ServiceAccount to use.
|
||||||
|
# If not set and create is true, a name is generated using the fullname template
|
||||||
|
name:
|
||||||
|
annotations: {}
|
||||||
|
imagePullSecrets: []
|
||||||
|
automountServiceAccountToken: false
|
||||||
|
|
||||||
|
securityContext:
|
||||||
|
fsGroup: 65534
|
||||||
|
runAsGroup: 65534
|
||||||
|
runAsNonRoot: true
|
||||||
|
runAsUser: 65534
|
||||||
|
|
||||||
|
containerSecurityContext:
|
||||||
|
readOnlyRootFilesystem: true
|
||||||
|
# capabilities:
|
||||||
|
# add:
|
||||||
|
# - SYS_TIME
|
||||||
|
|
||||||
|
rbac:
|
||||||
|
## If true, create & use RBAC resources
|
||||||
|
##
|
||||||
|
create: true
|
||||||
|
## If true, create & use Pod Security Policy resources
|
||||||
|
## https://kubernetes.io/docs/concepts/policy/pod-security-policy/
|
||||||
|
pspEnabled: true
|
||||||
|
pspAnnotations: {}
|
||||||
|
|
||||||
|
# for deployments that have node_exporter deployed outside of the cluster, list
|
||||||
|
# their addresses here
|
||||||
|
endpoints: []
|
||||||
|
|
||||||
|
# Expose the service to the host network
|
||||||
|
hostNetwork: true
|
||||||
|
|
||||||
|
# Share the host process ID namespace
|
||||||
|
hostPID: true
|
||||||
|
|
||||||
|
# Share the host ipc namespace
|
||||||
|
hostIPC: false
|
||||||
|
|
||||||
|
# Mount the node's root file system (/) at /host/root in the container
|
||||||
|
hostRootFsMount:
|
||||||
|
enabled: true
|
||||||
|
# Defines how new mounts in existing mounts on the node or in the container
|
||||||
|
# are propagated to the container or node, respectively. Possible values are
|
||||||
|
# None, HostToContainer, and Bidirectional. If this field is omitted, then
|
||||||
|
# None is used. More information on:
|
||||||
|
# https://kubernetes.io/docs/concepts/storage/volumes/#mount-propagation
|
||||||
|
mountPropagation: HostToContainer
|
||||||
|
|
||||||
|
# Mount the node's proc file system (/proc) at /host/proc in the container
|
||||||
|
hostProcFsMount:
|
||||||
|
# Possible values are None, HostToContainer, and Bidirectional
|
||||||
|
mountPropagation: ""
|
||||||
|
|
||||||
|
# Mount the node's sys file system (/sys) at /host/sys in the container
|
||||||
|
hostSysFsMount:
|
||||||
|
# Possible values are None, HostToContainer, and Bidirectional
|
||||||
|
mountPropagation: ""
|
||||||
|
|
||||||
|
## Assign a group of affinity scheduling rules
|
||||||
|
## The default nodeAffinity excludes Fargate nodes and virtual kubelets from scheduling
|
||||||
|
## unless overriden by hard node affinity set in the field.
|
||||||
|
affinity: {}
|
||||||
|
# nodeAffinity:
|
||||||
|
# requiredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
# nodeSelectorTerms:
|
||||||
|
# - matchFields:
|
||||||
|
# - key: metadata.name
|
||||||
|
# operator: In
|
||||||
|
# values:
|
||||||
|
# - target-host-name
|
||||||
|
|
||||||
|
# Annotations to be added to node exporter pods
|
||||||
|
podAnnotations:
|
||||||
|
# Fix for very slow GKE cluster upgrades
|
||||||
|
cluster-autoscaler.kubernetes.io/safe-to-evict: "true"
|
||||||
|
|
||||||
|
# Extra labels to add to node exporter pods (can be templated)
|
||||||
|
podLabels: {}
|
||||||
|
|
||||||
|
## Extra labels to attach to all resources (can be templated)
|
||||||
|
commonLabels: {}
|
||||||
|
|
||||||
|
# Annotations to be added to node exporter daemonset
|
||||||
|
daemonsetAnnotations: {}
|
||||||
|
|
||||||
|
## set to true to add the release label so scraping of the servicemonitor with kube-prometheus-stack works out of the box
|
||||||
|
releaseLabel: false
|
||||||
|
|
||||||
|
# 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
|
||||||
|
##
|
||||||
|
nodeSelector:
|
||||||
|
kubernetes.io/os: linux
|
||||||
|
# kubernetes.io/arch: amd64
|
||||||
|
|
||||||
|
# Specify grace period for graceful termination of pods. Defaults to 30 if null or not specified
|
||||||
|
terminationGracePeriodSeconds: null
|
||||||
|
|
||||||
|
tolerations:
|
||||||
|
- effect: NoSchedule
|
||||||
|
operator: Exists
|
||||||
|
|
||||||
|
# Enable or disable container termination message settings
|
||||||
|
# https://kubernetes.io/docs/tasks/debug/debug-application/determine-reason-pod-failure/
|
||||||
|
terminationMessageParams:
|
||||||
|
enabled: false
|
||||||
|
# If enabled, specify the path for termination messages
|
||||||
|
terminationMessagePath: /dev/termination-log
|
||||||
|
# If enabled, specify the policy for termination messages
|
||||||
|
terminationMessagePolicy: File
|
||||||
|
|
||||||
|
|
||||||
|
## Assign a PriorityClassName to pods if set
|
||||||
|
# priorityClassName: ""
|
||||||
|
|
||||||
|
## Additional container arguments
|
||||||
|
##
|
||||||
|
extraArgs: []
|
||||||
|
# - --collector.diskstats.ignored-devices=^(ram|loop|fd|(h|s|v)d[a-z]|nvme\\d+n\\d+p)\\d+$
|
||||||
|
# - --collector.textfile.directory=/run/prometheus
|
||||||
|
|
||||||
|
## Additional mounts from the host to node-exporter container
|
||||||
|
##
|
||||||
|
extraHostVolumeMounts: []
|
||||||
|
# - name: <mountName>
|
||||||
|
# hostPath: <hostPath>
|
||||||
|
# https://kubernetes.io/docs/concepts/storage/volumes/#hostpath-volume-types
|
||||||
|
# type: "" (Default)|DirectoryOrCreate|Directory|FileOrCreate|File|Socket|CharDevice|BlockDevice
|
||||||
|
# mountPath: <mountPath>
|
||||||
|
# readOnly: true|false
|
||||||
|
# mountPropagation: None|HostToContainer|Bidirectional
|
||||||
|
|
||||||
|
## Additional configmaps to be mounted.
|
||||||
|
##
|
||||||
|
configmaps: []
|
||||||
|
# - name: <configMapName>
|
||||||
|
# mountPath: <mountPath>
|
||||||
|
|
||||||
|
secrets: []
|
||||||
|
# - name: <secretName>
|
||||||
|
# mountPath: <mountPatch>
|
||||||
|
|
||||||
|
## Override the deployment namespace
|
||||||
|
##
|
||||||
|
namespaceOverride: ""
|
||||||
|
|
||||||
|
## Additional containers for export metrics to text file; fields image,imagePullPolicy,securityContext take default value from main container
|
||||||
|
##
|
||||||
|
sidecars: []
|
||||||
|
# - name: nvidia-dcgm-exporter
|
||||||
|
# image: nvidia/dcgm-exporter:1.4.3
|
||||||
|
# volumeMounts:
|
||||||
|
# - name: tmp
|
||||||
|
# mountPath: /tmp
|
||||||
|
|
||||||
|
## Volume for sidecar containers
|
||||||
|
##
|
||||||
|
sidecarVolumeMount: []
|
||||||
|
# - name: collector-textfiles
|
||||||
|
# mountPath: /run/prometheus
|
||||||
|
# readOnly: false
|
||||||
|
|
||||||
|
## Additional mounts from the host to sidecar containers
|
||||||
|
##
|
||||||
|
sidecarHostVolumeMounts: []
|
||||||
|
# - name: <mountName>
|
||||||
|
# hostPath: <hostPath>
|
||||||
|
# mountPath: <mountPath>
|
||||||
|
# readOnly: true|false
|
||||||
|
# mountPropagation: None|HostToContainer|Bidirectional
|
||||||
|
|
||||||
|
## Additional InitContainers to initialize the pod
|
||||||
|
##
|
||||||
|
extraInitContainers: []
|
||||||
|
|
||||||
|
## Liveness probe
|
||||||
|
##
|
||||||
|
livenessProbe:
|
||||||
|
failureThreshold: 3
|
||||||
|
httpGet:
|
||||||
|
httpHeaders: []
|
||||||
|
scheme: http
|
||||||
|
initialDelaySeconds: 0
|
||||||
|
periodSeconds: 10
|
||||||
|
successThreshold: 1
|
||||||
|
timeoutSeconds: 1
|
||||||
|
|
||||||
|
## Readiness probe
|
||||||
|
##
|
||||||
|
readinessProbe:
|
||||||
|
failureThreshold: 3
|
||||||
|
httpGet:
|
||||||
|
httpHeaders: []
|
||||||
|
scheme: http
|
||||||
|
initialDelaySeconds: 0
|
||||||
|
periodSeconds: 10
|
||||||
|
successThreshold: 1
|
||||||
|
timeoutSeconds: 1
|
||||||
|
|
||||||
|
# Enable vertical pod autoscaler support for prometheus-node-exporter
|
||||||
|
verticalPodAutoscaler:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
# Recommender responsible for generating recommendation for the object.
|
||||||
|
# List should be empty (then the default recommender will generate the recommendation)
|
||||||
|
# or contain exactly one recommender.
|
||||||
|
# recommenders:
|
||||||
|
# - name: custom-recommender-performance
|
||||||
|
|
||||||
|
# List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory
|
||||||
|
controlledResources: []
|
||||||
|
# Specifies which resource values should be controlled: RequestsOnly or RequestsAndLimits.
|
||||||
|
# controlledValues: RequestsAndLimits
|
||||||
|
|
||||||
|
# Define the max allowed resources for the pod
|
||||||
|
maxAllowed: {}
|
||||||
|
# cpu: 200m
|
||||||
|
# memory: 100Mi
|
||||||
|
# Define the min allowed resources for the pod
|
||||||
|
minAllowed: {}
|
||||||
|
# cpu: 200m
|
||||||
|
# memory: 100Mi
|
||||||
|
|
||||||
|
# updatePolicy:
|
||||||
|
# Specifies minimal number of replicas which need to be alive for VPA Updater to attempt pod eviction
|
||||||
|
# minReplicas: 1
|
||||||
|
# Specifies whether recommended updates are applied when a Pod is started and whether recommended updates
|
||||||
|
# are applied during the life of a Pod. Possible values are "Off", "Initial", "Recreate", and "Auto".
|
||||||
|
# updateMode: Auto
|
||||||
|
|
||||||
|
# Extra manifests to deploy as an array
|
||||||
|
extraManifests: []
|
||||||
|
# - |
|
||||||
|
# apiVersion: v1
|
||||||
|
# kind: ConfigMap
|
||||||
|
# metadata:
|
||||||
|
# name: prometheus-extra
|
||||||
|
# data:
|
||||||
|
# extra-data: "value"
|
||||||
|
|
||||||
|
## Extra volumes to become available in the pod
|
||||||
|
extraVolumes: []
|
||||||
|
# - name: extra-volume
|
||||||
|
# secret:
|
||||||
|
# defaultMode: 420
|
||||||
|
# optional: false
|
||||||
|
# secretName: node-exporter-secret
|
||||||
|
|
||||||
|
## Extra volume mounts in the node-exporter container
|
||||||
|
extraVolumeMounts: []
|
||||||
|
# - name: extra-volume
|
||||||
|
# mountPath: /extra
|
||||||
|
# readOnly: true
|
||||||
|
|
||||||
|
# Override version of app, required if image.tag is defined and does not follow semver
|
||||||
|
version: ""
|
||||||
26
charts/prometheus/charts/prometheus-pushgateway/.helmignore
Normal file
26
charts/prometheus/charts/prometheus-pushgateway/.helmignore
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# Patterns to ignore when building packages.
|
||||||
|
# This supports shell glob matching, relative path matching, and
|
||||||
|
# negation (prefixed with !). Only one pattern per line.
|
||||||
|
.DS_Store
|
||||||
|
# Common VCS dirs
|
||||||
|
.git/
|
||||||
|
.gitignore
|
||||||
|
.bzr/
|
||||||
|
.bzrignore
|
||||||
|
.hg/
|
||||||
|
.hgignore
|
||||||
|
.svn/
|
||||||
|
# Common backup files
|
||||||
|
*.swp
|
||||||
|
*.bak
|
||||||
|
*.tmp
|
||||||
|
*~
|
||||||
|
# Various IDEs
|
||||||
|
.project
|
||||||
|
.idea/
|
||||||
|
*.tmproj
|
||||||
|
|
||||||
|
# OWNERS file for Kubernetes
|
||||||
|
OWNERS
|
||||||
|
|
||||||
|
ci/
|
||||||
27
charts/prometheus/charts/prometheus-pushgateway/Chart.yaml
Normal file
27
charts/prometheus/charts/prometheus-pushgateway/Chart.yaml
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
annotations:
|
||||||
|
artifacthub.io/license: Apache-2.0
|
||||||
|
artifacthub.io/links: |
|
||||||
|
- name: Chart Source
|
||||||
|
url: https://github.com/prometheus-community/helm-charts
|
||||||
|
apiVersion: v2
|
||||||
|
appVersion: v1.11.1
|
||||||
|
description: A Helm chart for prometheus pushgateway
|
||||||
|
home: https://github.com/prometheus/pushgateway
|
||||||
|
keywords:
|
||||||
|
- pushgateway
|
||||||
|
- prometheus
|
||||||
|
maintainers:
|
||||||
|
- email: gianrubio@gmail.com
|
||||||
|
name: gianrubio
|
||||||
|
url: https://github.com/gianrubio
|
||||||
|
- email: christian.staude@staffbase.com
|
||||||
|
name: cstaud
|
||||||
|
url: https://github.com/cstaud
|
||||||
|
- email: rootsandtrees@posteo.de
|
||||||
|
name: zeritti
|
||||||
|
url: https://github.com/zeritti
|
||||||
|
name: prometheus-pushgateway
|
||||||
|
sources:
|
||||||
|
- https://github.com/prometheus/pushgateway
|
||||||
|
type: application
|
||||||
|
version: 3.3.0
|
||||||
101
charts/prometheus/charts/prometheus-pushgateway/README.md
Normal file
101
charts/prometheus/charts/prometheus-pushgateway/README.md
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
# Prometheus Pushgateway
|
||||||
|
|
||||||
|
This chart bootstraps a Prometheus [Pushgateway](http://github.com/prometheus/pushgateway) deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
|
||||||
|
|
||||||
|
An optional prometheus `ServiceMonitor` can be enabled, should you wish to use this gateway with [Prometheus Operator](https://github.com/coreos/prometheus-operator).
|
||||||
|
|
||||||
|
## Get Repository Info
|
||||||
|
<!-- textlint-disable terminology -->
|
||||||
|
```console
|
||||||
|
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
|
||||||
|
helm repo update
|
||||||
|
```
|
||||||
|
|
||||||
|
_See [helm repo](https://helm.sh/docs/helm/helm_repo/) for command documentation._
|
||||||
|
<!-- textlint-enable -->
|
||||||
|
## Install Chart
|
||||||
|
|
||||||
|
```console
|
||||||
|
helm install [RELEASE_NAME] prometheus-community/prometheus-pushgateway
|
||||||
|
```
|
||||||
|
|
||||||
|
_See [configuration](#configuration) below._
|
||||||
|
|
||||||
|
_See [helm install](https://helm.sh/docs/helm/helm_install/) for command documentation._
|
||||||
|
|
||||||
|
## Uninstall Chart
|
||||||
|
|
||||||
|
```console
|
||||||
|
helm uninstall [RELEASE_NAME]
|
||||||
|
```
|
||||||
|
|
||||||
|
This removes all the Kubernetes components associated with the chart and deletes the release.
|
||||||
|
|
||||||
|
_See [helm uninstall](https://helm.sh/docs/helm/helm_uninstall/) for command documentation._
|
||||||
|
|
||||||
|
## Upgrading Chart
|
||||||
|
|
||||||
|
```console
|
||||||
|
helm upgrade [RELEASE_NAME] prometheus-community/prometheus-pushgateway --install
|
||||||
|
```
|
||||||
|
|
||||||
|
_See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documentation._
|
||||||
|
|
||||||
|
### To 3.0.0
|
||||||
|
|
||||||
|
Previously, as dynamic labels were also set on the statefulset's volume claim template, it was not possible
|
||||||
|
to upgrade a chart release in a usual manner whilst using a statefulset and persistence due to the volume claim template's fields being immutable.
|
||||||
|
|
||||||
|
This release removes the dynamic labels from the statefulset's volume claim template.
|
||||||
|
If you have configured a statefulset with persistent storage,
|
||||||
|
please, delete the statefulset before upgrading:
|
||||||
|
|
||||||
|
```console
|
||||||
|
kubectl delete sts -l app.kubernetes.io/name=prometheus-pushgateway --cascade=orphan
|
||||||
|
```
|
||||||
|
|
||||||
|
### To 2.0.0
|
||||||
|
|
||||||
|
Chart API version has been upgraded to v2 so Helm 3 is needed from now on.
|
||||||
|
|
||||||
|
Docker image tag is used from Chart.yaml appVersion field by default now.
|
||||||
|
|
||||||
|
Version 2.0.0 also adapted [Helm label and annotation best practices](https://helm.sh/docs/chart_best_practices/labels/). Specifically, labels mapping is listed below:
|
||||||
|
|
||||||
|
```console
|
||||||
|
OLD => NEW
|
||||||
|
----------------------------------------
|
||||||
|
heritage => app.kubernetes.io/managed-by
|
||||||
|
chart => helm.sh/chart
|
||||||
|
[container version] => app.kubernetes.io/version
|
||||||
|
app => app.kubernetes.io/name
|
||||||
|
release => app.kubernetes.io/instance
|
||||||
|
```
|
||||||
|
|
||||||
|
Therefore, depending on the way you've configured the chart, the previous StatefulSet or Deployment need to be deleted before upgrade.
|
||||||
|
|
||||||
|
If `runAsStatefulSet: false` (this is the default):
|
||||||
|
|
||||||
|
```console
|
||||||
|
kubectl delete deploy -l app=prometheus-pushgateway
|
||||||
|
```
|
||||||
|
|
||||||
|
If `runAsStatefulSet: true`:
|
||||||
|
|
||||||
|
```console
|
||||||
|
kubectl delete sts -l app=prometheus-pushgateway
|
||||||
|
```
|
||||||
|
|
||||||
|
After that do the actual upgrade:
|
||||||
|
|
||||||
|
```console
|
||||||
|
helm upgrade -i prometheus-pushgateway prometheus-community/prometheus-pushgateway
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
See [Customizing the Chart Before Installing](https://helm.sh/docs/intro/using_helm/#customizing-the-chart-before-installing). To see all configurable options with detailed comments, visit the chart's [values.yaml](./values.yaml), or run these configuration commands:
|
||||||
|
|
||||||
|
```console
|
||||||
|
helm show values prometheus-community/prometheus-pushgateway
|
||||||
|
```
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
1. Get the application URL by running these commands:
|
||||||
|
{{- if .Values.ingress.enabled }}
|
||||||
|
{{- range .Values.ingress.hosts }}
|
||||||
|
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ . }}{{ $.Values.ingress.path }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else if contains "NodePort" .Values.service.type }}
|
||||||
|
export NODE_PORT=$(kubectl get --namespace {{ template "prometheus-pushgateway.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "prometheus-pushgateway.fullname" . }})
|
||||||
|
export NODE_IP=$(kubectl get nodes --namespace {{ template "prometheus-pushgateway.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||||
|
echo http://$NODE_IP:$NODE_PORT
|
||||||
|
{{- else if contains "LoadBalancer" .Values.service.type }}
|
||||||
|
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||||
|
You can watch the status of by running 'kubectl get svc -w {{ template "prometheus-pushgateway.fullname" . }}'
|
||||||
|
export SERVICE_IP=$(kubectl get svc --namespace {{ template "prometheus-pushgateway.namespace" . }} {{ template "prometheus-pushgateway.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
|
||||||
|
echo http://$SERVICE_IP:{{ .Values.service.port }}
|
||||||
|
{{- else if contains "ClusterIP" .Values.service.type }}
|
||||||
|
export POD_NAME=$(kubectl get pods --namespace {{ template "prometheus-pushgateway.namespace" . }} -l "app.kubernetes.io/name={{ template "prometheus-pushgateway.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||||
|
kubectl port-forward $POD_NAME 9091
|
||||||
|
echo "Visit http://127.0.0.1:9091 to use your application"
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,332 @@
|
|||||||
|
{{/* vim: set filetype=mustache: */}}
|
||||||
|
{{/*
|
||||||
|
Expand the name of the chart.
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus-pushgateway.name" -}}
|
||||||
|
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Namespace to set on the resources
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus-pushgateway.namespace" -}}
|
||||||
|
{{- if .Values.namespaceOverride -}}
|
||||||
|
{{- .Values.namespaceOverride -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- .Release.Namespace -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create a default fully qualified app name.
|
||||||
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
If release name contains chart name it will be used as a full name.
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus-pushgateway.fullname" -}}
|
||||||
|
{{- if .Values.fullnameOverride }}
|
||||||
|
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- $name := default .Chart.Name .Values.nameOverride }}
|
||||||
|
{{- if contains $name .Release.Name }}
|
||||||
|
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create chart name and version as used by the chart label.
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus-pushgateway.chart" -}}
|
||||||
|
{{ printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create the name of the service account to use
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus-pushgateway.serviceAccountName" -}}
|
||||||
|
{{- if .Values.serviceAccount.create }}
|
||||||
|
{{- default (include "prometheus-pushgateway.fullname" .) .Values.serviceAccount.name }}
|
||||||
|
{{- else }}
|
||||||
|
{{- default "default" .Values.serviceAccount.name }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create default labels
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus-pushgateway.defaultLabels" -}}
|
||||||
|
helm.sh/chart: {{ include "prometheus-pushgateway.chart" . }}
|
||||||
|
{{ include "prometheus-pushgateway.selectorLabels" . }}
|
||||||
|
{{- if .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||||
|
{{- end }}
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||||
|
{{- with .Values.podLabels }}
|
||||||
|
{{ toYaml . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Selector labels
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus-pushgateway.selectorLabels" -}}
|
||||||
|
app.kubernetes.io/name: {{ include "prometheus-pushgateway.name" . }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Return the appropriate apiVersion for networkpolicy.
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus-pushgateway.networkPolicy.apiVersion" -}}
|
||||||
|
{{- if semverCompare ">=1.4-0, <1.7-0" .Capabilities.KubeVersion.GitVersion }}
|
||||||
|
{{- print "extensions/v1beta1" }}
|
||||||
|
{{- else if semverCompare "^1.7-0" .Capabilities.KubeVersion.GitVersion }}
|
||||||
|
{{- print "networking.k8s.io/v1" }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Define PDB apiVersion
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus-pushgateway.pdb.apiVersion" -}}
|
||||||
|
{{- if $.Capabilities.APIVersions.Has "policy/v1/PodDisruptionBudget" }}
|
||||||
|
{{- print "policy/v1" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- print "policy/v1beta1" }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Define Ingress apiVersion
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus-pushgateway.ingress.apiVersion" -}}
|
||||||
|
{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion }}
|
||||||
|
{{- print "networking.k8s.io/v1" }}
|
||||||
|
{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion }}
|
||||||
|
{{- print "networking.k8s.io/v1beta1" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- print "extensions/v1beta1" }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Define webConfiguration
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus-pushgateway.webConfiguration" -}}
|
||||||
|
basic_auth_users:
|
||||||
|
{{- range $k, $v := .Values.webConfiguration.basicAuthUsers }}
|
||||||
|
{{ $k }}: {{ htpasswd "" $v | trimPrefix ":"}}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Define Authorization
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus-pushgateway.Authorization" -}}
|
||||||
|
{{- $users := keys .Values.webConfiguration.basicAuthUsers }}
|
||||||
|
{{- $user := first $users }}
|
||||||
|
{{- $password := index .Values.webConfiguration.basicAuthUsers $user }}
|
||||||
|
{{- $user }}:{{ $password }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Define basicAuth
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus-pushgateway.basicAuth" -}}
|
||||||
|
{{- $users := keys .Values.webConfiguration.basicAuthUsers }}
|
||||||
|
{{- $user := first $users }}
|
||||||
|
{{- $password := index .Values.webConfiguration.basicAuthUsers $user -}}
|
||||||
|
user: {{ $user | b64enc | quote }}
|
||||||
|
password: {{ $password | b64enc | quote }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Set the image with or without the registry
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus-pushgateway.image" -}}
|
||||||
|
{{- $registry := default .Values.image.registry (.Values.global).imageRegistry }}
|
||||||
|
{{- $repository := .Values.image.repository }}
|
||||||
|
{{- $tag := default .Chart.AppVersion .Values.image.tag }}
|
||||||
|
{{- if $registry }}
|
||||||
|
{{- printf "%s/%s:%s" $registry $repository $tag -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- printf "%s:%s" $repository $tag -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Returns pod spec
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus-pushgateway.podSpec" -}}
|
||||||
|
serviceAccountName: {{ include "prometheus-pushgateway.serviceAccountName" . }}
|
||||||
|
automountServiceAccountToken: {{ .Values.automountServiceAccountToken }}
|
||||||
|
{{- with .Values.priorityClassName }}
|
||||||
|
priorityClassName: {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.hostAliases }}
|
||||||
|
hostAliases:
|
||||||
|
{{- toYaml . | nindent 2 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with (.Values.global).imagePullSecrets | default .Values.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{- toYaml . | nindent 2 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.extraInitContainers }}
|
||||||
|
initContainers:
|
||||||
|
{{- toYaml . | nindent 2 }}
|
||||||
|
{{- end }}
|
||||||
|
containers:
|
||||||
|
{{- with .Values.extraContainers }}
|
||||||
|
{{- toYaml . | nindent 2 }}
|
||||||
|
{{- end }}
|
||||||
|
- name: pushgateway
|
||||||
|
image: {{ include "prometheus-pushgateway.image" . }}
|
||||||
|
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||||
|
{{- with .Values.extraVars }}
|
||||||
|
env:
|
||||||
|
{{- toYaml . | nindent 6 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or .Values.extraArgs .Values.webConfiguration }}
|
||||||
|
args:
|
||||||
|
{{- with .Values.extraArgs }}
|
||||||
|
{{- toYaml . | nindent 6 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.webConfiguration }}
|
||||||
|
- --web.config.file=/etc/config/web-config.yaml
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- name: metrics
|
||||||
|
containerPort: 9091
|
||||||
|
protocol: TCP
|
||||||
|
{{- if .Values.liveness.enabled }}
|
||||||
|
{{- $livenessCommon := omit .Values.liveness.probe "httpGet" }}
|
||||||
|
livenessProbe:
|
||||||
|
{{- with .Values.liveness.probe }}
|
||||||
|
httpGet:
|
||||||
|
path: {{ .httpGet.path }}
|
||||||
|
port: {{ .httpGet.port }}
|
||||||
|
{{- if or .httpGet.httpHeaders $.Values.webConfiguration.basicAuthUsers }}
|
||||||
|
httpHeaders:
|
||||||
|
{{- if $.Values.webConfiguration.basicAuthUsers }}
|
||||||
|
- name: Authorization
|
||||||
|
value: Basic {{ include "prometheus-pushgateway.Authorization" $ | b64enc }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .httpGet.httpHeaders }}
|
||||||
|
{{- toYaml . | nindent 10 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- toYaml $livenessCommon | nindent 6 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.readiness.enabled }}
|
||||||
|
{{- $readinessCommon := omit .Values.readiness.probe "httpGet" }}
|
||||||
|
readinessProbe:
|
||||||
|
{{- with .Values.readiness.probe }}
|
||||||
|
httpGet:
|
||||||
|
path: {{ .httpGet.path }}
|
||||||
|
port: {{ .httpGet.port }}
|
||||||
|
{{- if or .httpGet.httpHeaders $.Values.webConfiguration.basicAuthUsers }}
|
||||||
|
httpHeaders:
|
||||||
|
{{- if $.Values.webConfiguration.basicAuthUsers }}
|
||||||
|
- name: Authorization
|
||||||
|
value: Basic {{ include "prometheus-pushgateway.Authorization" $ | b64enc }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .httpGet.httpHeaders }}
|
||||||
|
{{- toYaml . | nindent 10 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- toYaml $readinessCommon | nindent 6 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.resources }}
|
||||||
|
resources:
|
||||||
|
{{- toYaml . | nindent 6 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.containerSecurityContext }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml . | nindent 6 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.lifecycle }}
|
||||||
|
lifecycle: {{ toYaml . | nindent 6 }}
|
||||||
|
{{- end }}
|
||||||
|
volumeMounts:
|
||||||
|
- name: storage-volume
|
||||||
|
mountPath: "{{ .Values.persistentVolume.mountPath }}"
|
||||||
|
subPath: "{{ .Values.persistentVolume.subPath }}"
|
||||||
|
{{- if .Values.webConfiguration }}
|
||||||
|
- name: web-config
|
||||||
|
mountPath: "/etc/config"
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.extraVolumeMounts }}
|
||||||
|
{{- toYaml . | nindent 6 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{- toYaml . | nindent 2 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 2 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or .Values.podAntiAffinity .Values.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.affinity }}
|
||||||
|
{{- toYaml . | nindent 2 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if eq .Values.podAntiAffinity "hard" }}
|
||||||
|
podAntiAffinity:
|
||||||
|
requiredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
- topologyKey: {{ .Values.podAntiAffinityTopologyKey }}
|
||||||
|
labelSelector:
|
||||||
|
matchExpressions:
|
||||||
|
- {key: app.kubernetes.io/name, operator: In, values: [{{ include "prometheus-pushgateway.name" . }}]}
|
||||||
|
{{- else if eq .Values.podAntiAffinity "soft" }}
|
||||||
|
podAntiAffinity:
|
||||||
|
preferredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
- weight: 100
|
||||||
|
podAffinityTerm:
|
||||||
|
topologyKey: {{ .Values.podAntiAffinityTopologyKey }}
|
||||||
|
labelSelector:
|
||||||
|
matchExpressions:
|
||||||
|
- {key: app.kubernetes.io/name, operator: In, values: [{{ include "prometheus-pushgateway.name" . }}]}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.topologySpreadConstraints }}
|
||||||
|
topologySpreadConstraints:
|
||||||
|
{{- toYaml . | nindent 2 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.securityContext }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml . | nindent 2 }}
|
||||||
|
{{- end }}
|
||||||
|
volumes:
|
||||||
|
{{- $storageVolumeAsPVCTemplate := and .Values.runAsStatefulSet .Values.persistentVolume.enabled -}}
|
||||||
|
{{- if not $storageVolumeAsPVCTemplate }}
|
||||||
|
- name: storage-volume
|
||||||
|
{{- if .Values.persistentVolume.enabled }}
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: {{ if .Values.persistentVolume.existingClaim }}{{ .Values.persistentVolume.existingClaim }}{{- else }}{{ include "prometheus-pushgateway.fullname" . }}{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
emptyDir: {}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.webConfiguration }}
|
||||||
|
- name: web-config
|
||||||
|
secret:
|
||||||
|
secretName: {{ include "prometheus-pushgateway.fullname" . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.extraVolumes }}
|
||||||
|
{{- toYaml .Values.extraVolumes | nindent 2 }}
|
||||||
|
{{- else if $storageVolumeAsPVCTemplate }}
|
||||||
|
{{- if .Values.webConfiguration }}
|
||||||
|
- name: web-config
|
||||||
|
secret:
|
||||||
|
secretName: {{ include "prometheus-pushgateway.fullname" . }}
|
||||||
|
{{- else }}
|
||||||
|
[]
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,32 @@
|
|||||||
|
{{- if not .Values.runAsStatefulSet }}
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus-pushgateway.defaultLabels" . | nindent 4 }}
|
||||||
|
{{- with .Values.deploymentAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
name: {{ include "prometheus-pushgateway.fullname" . }}
|
||||||
|
namespace: {{ template "prometheus-pushgateway.namespace" . }}
|
||||||
|
spec:
|
||||||
|
replicas: {{ .Values.replicaCount }}
|
||||||
|
{{- with .Values.strategy }}
|
||||||
|
strategy:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "prometheus-pushgateway.selectorLabels" . | nindent 6 }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
{{- with .Values.podAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus-pushgateway.defaultLabels" . | nindent 8 }}
|
||||||
|
spec:
|
||||||
|
{{- include "prometheus-pushgateway.podSpec" . | nindent 6 }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
{{- range .Values.extraManifests }}
|
||||||
|
---
|
||||||
|
{{- if typeIs "string" . }}
|
||||||
|
{{- tpl . $ }}
|
||||||
|
{{- else }}
|
||||||
|
{{- tpl (. | toYaml | nindent 0) $ }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,50 @@
|
|||||||
|
{{- if .Values.ingress.enabled }}
|
||||||
|
{{- $serviceName := include "prometheus-pushgateway.fullname" . }}
|
||||||
|
{{- $servicePort := .Values.service.port }}
|
||||||
|
{{- $ingressPath := .Values.ingress.path }}
|
||||||
|
{{- $ingressClassName := .Values.ingress.className }}
|
||||||
|
{{- $ingressPathType := .Values.ingress.pathType }}
|
||||||
|
{{- $extraPaths := .Values.ingress.extraPaths }}
|
||||||
|
apiVersion: {{ include "prometheus-pushgateway.ingress.apiVersion" . }}
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
{{- with .Values.ingress.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus-pushgateway.defaultLabels" . | nindent 4 }}
|
||||||
|
name: {{ include "prometheus-pushgateway.fullname" . }}
|
||||||
|
namespace: {{ template "prometheus-pushgateway.namespace" . }}
|
||||||
|
spec:
|
||||||
|
{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion }}
|
||||||
|
ingressClassName: {{ $ingressClassName }}
|
||||||
|
{{- end }}
|
||||||
|
rules:
|
||||||
|
{{- range $host := .Values.ingress.hosts }}
|
||||||
|
- host: {{ $host }}
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
{{- with $extraPaths }}
|
||||||
|
{{- toYaml . | nindent 10 }}
|
||||||
|
{{- end }}
|
||||||
|
- path: {{ $ingressPath }}
|
||||||
|
{{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
|
||||||
|
pathType: {{ $ingressPathType }}
|
||||||
|
{{- end }}
|
||||||
|
backend:
|
||||||
|
{{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
|
||||||
|
service:
|
||||||
|
name: {{ $serviceName }}
|
||||||
|
port:
|
||||||
|
number: {{ $servicePort }}
|
||||||
|
{{- else }}
|
||||||
|
serviceName: {{ $serviceName }}
|
||||||
|
servicePort: {{ $servicePort }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- with .Values.ingress.tls }}
|
||||||
|
tls:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,26 @@
|
|||||||
|
{{- if .Values.networkPolicy }}
|
||||||
|
apiVersion: {{ include "prometheus-pushgateway.networkPolicy.apiVersion" . }}
|
||||||
|
kind: NetworkPolicy
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus-pushgateway.defaultLabels" . | nindent 4 }}
|
||||||
|
{{- if .Values.networkPolicy.customSelectors }}
|
||||||
|
name: ingress-allow-customselector-{{ template "prometheus-pushgateway.name" . }}
|
||||||
|
{{- else if .Values.networkPolicy.allowAll }}
|
||||||
|
name: ingress-allow-all-{{ template "prometheus-pushgateway.name" . }}
|
||||||
|
{{- else -}}
|
||||||
|
{{- fail "One of `allowAll` or `customSelectors` must be specified." }}
|
||||||
|
{{- end }}
|
||||||
|
namespace: {{ template "prometheus-pushgateway.namespace" . }}
|
||||||
|
spec:
|
||||||
|
podSelector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "prometheus-pushgateway.selectorLabels" . | nindent 6 }}
|
||||||
|
ingress:
|
||||||
|
- ports:
|
||||||
|
- port: {{ .Values.service.targetPort }}
|
||||||
|
{{- with .Values.networkPolicy.customSelectors }}
|
||||||
|
from:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
{{- if .Values.podDisruptionBudget }}
|
||||||
|
apiVersion: {{ include "prometheus-pushgateway.pdb.apiVersion" . }}
|
||||||
|
kind: PodDisruptionBudget
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus-pushgateway.defaultLabels" . | nindent 4 }}
|
||||||
|
name: {{ include "prometheus-pushgateway.fullname" . }}
|
||||||
|
namespace: {{ template "prometheus-pushgateway.namespace" . }}
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "prometheus-pushgateway.selectorLabels" . | nindent 6 }}
|
||||||
|
{{- toYaml .Values.podDisruptionBudget | nindent 2 }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
{{- if and (not .Values.runAsStatefulSet) .Values.persistentVolume.enabled (not .Values.persistentVolume.existingClaim) }}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
{{- with .Values.persistentVolume.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus-pushgateway.defaultLabels" . | nindent 4 }}
|
||||||
|
{{- with .Values.persistentVolumeLabels }}
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
name: {{ include "prometheus-pushgateway.fullname" . }}
|
||||||
|
namespace: {{ template "prometheus-pushgateway.namespace" . }}
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
{{- toYaml .Values.persistentVolume.accessModes | nindent 4 }}
|
||||||
|
{{- if .Values.persistentVolume.storageClass }}
|
||||||
|
{{- if (eq "-" .Values.persistentVolume.storageClass) }}
|
||||||
|
storageClassName: ""
|
||||||
|
{{- else }}
|
||||||
|
storageClassName: "{{ .Values.persistentVolume.storageClass }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: "{{ .Values.persistentVolume.size }}"
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
{{- if .Values.webConfiguration }}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: {{ include "prometheus-pushgateway.fullname" . }}
|
||||||
|
namespace: {{ include "prometheus-pushgateway.namespace" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus-pushgateway.defaultLabels" . | nindent 4 }}
|
||||||
|
data:
|
||||||
|
web-config.yaml: {{ include "prometheus-pushgateway.webConfiguration" . | b64enc}}
|
||||||
|
{{- end }}
|
||||||
|
---
|
||||||
|
{{- if and .Values.webConfiguration .Values.serviceMonitor.enabled (empty .Values.serviceMonitor.basicAuth) }}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: {{ include "prometheus-pushgateway.fullname" . }}-basic-auth
|
||||||
|
namespace: {{ default (include "prometheus-pushgateway.namespace" .) .Values.serviceMonitor.namespace }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus-pushgateway.defaultLabels" . | nindent 4 }}
|
||||||
|
data:
|
||||||
|
{{- include "prometheus-pushgateway.basicAuth" . | nindent 2 }}
|
||||||
|
type: Opaque
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,45 @@
|
|||||||
|
{{- $stsNoHeadlessSvcTypes := list "LoadBalancer" "NodePort" -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
{{- with .Values.serviceAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus-pushgateway.defaultLabels" . | nindent 4 }}
|
||||||
|
{{- with .Values.serviceLabels }}
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
name: {{ include "prometheus-pushgateway.fullname" . }}
|
||||||
|
namespace: {{ template "prometheus-pushgateway.namespace" . }}
|
||||||
|
spec:
|
||||||
|
{{- if .Values.service.clusterIP }}
|
||||||
|
clusterIP: {{ .Values.service.clusterIP }}
|
||||||
|
{{ else if and .Values.runAsStatefulSet (not (has .Values.service.type $stsNoHeadlessSvcTypes)) }}
|
||||||
|
clusterIP: None # Headless service
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.service.ipDualStack.enabled }}
|
||||||
|
ipFamilies: {{ toYaml .Values.service.ipDualStack.ipFamilies | nindent 4 }}
|
||||||
|
ipFamilyPolicy: {{ .Values.service.ipDualStack.ipFamilyPolicy }}
|
||||||
|
{{- end }}
|
||||||
|
type: {{ .Values.service.type }}
|
||||||
|
{{- with .Values.service.loadBalancerIP }}
|
||||||
|
loadBalancerIP: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.service.loadBalancerSourceRanges }}
|
||||||
|
loadBalancerSourceRanges:
|
||||||
|
{{- range $cidr := .Values.service.loadBalancerSourceRanges }}
|
||||||
|
- {{ $cidr }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- port: {{ .Values.service.port }}
|
||||||
|
targetPort: {{ .Values.service.targetPort }}
|
||||||
|
{{- if and (eq .Values.service.type "NodePort") .Values.service.nodePort }}
|
||||||
|
nodePort: {{ .Values.service.nodePort }}
|
||||||
|
{{- end }}
|
||||||
|
protocol: TCP
|
||||||
|
name: {{ .Values.service.portName }}
|
||||||
|
selector:
|
||||||
|
{{- include "prometheus-pushgateway.selectorLabels" . | nindent 4 }}
|
||||||
@ -0,0 +1,17 @@
|
|||||||
|
{{- if .Values.serviceAccount.create }}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
{{- with .Values.serviceAccount.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus-pushgateway.defaultLabels" . | nindent 4 }}
|
||||||
|
{{- with .Values.serviceAccountLabels }}
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
name: {{ include "prometheus-pushgateway.serviceAccountName" . }}
|
||||||
|
namespace: {{ template "prometheus-pushgateway.namespace" . }}
|
||||||
|
automountServiceAccountToken: {{ .Values.automountServiceAccountToken }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,58 @@
|
|||||||
|
{{- if .Values.serviceMonitor.enabled }}
|
||||||
|
apiVersion: monitoring.coreos.com/v1
|
||||||
|
kind: ServiceMonitor
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus-pushgateway.defaultLabels" . | nindent 4 }}
|
||||||
|
{{- if .Values.serviceMonitor.additionalLabels }}
|
||||||
|
{{- toYaml .Values.serviceMonitor.additionalLabels | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
name: {{ include "prometheus-pushgateway.fullname" . }}
|
||||||
|
namespace: {{ default (include "prometheus-pushgateway.namespace" .) .Values.serviceMonitor.namespace }}
|
||||||
|
spec:
|
||||||
|
endpoints:
|
||||||
|
- port: {{ .Values.service.portName }}
|
||||||
|
{{- with .Values.serviceMonitor.interval }}
|
||||||
|
interval: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.serviceMonitor.scheme }}
|
||||||
|
scheme: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if and .Values.webConfiguration (empty .Values.serviceMonitor.basicAuth) }}
|
||||||
|
basicAuth:
|
||||||
|
password:
|
||||||
|
name: {{ include "prometheus-pushgateway.fullname" . }}-basic-auth
|
||||||
|
key: password
|
||||||
|
username:
|
||||||
|
name: {{ include "prometheus-pushgateway.fullname" . }}-basic-auth
|
||||||
|
key: user
|
||||||
|
{{- else if not (empty .Values.serviceMonitor.basicAuth) }}
|
||||||
|
basicAuth: {{ toYaml .Values.serviceMonitor.basicAuth | nindent 6 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.serviceMonitor.bearerTokenFile }}
|
||||||
|
bearerTokenFile: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.serviceMonitor.tlsConfig }}
|
||||||
|
tlsConfig:
|
||||||
|
{{- toYaml .| nindent 6 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.serviceMonitor.scrapeTimeout }}
|
||||||
|
scrapeTimeout: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
path: {{ .Values.serviceMonitor.telemetryPath }}
|
||||||
|
honorLabels: {{ .Values.serviceMonitor.honorLabels }}
|
||||||
|
{{- with .Values.serviceMonitor.metricRelabelings }}
|
||||||
|
metricRelabelings:
|
||||||
|
{{- tpl (toYaml . | nindent 6) $ }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.serviceMonitor.relabelings }}
|
||||||
|
relabelings:
|
||||||
|
{{- toYaml . | nindent 6 }}
|
||||||
|
{{- end }}
|
||||||
|
namespaceSelector:
|
||||||
|
matchNames:
|
||||||
|
- {{ template "prometheus-pushgateway.namespace" . }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "prometheus-pushgateway.selectorLabels" . | nindent 6 }}
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,51 @@
|
|||||||
|
{{- if .Values.runAsStatefulSet }}
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: StatefulSet
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus-pushgateway.defaultLabels" . | nindent 4 }}
|
||||||
|
name: {{ include "prometheus-pushgateway.fullname" . }}
|
||||||
|
namespace: {{ template "prometheus-pushgateway.namespace" . }}
|
||||||
|
spec:
|
||||||
|
replicas: {{ .Values.replicaCount }}
|
||||||
|
serviceName: {{ include "prometheus-pushgateway.fullname" . }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "prometheus-pushgateway.selectorLabels" . | nindent 6 }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
{{- with .Values.podAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus-pushgateway.defaultLabels" . | nindent 8 }}
|
||||||
|
spec:
|
||||||
|
{{- include "prometheus-pushgateway.podSpec" . | nindent 6 }}
|
||||||
|
{{- if .Values.persistentVolume.enabled }}
|
||||||
|
volumeClaimTemplates:
|
||||||
|
- metadata:
|
||||||
|
{{- with .Values.persistentVolume.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 10 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.persistentVolumeLabels }}
|
||||||
|
labels:
|
||||||
|
{{- toYaml . | nindent 10 }}
|
||||||
|
{{- end }}
|
||||||
|
name: storage-volume
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
{{ toYaml .Values.persistentVolume.accessModes }}
|
||||||
|
{{- if .Values.persistentVolume.storageClass }}
|
||||||
|
{{- if (eq "-" .Values.persistentVolume.storageClass) }}
|
||||||
|
storageClassName: ""
|
||||||
|
{{- else }}
|
||||||
|
storageClassName: "{{ .Values.persistentVolume.storageClass }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: "{{ .Values.persistentVolume.size }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
393
charts/prometheus/charts/prometheus-pushgateway/values.yaml
Normal file
393
charts/prometheus/charts/prometheus-pushgateway/values.yaml
Normal file
@ -0,0 +1,393 @@
|
|||||||
|
# Default values for prometheus-pushgateway.
|
||||||
|
# This is a YAML-formatted file.
|
||||||
|
# Declare variables to be passed into your templates.
|
||||||
|
|
||||||
|
global:
|
||||||
|
imageRegistry: ""
|
||||||
|
imagePullSecrets: []
|
||||||
|
|
||||||
|
# Provide a name in place of prometheus-pushgateway for `app:` labels
|
||||||
|
nameOverride: ""
|
||||||
|
|
||||||
|
# Provide a name to substitute for the full names of resources
|
||||||
|
fullnameOverride: ""
|
||||||
|
|
||||||
|
# Provide a namespace to substitude for the namespace on resources
|
||||||
|
namespaceOverride: ""
|
||||||
|
|
||||||
|
image:
|
||||||
|
registry: ""
|
||||||
|
repository: quay.io/prometheus/pushgateway
|
||||||
|
# if not set appVersion field from Chart.yaml is used
|
||||||
|
tag: ""
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
|
||||||
|
# Optional pod imagePullSecrets
|
||||||
|
imagePullSecrets: []
|
||||||
|
|
||||||
|
service:
|
||||||
|
type: ClusterIP
|
||||||
|
port: 9091
|
||||||
|
targetPort: 9091
|
||||||
|
# nodePort: 32100
|
||||||
|
portName: http
|
||||||
|
|
||||||
|
# Optional - Can be used for headless if value is "None"
|
||||||
|
clusterIP: ""
|
||||||
|
|
||||||
|
ipDualStack:
|
||||||
|
enabled: false
|
||||||
|
ipFamilies: ["IPv6", "IPv4"]
|
||||||
|
ipFamilyPolicy: "PreferDualStack"
|
||||||
|
|
||||||
|
loadBalancerIP: ""
|
||||||
|
loadBalancerSourceRanges: []
|
||||||
|
|
||||||
|
# Whether to automatically mount a service account token into the pod
|
||||||
|
automountServiceAccountToken: true
|
||||||
|
|
||||||
|
# Optional deployment annotations
|
||||||
|
deploymentAnnotations: {}
|
||||||
|
|
||||||
|
# Optional pod annotations
|
||||||
|
podAnnotations: {}
|
||||||
|
|
||||||
|
# Optional pod labels
|
||||||
|
podLabels: {}
|
||||||
|
|
||||||
|
# Optional service annotations
|
||||||
|
serviceAnnotations: {}
|
||||||
|
|
||||||
|
# Optional service labels
|
||||||
|
serviceLabels: {}
|
||||||
|
|
||||||
|
# Optional serviceAccount labels
|
||||||
|
serviceAccountLabels: {}
|
||||||
|
|
||||||
|
# Optional persistentVolume labels
|
||||||
|
persistentVolumeLabels: {}
|
||||||
|
|
||||||
|
# Optional additional environment variables
|
||||||
|
extraVars: []
|
||||||
|
|
||||||
|
## Additional pushgateway container arguments
|
||||||
|
##
|
||||||
|
## example:
|
||||||
|
## extraArgs:
|
||||||
|
## - --persistence.file=/data/pushgateway.data
|
||||||
|
## - --persistence.interval=5m
|
||||||
|
extraArgs: []
|
||||||
|
|
||||||
|
## Additional InitContainers to initialize the pod
|
||||||
|
##
|
||||||
|
extraInitContainers: []
|
||||||
|
|
||||||
|
# Optional additional containers (sidecar)
|
||||||
|
extraContainers: []
|
||||||
|
# - name: oAuth2-proxy
|
||||||
|
# args:
|
||||||
|
# - -https-address=:9092
|
||||||
|
# - -upstream=http://localhost:9091
|
||||||
|
# - -skip-auth-regex=^/metrics
|
||||||
|
# - -openshift-delegate-urls={"/":{"group":"monitoring.coreos.com","resource":"prometheuses","verb":"get"}}
|
||||||
|
# image: openshift/oauth-proxy:v1.1.0
|
||||||
|
# ports:
|
||||||
|
# - containerPort: 9092
|
||||||
|
# name: proxy
|
||||||
|
# resources:
|
||||||
|
# limits:
|
||||||
|
# memory: 16Mi
|
||||||
|
# requests:
|
||||||
|
# memory: 4Mi
|
||||||
|
# cpu: 20m
|
||||||
|
# volumeMounts:
|
||||||
|
# - mountPath: /etc/prometheus/secrets/pushgateway-tls
|
||||||
|
# name: secret-pushgateway-tls
|
||||||
|
|
||||||
|
resources: {}
|
||||||
|
# We usually recommend not to specify default resources and to leave this as a conscious
|
||||||
|
# choice for the user. This also increases chances charts run on environments with little
|
||||||
|
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
||||||
|
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
||||||
|
# limits:
|
||||||
|
# cpu: 200m
|
||||||
|
# memory: 50Mi
|
||||||
|
# requests:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 30Mi
|
||||||
|
|
||||||
|
# -- Sets web configuration
|
||||||
|
# To enable basic authentication, provide basicAuthUsers as a map
|
||||||
|
# If serviceMonitor.enabled is set, a secret with these credentials will be created
|
||||||
|
# and configured in serviceMonitor. serviceMonitor.basicAuth overrides this secret.
|
||||||
|
webConfiguration: {}
|
||||||
|
# basicAuthUsers:
|
||||||
|
# username: password
|
||||||
|
|
||||||
|
liveness:
|
||||||
|
enabled: true
|
||||||
|
probe:
|
||||||
|
httpGet:
|
||||||
|
path: /-/healthy
|
||||||
|
port: 9091
|
||||||
|
initialDelaySeconds: 10
|
||||||
|
timeoutSeconds: 10
|
||||||
|
|
||||||
|
readiness:
|
||||||
|
enabled: true
|
||||||
|
probe:
|
||||||
|
httpGet:
|
||||||
|
path: /-/ready
|
||||||
|
port: 9091
|
||||||
|
initialDelaySeconds: 10
|
||||||
|
timeoutSeconds: 10
|
||||||
|
|
||||||
|
serviceAccount:
|
||||||
|
# Specifies whether a ServiceAccount should be created
|
||||||
|
create: true
|
||||||
|
# The name of the ServiceAccount to use.
|
||||||
|
# If not set and create is true, a name is generated using the fullname template
|
||||||
|
name:
|
||||||
|
|
||||||
|
## Configure ingress resource that allow you to access the
|
||||||
|
## pushgateway installation. Set up the URL
|
||||||
|
## ref: http://kubernetes.io/docs/user-guide/ingress/
|
||||||
|
##
|
||||||
|
ingress:
|
||||||
|
## Enable Ingress.
|
||||||
|
##
|
||||||
|
enabled: false
|
||||||
|
# AWS ALB requires path of /*
|
||||||
|
className: ""
|
||||||
|
path: /
|
||||||
|
pathType: ImplementationSpecific
|
||||||
|
|
||||||
|
## Extra paths to prepend to every host configuration. This is useful when working with annotation based services.
|
||||||
|
extraPaths: []
|
||||||
|
# - path: /*
|
||||||
|
# backend:
|
||||||
|
# serviceName: ssl-redirect
|
||||||
|
# servicePort: use-annotation
|
||||||
|
|
||||||
|
## Annotations.
|
||||||
|
##
|
||||||
|
# annotations:
|
||||||
|
# kubernetes.io/ingress.class: nginx
|
||||||
|
# kubernetes.io/tls-acme: 'true'
|
||||||
|
|
||||||
|
## Hostnames.
|
||||||
|
## Must be provided if Ingress is enabled.
|
||||||
|
##
|
||||||
|
# hosts:
|
||||||
|
# - pushgateway.domain.com
|
||||||
|
|
||||||
|
## TLS configuration.
|
||||||
|
## Secrets must be manually created in the namespace.
|
||||||
|
##
|
||||||
|
# tls:
|
||||||
|
# - secretName: pushgateway-tls
|
||||||
|
# hosts:
|
||||||
|
# - pushgateway.domain.com
|
||||||
|
|
||||||
|
tolerations: []
|
||||||
|
# - effect: NoSchedule
|
||||||
|
# operator: Exists
|
||||||
|
|
||||||
|
## Node labels for pushgateway pod assignment
|
||||||
|
## Ref: https://kubernetes.io/docs/user-guide/node-selection/
|
||||||
|
##
|
||||||
|
nodeSelector: {}
|
||||||
|
|
||||||
|
replicaCount: 1
|
||||||
|
|
||||||
|
hostAliases: []
|
||||||
|
# - ip: "127.0.0.1"
|
||||||
|
# hostnames:
|
||||||
|
# - "foo.local"
|
||||||
|
# - "bar.local"
|
||||||
|
# - ip: "10.1.2.3"
|
||||||
|
# hostnames:
|
||||||
|
# - "foo.remote"
|
||||||
|
# - "bar.remote"
|
||||||
|
|
||||||
|
## When running more than one replica alongside with persistence, different volumes are needed
|
||||||
|
## per replica, since sharing a `persistence.file` across replicas does not keep metrics synced.
|
||||||
|
## For this purpose, you can enable the `runAsStatefulSet` to deploy the pushgateway as a
|
||||||
|
## StatefulSet instead of as a Deployment.
|
||||||
|
runAsStatefulSet: false
|
||||||
|
|
||||||
|
## Security context to be added to push-gateway pods
|
||||||
|
##
|
||||||
|
securityContext:
|
||||||
|
fsGroup: 65534
|
||||||
|
runAsUser: 65534
|
||||||
|
runAsNonRoot: true
|
||||||
|
|
||||||
|
## Security context to be added to push-gateway containers
|
||||||
|
## Having a separate variable as securityContext differs for pods and containers.
|
||||||
|
containerSecurityContext: {}
|
||||||
|
# allowPrivilegeEscalation: false
|
||||||
|
# readOnlyRootFilesystem: true
|
||||||
|
# runAsUser: 65534
|
||||||
|
# runAsNonRoot: true
|
||||||
|
|
||||||
|
## Affinity for pod assignment
|
||||||
|
## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
|
||||||
|
affinity: {}
|
||||||
|
|
||||||
|
## Pod anti-affinity can prevent the scheduler from placing pushgateway replicas on the same node.
|
||||||
|
## The value "soft" means that the scheduler should *prefer* to not schedule two replica pods onto the same node but no guarantee is provided.
|
||||||
|
## The value "hard" means that the scheduler is *required* to not schedule two replica pods onto the same node.
|
||||||
|
## The default value "" will disable pod anti-affinity so that no anti-affinity rules will be configured (unless set in `affinity`).
|
||||||
|
##
|
||||||
|
podAntiAffinity: ""
|
||||||
|
|
||||||
|
## If anti-affinity is enabled sets the topologyKey to use for anti-affinity.
|
||||||
|
## This can be changed to, for example, failure-domain.beta.kubernetes.io/zone
|
||||||
|
##
|
||||||
|
podAntiAffinityTopologyKey: kubernetes.io/hostname
|
||||||
|
|
||||||
|
## Topology spread constraints for pods
|
||||||
|
## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
|
||||||
|
topologySpreadConstraints: []
|
||||||
|
|
||||||
|
# Enable this if you're using https://github.com/coreos/prometheus-operator
|
||||||
|
serviceMonitor:
|
||||||
|
enabled: false
|
||||||
|
namespace: monitoring
|
||||||
|
|
||||||
|
# telemetryPath: HTTP resource path from which to fetch metrics.
|
||||||
|
# Telemetry path, default /metrics, has to be prefixed accordingly if pushgateway sets a route prefix at start-up.
|
||||||
|
#
|
||||||
|
telemetryPath: "/metrics"
|
||||||
|
|
||||||
|
# Fallback to the prometheus default unless specified
|
||||||
|
interval: ""
|
||||||
|
|
||||||
|
## scheme: HTTP scheme to use for scraping. Can be used with `tlsConfig` for example if using istio mTLS.
|
||||||
|
scheme: ""
|
||||||
|
|
||||||
|
## Basic authentication
|
||||||
|
basicAuth: {}
|
||||||
|
|
||||||
|
## Bearer token file
|
||||||
|
bearerTokenFile: ""
|
||||||
|
|
||||||
|
## tlsConfig: TLS configuration to use when scraping the endpoint. For example if using istio mTLS.
|
||||||
|
## Of type: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#tlsconfig
|
||||||
|
tlsConfig: {}
|
||||||
|
|
||||||
|
# bearerTokenFile:
|
||||||
|
# Fallback to the prometheus default unless specified
|
||||||
|
scrapeTimeout: ""
|
||||||
|
|
||||||
|
## Used to pass Labels that are used by the Prometheus installed in your cluster to select Service Monitors to work with
|
||||||
|
## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#prometheusspec
|
||||||
|
additionalLabels: {}
|
||||||
|
|
||||||
|
# Retain the job and instance labels of the metrics pushed to the Pushgateway
|
||||||
|
# [Scraping Pushgateway](https://github.com/prometheus/pushgateway#configure-the-pushgateway-as-a-target-to-scrape)
|
||||||
|
honorLabels: true
|
||||||
|
|
||||||
|
## Metric relabel configs to apply to samples before ingestion.
|
||||||
|
## [Metric Relabeling](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs)
|
||||||
|
metricRelabelings: []
|
||||||
|
# - action: keep
|
||||||
|
# regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'
|
||||||
|
# sourceLabels: [__name__]
|
||||||
|
|
||||||
|
## Relabel configs to apply to samples before ingestion.
|
||||||
|
## [Relabeling](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config)
|
||||||
|
relabelings: []
|
||||||
|
# - sourceLabels: [__meta_kubernetes_pod_node_name]
|
||||||
|
# separator: ;
|
||||||
|
# regex: ^(.*)$
|
||||||
|
# targetLabel: nodename
|
||||||
|
# replacement: $1
|
||||||
|
# action: replace
|
||||||
|
|
||||||
|
# The values to set in the PodDisruptionBudget spec (minAvailable/maxUnavailable)
|
||||||
|
# If not set then a PodDisruptionBudget will not be created
|
||||||
|
podDisruptionBudget: {}
|
||||||
|
|
||||||
|
priorityClassName:
|
||||||
|
|
||||||
|
# Deployment Strategy type
|
||||||
|
strategy:
|
||||||
|
type: Recreate
|
||||||
|
|
||||||
|
persistentVolume:
|
||||||
|
## If true, pushgateway will create/use a Persistent Volume Claim
|
||||||
|
## If false, use emptyDir
|
||||||
|
##
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
## pushgateway data Persistent Volume access modes
|
||||||
|
## Must match those of existing PV or dynamic provisioner
|
||||||
|
## Ref: http://kubernetes.io/docs/user-guide/persistent-volumes/
|
||||||
|
##
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
|
||||||
|
## pushgateway data Persistent Volume Claim annotations
|
||||||
|
##
|
||||||
|
annotations: {}
|
||||||
|
|
||||||
|
## pushgateway data Persistent Volume existing claim name
|
||||||
|
## Requires pushgateway.persistentVolume.enabled: true
|
||||||
|
## If defined, PVC must be created manually before volume will be bound
|
||||||
|
existingClaim: ""
|
||||||
|
|
||||||
|
## pushgateway data Persistent Volume mount root path
|
||||||
|
##
|
||||||
|
mountPath: /data
|
||||||
|
|
||||||
|
## pushgateway data Persistent Volume size
|
||||||
|
##
|
||||||
|
size: 2Gi
|
||||||
|
|
||||||
|
## pushgateway data Persistent Volume Storage Class
|
||||||
|
## If defined, storageClassName: <storageClass>
|
||||||
|
## If set to "-", storageClassName: "", which disables dynamic provisioning
|
||||||
|
## If undefined (the default) or set to null, no storageClassName spec is
|
||||||
|
## set, choosing the default provisioner. (gp2 on AWS, standard on
|
||||||
|
## GKE, AWS & OpenStack)
|
||||||
|
##
|
||||||
|
# storageClass: "-"
|
||||||
|
|
||||||
|
## Subdirectory of pushgateway data Persistent Volume to mount
|
||||||
|
## Useful if the volume's root directory is not empty
|
||||||
|
##
|
||||||
|
subPath: ""
|
||||||
|
|
||||||
|
extraVolumes: []
|
||||||
|
# - name: extra
|
||||||
|
# emptyDir: {}
|
||||||
|
extraVolumeMounts: []
|
||||||
|
# - name: extra
|
||||||
|
# mountPath: /usr/share/extras
|
||||||
|
# readOnly: true
|
||||||
|
|
||||||
|
# Configuration for clusters with restrictive network policies in place:
|
||||||
|
# - allowAll allows access to the PushGateway from any namespace
|
||||||
|
# - customSelector is a list of pod/namespaceSelectors to allow access from
|
||||||
|
# These options are mutually exclusive and the latter will take precedence.
|
||||||
|
networkPolicy: {}
|
||||||
|
# allowAll: true
|
||||||
|
# customSelectors:
|
||||||
|
# - namespaceSelector:
|
||||||
|
# matchLabels:
|
||||||
|
# type: admin
|
||||||
|
# - podSelector:
|
||||||
|
# matchLabels:
|
||||||
|
# app: myapp
|
||||||
|
|
||||||
|
# Array of extra K8s objects to deploy (evaluated as a template)
|
||||||
|
# The value can hold an array of strings as well as objects
|
||||||
|
extraManifests: []
|
||||||
|
|
||||||
|
# Lifecycle hooks configuration
|
||||||
|
lifecycle: {}
|
||||||
|
# preStop:
|
||||||
|
# exec:
|
||||||
|
# command: ["/bin/sh", "-c", "sleep 30"]
|
||||||
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
## Test case: automount SA token
|
|
||||||
serviceAccounts:
|
|
||||||
server:
|
|
||||||
automountServiceAccountToken: true
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
---
|
|
||||||
## Test case: test config-reloader in deployment
|
|
||||||
configmapReload:
|
|
||||||
env:
|
|
||||||
- name: APPNAME
|
|
||||||
value: "prometheus-config-reloader"
|
|
||||||
|
|
||||||
prometheus:
|
|
||||||
containerSecurityContext:
|
|
||||||
allowPrivilegeEscalation: false
|
|
||||||
capabilities:
|
|
||||||
drop:
|
|
||||||
- ALL
|
|
||||||
runAsNonRoot: true
|
|
||||||
readOnlyRootFilesystem: true
|
|
||||||
seccompProfile:
|
|
||||||
type: RuntimeDefault
|
|
||||||
|
|
||||||
extraArgs:
|
|
||||||
log-level: debug
|
|
||||||
watch-interval: 1m
|
|
||||||
|
|
||||||
startupProbe:
|
|
||||||
enabled: true
|
|
||||||
|
|
||||||
server:
|
|
||||||
statefulSet:
|
|
||||||
enabled: false
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
---
|
|
||||||
## Test case: test config-reloader in statefulset
|
|
||||||
configmapReload:
|
|
||||||
env:
|
|
||||||
- name: APPNAME
|
|
||||||
value: "prometheus-config-reloader"
|
|
||||||
|
|
||||||
prometheus:
|
|
||||||
containerSecurityContext:
|
|
||||||
allowPrivilegeEscalation: false
|
|
||||||
capabilities:
|
|
||||||
drop:
|
|
||||||
- ALL
|
|
||||||
runAsNonRoot: true
|
|
||||||
readOnlyRootFilesystem: true
|
|
||||||
seccompProfile:
|
|
||||||
type: RuntimeDefault
|
|
||||||
|
|
||||||
extraArgs:
|
|
||||||
log-level: debug
|
|
||||||
watch-interval: 1m
|
|
||||||
|
|
||||||
startupProbe:
|
|
||||||
enabled: true
|
|
||||||
|
|
||||||
server:
|
|
||||||
statefulSet:
|
|
||||||
enabled: true
|
|
||||||
@ -1,22 +0,0 @@
|
|||||||
---
|
|
||||||
## Test case: set extra manifests to deploy
|
|
||||||
extraManifests:
|
|
||||||
- |
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
ci: "true"
|
|
||||||
name: prometheus-extra-cm-first
|
|
||||||
data:
|
|
||||||
GREETING: "hello"
|
|
||||||
- |
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
ci: "true"
|
|
||||||
name: prometheus-extra-cm-second
|
|
||||||
data:
|
|
||||||
prometheus.txt: "{{ include "prometheus.server.fullname" . }}"
|
|
||||||
immutable: true
|
|
||||||
@ -1,43 +0,0 @@
|
|||||||
---
|
|
||||||
## Test case: set various fields in deployment
|
|
||||||
server:
|
|
||||||
automountServiceAccountToken: true
|
|
||||||
|
|
||||||
clusterRoleNameOverride: "ci-prometheus-server-cluster-role"
|
|
||||||
|
|
||||||
containerSecurityContext:
|
|
||||||
allowPrivilegeEscalation: false
|
|
||||||
capabilities:
|
|
||||||
drop:
|
|
||||||
- ALL
|
|
||||||
seccompProfile:
|
|
||||||
type: RuntimeDefault
|
|
||||||
|
|
||||||
env:
|
|
||||||
- name: APPNAME
|
|
||||||
value: prometheus
|
|
||||||
|
|
||||||
extraArgs:
|
|
||||||
query.timeout: 1m
|
|
||||||
query.max-concurrency: 15
|
|
||||||
|
|
||||||
global:
|
|
||||||
external_labels:
|
|
||||||
cluster: "ci"
|
|
||||||
|
|
||||||
persistentVolume:
|
|
||||||
enabled: true
|
|
||||||
size: 2Gi
|
|
||||||
|
|
||||||
prefixURL: /prometheus
|
|
||||||
|
|
||||||
retentionSize: 1GB
|
|
||||||
|
|
||||||
startupProbe:
|
|
||||||
enabled: true
|
|
||||||
|
|
||||||
statefulSet:
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
tsdb:
|
|
||||||
out_of_order_time_window: 10s
|
|
||||||
@ -1,44 +0,0 @@
|
|||||||
---
|
|
||||||
# Test case: set various fields in statefulset
|
|
||||||
server:
|
|
||||||
automountServiceAccountToken: true
|
|
||||||
|
|
||||||
clusterRoleNameOverride: "ci-prometheus-server-cluster-role"
|
|
||||||
|
|
||||||
containerSecurityContext:
|
|
||||||
allowPrivilegeEscalation: false
|
|
||||||
capabilities:
|
|
||||||
drop:
|
|
||||||
- ALL
|
|
||||||
seccompProfile:
|
|
||||||
type: RuntimeDefault
|
|
||||||
|
|
||||||
env:
|
|
||||||
- name: APPNAME
|
|
||||||
value: prometheus
|
|
||||||
|
|
||||||
extraArgs:
|
|
||||||
query.timeout: 1m
|
|
||||||
query.max-concurrency: 15
|
|
||||||
|
|
||||||
global:
|
|
||||||
external_labels:
|
|
||||||
cluster: "ci"
|
|
||||||
|
|
||||||
persistentVolume:
|
|
||||||
enabled: true
|
|
||||||
statefulSetNameOverride: "ci-prometheus-server-pvc"
|
|
||||||
size: 2Gi
|
|
||||||
|
|
||||||
prefixURL: /prometheus
|
|
||||||
|
|
||||||
retentionSize: 1GB
|
|
||||||
|
|
||||||
startupProbe:
|
|
||||||
enabled: true
|
|
||||||
|
|
||||||
statefulSet:
|
|
||||||
enabled: true
|
|
||||||
|
|
||||||
tsdb:
|
|
||||||
out_of_order_time_window: 10s
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
# Test case: set meta labels
|
|
||||||
commonMetaLabels:
|
|
||||||
ci: "true"
|
|
||||||
env: "ci"
|
|
||||||
@ -1,13 +0,0 @@
|
|||||||
---
|
|
||||||
## Test case: set PVC retention policy in statefulset
|
|
||||||
server:
|
|
||||||
automountServiceAccountToken: true
|
|
||||||
|
|
||||||
statefulSet:
|
|
||||||
enabled: true
|
|
||||||
pvcDeleteOnStsDelete: true
|
|
||||||
pvcDeleteOnStsScale: true
|
|
||||||
|
|
||||||
persistentVolume:
|
|
||||||
enabled: true
|
|
||||||
size: 2Gi
|
|
||||||
@ -1,18 +0,0 @@
|
|||||||
---
|
|
||||||
## Test case: run standalone Prometheus deployment
|
|
||||||
alertmanager:
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
kube-state-metrics:
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
prometheus-node-exporter:
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
prometheus-pushgateway:
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
server:
|
|
||||||
automountServiceAccountToken: true
|
|
||||||
persistentVolume:
|
|
||||||
enabled: false
|
|
||||||
@ -1,114 +0,0 @@
|
|||||||
---
|
|
||||||
## Test case: Prometheus with namespaced SD
|
|
||||||
## Prometheus runs service discovery (SD) in its own namespace only.
|
|
||||||
## A custom cluster role is set up and bound to SA through a role binding
|
|
||||||
## in the given namespace. Prometheus *must* be told that its SD
|
|
||||||
## is namespaced by means of 'scrape_configs.kubernetes_sd_configs.namespaces'.
|
|
||||||
server:
|
|
||||||
automountServiceAccountToken: true
|
|
||||||
namespaces: []
|
|
||||||
releaseNamespace: true
|
|
||||||
useExistingClusterRoleName: "prometheus-cluster-role"
|
|
||||||
|
|
||||||
persistentVolume:
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
alertmanager:
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
kube-state-metrics:
|
|
||||||
enabled: true
|
|
||||||
|
|
||||||
prometheus-node-exporter:
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
prometheus-pushgateway:
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
serverFiles:
|
|
||||||
prometheus.yml:
|
|
||||||
scrape_configs:
|
|
||||||
- job_name: "prometheus"
|
|
||||||
static_configs:
|
|
||||||
- targets:
|
|
||||||
- localhost:9090
|
|
||||||
- job_name: "kubernetes-service-endpoints"
|
|
||||||
honor_labels: true
|
|
||||||
kubernetes_sd_configs:
|
|
||||||
- role: endpoints
|
|
||||||
namespaces:
|
|
||||||
own_namespace: true
|
|
||||||
relabel_configs:
|
|
||||||
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape]
|
|
||||||
action: keep
|
|
||||||
regex: true
|
|
||||||
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]
|
|
||||||
action: replace
|
|
||||||
target_label: __scheme__
|
|
||||||
regex: (https?)
|
|
||||||
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]
|
|
||||||
action: replace
|
|
||||||
target_label: __metrics_path__
|
|
||||||
regex: (.+)
|
|
||||||
- source_labels:
|
|
||||||
- __address__
|
|
||||||
- __meta_kubernetes_service_annotation_prometheus_io_port
|
|
||||||
action: replace
|
|
||||||
target_label: __address__
|
|
||||||
regex: (.+?)(?::\d+)?;(\d+)
|
|
||||||
replacement: $1:$2
|
|
||||||
- action: labelmap
|
|
||||||
regex: __meta_kubernetes_service_label_(.+)
|
|
||||||
- source_labels: [__meta_kubernetes_namespace]
|
|
||||||
action: replace
|
|
||||||
target_label: namespace
|
|
||||||
- source_labels: [__meta_kubernetes_service_name]
|
|
||||||
action: replace
|
|
||||||
target_label: service
|
|
||||||
- source_labels: [__meta_kubernetes_pod_node_name]
|
|
||||||
action: replace
|
|
||||||
target_label: node
|
|
||||||
|
|
||||||
extraManifests:
|
|
||||||
- |
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: ClusterRole
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
{{- include "prometheus.server.labels" . | nindent 4 }}
|
|
||||||
name: prometheus-cluster-role
|
|
||||||
rules:
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- services
|
|
||||||
- endpoints
|
|
||||||
- pods
|
|
||||||
- ingresses
|
|
||||||
- configmaps
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
- apiGroups:
|
|
||||||
- "extensions"
|
|
||||||
- "networking.k8s.io"
|
|
||||||
resources:
|
|
||||||
- ingresses/status
|
|
||||||
- ingresses
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
- apiGroups:
|
|
||||||
- "discovery.k8s.io"
|
|
||||||
resources:
|
|
||||||
- endpointslices
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
- nonResourceURLs:
|
|
||||||
- "/metrics"
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
@ -1 +0,0 @@
|
|||||||
## Test case: use chart's default values
|
|
||||||
@ -1,16 +0,0 @@
|
|||||||
---
|
|
||||||
## Test case: add ingress, also using tpl
|
|
||||||
global:
|
|
||||||
default:
|
|
||||||
hostname: "example.com"
|
|
||||||
|
|
||||||
server:
|
|
||||||
ingress:
|
|
||||||
enabled: true
|
|
||||||
ingressClassName: nginx
|
|
||||||
hosts:
|
|
||||||
- '{{ $.Values.global.default.hostname }}'
|
|
||||||
tls:
|
|
||||||
- secretName: ingress-tls-certificate
|
|
||||||
hosts:
|
|
||||||
- '{{ $.Values.global.default.hostname }}'
|
|
||||||
@ -1,21 +0,0 @@
|
|||||||
---
|
|
||||||
## Test case: pod disruption budget
|
|
||||||
alertmanager:
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
kube-state-metrics:
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
prometheus-node-exporter:
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
prometheus-pushgateway:
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
server:
|
|
||||||
persistentVolume:
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
podDisruptionBudget:
|
|
||||||
enabled: true
|
|
||||||
minAvailable: 1
|
|
||||||
@ -33,4 +33,3 @@ server:
|
|||||||
- web.enable-lifecycle
|
- web.enable-lifecycle
|
||||||
|
|
||||||
retention: "15d"
|
retention: "15d"
|
||||||
# delete this comment is just a fake comment
|
|
||||||
|
|||||||
@ -2,10 +2,15 @@ The Prometheus server can be accessed via port {{ .Values.server.service.service
|
|||||||
{{ template "prometheus.server.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local
|
{{ template "prometheus.server.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local
|
||||||
|
|
||||||
{{ if .Values.server.ingress.enabled -}}
|
{{ if .Values.server.ingress.enabled -}}
|
||||||
From outside the cluster, the server URL(s) are:
|
For access from outside the cluster, the server URL(s) are:
|
||||||
{{- range .Values.server.ingress.hosts }}
|
{{- range .Values.server.ingress.hosts }}
|
||||||
http://{{ tpl . $ }}
|
http://{{ tpl . $ }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
{{- else if .Values.server.route.main.enabled }}
|
||||||
|
For access from outside the cluster, the server URL(s) are:
|
||||||
|
{{- range .Values.server.route.main.hostnames }}
|
||||||
|
http://{{ tpl . $ }}
|
||||||
|
{{- end }}
|
||||||
{{- else }}
|
{{- else }}
|
||||||
Get the Prometheus server URL by running these commands in the same shell:
|
Get the Prometheus server URL by running these commands in the same shell:
|
||||||
{{- if contains "NodePort" .Values.server.service.type }}
|
{{- if contains "NodePort" .Values.server.service.type }}
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
{{- if (empty .Values.server.configMapOverrideName) -}}
|
{{- if and (empty .Values.server.configMapOverrideName) (empty .Values.server.configFromSecret) -}}
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: ConfigMap
|
kind: ConfigMap
|
||||||
metadata:
|
metadata:
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user