diff --git a/jsonnet/kube-prometheus/components/alertmanager.libsonnet b/jsonnet/kube-prometheus/components/alertmanager.libsonnet index 8dd14ba4e5c304274916f505783f277c86b26164..aca1a86619973961ef6cf4aee66414af5e34e1f4 100644 --- a/jsonnet/kube-prometheus/components/alertmanager.libsonnet +++ b/jsonnet/kube-prometheus/components/alertmanager.libsonnet @@ -165,6 +165,24 @@ function(params) { }, }, + podDisruptionBudget: { + apiVersion: 'policy/v1beta1', + kind: 'PodDisruptionBudget', + metadata: { + name: 'alertmanager-' + am.config.name, + namespace: am.config.namespace, + labels: am.config.commonLabels, + }, + spec: { + maxUnavailable: 1, + selector: { + matchLabels: { + alertmanager: am.config.name, + } + am.config.selectorLabels, + }, + }, + }, + alertmanager: { apiVersion: 'monitoring.coreos.com/v1', kind: 'Alertmanager', diff --git a/jsonnet/kube-prometheus/components/prometheus.libsonnet b/jsonnet/kube-prometheus/components/prometheus.libsonnet index 097243a0e074e9f0de62347c626ab54c26d629a8..1a82b3e620f9561160c8720976bf85a63be7e2fe 100644 --- a/jsonnet/kube-prometheus/components/prometheus.libsonnet +++ b/jsonnet/kube-prometheus/components/prometheus.libsonnet @@ -236,6 +236,24 @@ function(params) { items: [newSpecificRole(x) for x in p.config.namespaces], }, + podDisruptionBudget: { + apiVersion: 'policy/v1beta1', + kind: 'PodDisruptionBudget', + metadata: { + name: 'prometheus-' + p.config.name, + namespace: p.config.namespace, + labels: p.config.commonLabels, + }, + spec: { + minAvailable: 1, + selector: { + matchLabels: { + prometheus: p.config.name, + } + p.config.selectorLabels, + }, + }, + }, + prometheus: { apiVersion: 'monitoring.coreos.com/v1', kind: 'Prometheus', diff --git a/kustomization.yaml b/kustomization.yaml index 8cc445727d50f2be813a802abde8161681ac13fb..e23e2e6aa203e853e7470eab380150922035b9de 100644 --- a/kustomization.yaml +++ b/kustomization.yaml @@ -2,6 +2,7 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - ./manifests/alertmanager-alertmanager.yaml +- ./manifests/alertmanager-podDisruptionBudget.yaml - ./manifests/alertmanager-prometheusRule.yaml - ./manifests/alertmanager-secret.yaml - ./manifests/alertmanager-service.yaml @@ -58,6 +59,7 @@ resources: - ./manifests/prometheus-clusterRoleBinding.yaml - ./manifests/prometheus-operator-prometheusRule.yaml - ./manifests/prometheus-operator-serviceMonitor.yaml +- ./manifests/prometheus-podDisruptionBudget.yaml - ./manifests/prometheus-prometheus.yaml - ./manifests/prometheus-prometheusRule.yaml - ./manifests/prometheus-roleBindingConfig.yaml diff --git a/manifests/alertmanager-podDisruptionBudget.yaml b/manifests/alertmanager-podDisruptionBudget.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2dd132443e945201ca7b0c95b40801f20ee04b28 --- /dev/null +++ b/manifests/alertmanager-podDisruptionBudget.yaml @@ -0,0 +1,18 @@ +apiVersion: policy/v1beta1 +kind: PodDisruptionBudget +metadata: + labels: + app.kubernetes.io/component: alert-router + app.kubernetes.io/name: alertmanager + app.kubernetes.io/part-of: kube-prometheus + app.kubernetes.io/version: 0.21.0 + name: alertmanager-main + namespace: monitoring +spec: + maxUnavailable: 1 + selector: + matchLabels: + alertmanager: main + app.kubernetes.io/component: alert-router + app.kubernetes.io/name: alertmanager + app.kubernetes.io/part-of: kube-prometheus diff --git a/manifests/prometheus-podDisruptionBudget.yaml b/manifests/prometheus-podDisruptionBudget.yaml new file mode 100644 index 0000000000000000000000000000000000000000..4bc1a8d09e37a1f2705d250aaf59b6236b679c42 --- /dev/null +++ b/manifests/prometheus-podDisruptionBudget.yaml @@ -0,0 +1,18 @@ +apiVersion: policy/v1beta1 +kind: PodDisruptionBudget +metadata: + labels: + app.kubernetes.io/component: prometheus + app.kubernetes.io/name: prometheus + app.kubernetes.io/part-of: kube-prometheus + app.kubernetes.io/version: 2.25.0 + name: prometheus-k8s + namespace: monitoring +spec: + minAvailable: 1 + selector: + matchLabels: + app.kubernetes.io/component: prometheus + app.kubernetes.io/name: prometheus + app.kubernetes.io/part-of: kube-prometheus + prometheus: k8s