From 757f99fd796c5113426e99d965cbbb8a53a80310 Mon Sep 17 00:00:00 2001 From: Vlad Ionescu Date: Thu, 19 Dec 2019 02:45:56 +0200 Subject: [PATCH] [stable/prometheus] Add PodDisruptionBudget support (#19670) * [stable/prometheus] Add PodDisruptionBudget support Signed-off-by: Vlad Ionescu * PDB should be false by default Signed-off-by: Vlad Ionescu * Formatting fixes Signed-off-by: Vlad Ionescu --- stable/prometheus/Chart.yaml | 2 +- stable/prometheus/README.md | 10 ++++++ .../templates/alertmanager-pdb.yaml | 13 +++++++ .../templates/kube-state-metrics-pdb.yaml | 13 +++++++ .../prometheus/templates/pushgateway-pdb.yaml | 13 +++++++ stable/prometheus/templates/server-pdb.yaml | 13 +++++++ stable/prometheus/values.yaml | 35 +++++++++++++++++++ 7 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 stable/prometheus/templates/alertmanager-pdb.yaml create mode 100644 stable/prometheus/templates/kube-state-metrics-pdb.yaml create mode 100644 stable/prometheus/templates/pushgateway-pdb.yaml create mode 100644 stable/prometheus/templates/server-pdb.yaml diff --git a/stable/prometheus/Chart.yaml b/stable/prometheus/Chart.yaml index b2d9f43cb8..17223d65b8 100755 --- a/stable/prometheus/Chart.yaml +++ b/stable/prometheus/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v1 name: prometheus -version: 9.5.6 +version: 9.6.0 appVersion: 2.13.1 description: Prometheus is a monitoring system and time series database. home: https://prometheus.io/ diff --git a/stable/prometheus/README.md b/stable/prometheus/README.md index 952ec4cc1c..f0422709cc 100644 --- a/stable/prometheus/README.md +++ b/stable/prometheus/README.md @@ -117,6 +117,8 @@ Parameter | Description | Default `alertmanager.nodeSelector` | node labels for alertmanager pod assignment | `{}` `alertmanager.tolerations` | node taints to tolerate (requires Kubernetes >=1.6) | `[]` `alertmanager.affinity` | pod affinity | `{}` +`alertmanager.podDisruptionBudget.enabled` | If true, create a PodDisruptionBudget | `false` +`alertmanager.podDisruptionBudget.maxUnavailable` | Maximum unavailable instances in PDB | `1` `alertmanager.schedulerName` | alertmanager alternate scheduler name | `nil` `alertmanager.persistentVolume.enabled` | If true, alertmanager will create a Persistent Volume Claim | `true` `alertmanager.persistentVolume.accessModes` | alertmanager data Persistent Volume access modes | `[ReadWriteOnce]` @@ -173,6 +175,8 @@ Parameter | Description | Default `kubeStateMetrics.podSecurityPolicy.annotations` | Specify pod annotations in the pod security policy | `{}` | `kubeStateMetrics.tolerations` | node taints to tolerate (requires Kubernetes >=1.6) | `[]` `kubeStateMetrics.replicaCount` | desired number of kube-state-metrics pods | `1` +`kubeStateMetrics.podDisruptionBudget.enabled` | If true, create a PodDisruptionBudget | `false` +`kubeStateMetrics.podDisruptionBudget.maxUnavailable` | Maximum unavailable instances in PDB | `1` `kubeStateMetrics.priorityClassName` | kube-state-metrics priorityClassName | `nil` `kubeStateMetrics.resources` | kube-state-metrics resource requests and limits (YAML) | `{}` `kubeStateMetrics.securityContext` | Custom [security context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) for kube-state-metrics containers | `{}` @@ -196,6 +200,8 @@ Parameter | Description | Default `nodeExporter.nodeSelector` | node labels for node-exporter pod assignment | `{}` `nodeExporter.podAnnotations` | annotations to be added to node-exporter pods | `{}` `nodeExporter.pod.labels` | labels to be added to node-exporter pods | `{}` +`nodeExporter.podDisruptionBudget.enabled` | If true, create a PodDisruptionBudget | `false` +`nodeExporter.podDisruptionBudget.maxUnavailable` | Maximum unavailable instances in PDB | `1` `nodeExporter.podSecurityPolicy.annotations` | Specify pod annotations in the pod security policy | `{}` | `nodeExporter.podSecurityPolicy.enabled` | Specify if a Pod Security Policy for node-exporter must be created | `false` `nodeExporter.tolerations` | node taints to tolerate (requires Kubernetes >=1.6) | `[]` @@ -227,6 +233,8 @@ Parameter | Description | Default `pushgateway.podSecurityPolicy.annotations` | Specify pod annotations in the pod security policy | `{}` | `pushgateway.tolerations` | node taints to tolerate (requires Kubernetes >=1.6) | `[]` `pushgateway.replicaCount` | desired number of pushgateway pods | `1` +`pushgateway.podDisruptionBudget.enabled` | If true, create a PodDisruptionBudget | `false` +`pushgateway.podDisruptionBudget.maxUnavailable` | Maximum unavailable instances in PDB | `1` `pushgateway.schedulerName` | pushgateway alternate scheduler name | `nil` `pushgateway.persistentVolume.enabled` | If true, Prometheus pushgateway will create a Persistent Volume Claim | `false` `pushgateway.persistentVolume.accessModes` | Prometheus pushgateway data Persistent Volume access modes | `[ReadWriteOnce]` @@ -278,6 +286,8 @@ Parameter | Description | Default `server.nodeSelector` | node labels for Prometheus server pod assignment | `{}` `server.tolerations` | node taints to tolerate (requires Kubernetes >=1.6) | `[]` `server.affinity` | pod affinity | `{}` +`server.podDisruptionBudget.enabled` | If true, create a PodDisruptionBudget | `false` +`server.podDisruptionBudget.maxUnavailable` | Maximum unavailable instances in PDB | `1` `server.priorityClassName` | Prometheus server priorityClassName | `nil` `server.schedulerName` | Prometheus server alternate scheduler name | `nil` `server.persistentVolume.enabled` | If true, Prometheus server will create a Persistent Volume Claim | `true` diff --git a/stable/prometheus/templates/alertmanager-pdb.yaml b/stable/prometheus/templates/alertmanager-pdb.yaml new file mode 100644 index 0000000000..c38df77a77 --- /dev/null +++ b/stable/prometheus/templates/alertmanager-pdb.yaml @@ -0,0 +1,13 @@ +{{- if .Values.alertmanager.podDisruptionBudget.enabled }} +apiVersion: policy/v1beta1 +kind: PodDisruptionBudget +metadata: + name: {{ template "prometheus.alertmanager.fullname" . }} + labels: + {{- include "prometheus.alertmanager.labels" . | nindent 4 }} +spec: + maxUnavailable: {{ .Values.alertmanager.podDisruptionBudget.maxUnavailable }} + selector: + matchLabels: + {{- include "prometheus.alertmanager.labels" . | nindent 6 }} +{{- end }} diff --git a/stable/prometheus/templates/kube-state-metrics-pdb.yaml b/stable/prometheus/templates/kube-state-metrics-pdb.yaml new file mode 100644 index 0000000000..3f3411d963 --- /dev/null +++ b/stable/prometheus/templates/kube-state-metrics-pdb.yaml @@ -0,0 +1,13 @@ +{{- if .Values.kubeStateMetrics.podDisruptionBudget.enabled }} +apiVersion: policy/v1beta1 +kind: PodDisruptionBudget +metadata: + name: {{ template "prometheus.kubeStateMetrics.fullname" . }} + labels: + {{- include "prometheus.kubeStateMetrics.labels" . | nindent 4 }} +spec: + maxUnavailable: {{ .Values.kubeStateMetrics.podDisruptionBudget.maxUnavailable }} + selector: + matchLabels: + {{- include "prometheus.kubeStateMetrics.labels" . | nindent 6 }} +{{- end }} diff --git a/stable/prometheus/templates/pushgateway-pdb.yaml b/stable/prometheus/templates/pushgateway-pdb.yaml new file mode 100644 index 0000000000..e9910a5c88 --- /dev/null +++ b/stable/prometheus/templates/pushgateway-pdb.yaml @@ -0,0 +1,13 @@ +{{- if .Values.pushgateway.podDisruptionBudget.enabled }} +apiVersion: policy/v1beta1 +kind: PodDisruptionBudget +metadata: + name: {{ template "prometheus.pushgateway.fullname" . }} + labels: + {{- include "prometheus.pushgateway.labels" . | nindent 4 }} +spec: + maxUnavailable: {{ .Values.pushgateway.podDisruptionBudget.maxUnavailable }} + selector: + matchLabels: + {{- include "prometheus.pushgateway.labels" . | nindent 6 }} +{{- end }} diff --git a/stable/prometheus/templates/server-pdb.yaml b/stable/prometheus/templates/server-pdb.yaml new file mode 100644 index 0000000000..b2447fdba2 --- /dev/null +++ b/stable/prometheus/templates/server-pdb.yaml @@ -0,0 +1,13 @@ +{{- if .Values.server.podDisruptionBudget.enabled }} +apiVersion: policy/v1beta1 +kind: PodDisruptionBudget +metadata: + name: {{ template "prometheus.server.fullname" . }} + labels: + {{- include "prometheus.server.labels" . | nindent 4 }} +spec: + maxUnavailable: {{ .Values.server.podDisruptionBudget.maxUnavailable }} + selector: + matchLabels: + {{- include "prometheus.server.labels" . | nindent 6 }} +{{- end }} diff --git a/stable/prometheus/values.yaml b/stable/prometheus/values.yaml index 51bcb7b6e6..47ade67da8 100644 --- a/stable/prometheus/values.yaml +++ b/stable/prometheus/values.yaml @@ -149,6 +149,13 @@ alertmanager: ## affinity: {} + ## PodDisruptionBudget settings + ## ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/ + ## + podDisruptionBudget: + enabled: false + maxUnavailable: 1 + ## Use an alternate scheduler, e.g. "stork". ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ ## @@ -379,6 +386,13 @@ kubeStateMetrics: replicaCount: 1 + ## PodDisruptionBudget settings + ## ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/ + ## + podDisruptionBudget: + enabled: false + maxUnavailable: 1 + ## kube-state-metrics resource requests and limits ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/ ## @@ -504,6 +518,13 @@ nodeExporter: pod: labels: {} + ## PodDisruptionBudget settings + ## ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/ + ## + podDisruptionBudget: + enabled: false + maxUnavailable: 1 + ## node-exporter resource limits & requests ## Ref: https://kubernetes.io/docs/user-guide/compute-resources/ ## @@ -711,6 +732,13 @@ server: ## affinity: {} + ## PodDisruptionBudget settings + ## ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/ + ## + podDisruptionBudget: + enabled: false + maxUnavailable: 1 + ## Use an alternate scheduler, e.g. "stork". ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ ## @@ -970,6 +998,13 @@ pushgateway: replicaCount: 1 + ## PodDisruptionBudget settings + ## ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/ + ## + podDisruptionBudget: + enabled: false + maxUnavailable: 1 + ## pushgateway resource requests and limits ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/ ##