From aef5f4a38e183de13706e6878367b8d91371b983 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=B6khan=20Aslan?= Date: Tue, 1 Sep 2026 09:15:09 +0200 Subject: [PATCH] fix(alerts): add namespace to KubePodNotReady pod_info join MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The KubePodNotReady expression joined kube_pod_status_phase / kube_pod_status_ready against kube_pod_info using `on(pod) group_left(node)`. Matching on the pod name alone is not unique once two pods in different namespaces share the same name (common across Gardener shoot namespaces), which makes the vector match many-to-many and fails rule evaluation with "many-to-many matching not allowed". Match on (pod, namespace) and carry the namespace label on the right-hand aggregation so the join is one-to-one, matching the pattern already used by the kubePodLabelsJoin helper. Bump chart version to 1.3.3 in Chart.yaml and plugindefinition.yaml (spec.version and helmChart.version). Signed-off-by: Gökhan Aslan --- charts/kubernetes-operations/Chart.yaml | 2 +- charts/kubernetes-operations/alerts/kubernetes-health.yaml | 4 ++-- charts/kubernetes-operations/plugindefinition.yaml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/charts/kubernetes-operations/Chart.yaml b/charts/kubernetes-operations/Chart.yaml index f0288fa..0328b49 100644 --- a/charts/kubernetes-operations/Chart.yaml +++ b/charts/kubernetes-operations/Chart.yaml @@ -3,7 +3,7 @@ apiVersion: v2 name: kubernetes-operations -version: 1.3.2 +version: 1.3.3 description: A set of Perses dashboards and Prometheus alerting rules combined with playbooks to ensure effective operations of Kubernetes. maintainers: - name: richardtief diff --git a/charts/kubernetes-operations/alerts/kubernetes-health.yaml b/charts/kubernetes-operations/alerts/kubernetes-health.yaml index b36ad29..7ebcaa1 100644 --- a/charts/kubernetes-operations/alerts/kubernetes-health.yaml +++ b/charts/kubernetes-operations/alerts/kubernetes-health.yaml @@ -112,10 +112,10 @@ groups: expr: | ( (max by (namespace, pod, node, phase) (kube_pod_status_phase{phase="Running"}) - * on(pod) group_left(node) max by (node, pod) (kube_pod_info)) + * on(pod, namespace) group_left(node) max by (node, pod, namespace) (kube_pod_info)) * on(pod, node, namespace) (max by (namespace, pod, node, phase) (kube_pod_status_ready{condition="false"}) - * on(pod) group_left(node) max by (node, pod) (kube_pod_info)) + * on(pod, namespace) group_left(node) max by (node, pod, namespace) (kube_pod_info)) * on(node) group_left() kube_node_status_condition{condition="Ready",status="true"}==1 ) diff --git a/charts/kubernetes-operations/plugindefinition.yaml b/charts/kubernetes-operations/plugindefinition.yaml index 0ca3979..0e733ec 100644 --- a/charts/kubernetes-operations/plugindefinition.yaml +++ b/charts/kubernetes-operations/plugindefinition.yaml @@ -9,7 +9,7 @@ kind: PluginDefinition metadata: name: kubernetes-operations spec: - version: 1.3.2 + version: 1.3.3 displayName: Kubernetes operations bundle description: Operations bundle for Kubernetes docMarkDownUrl: https://raw.githubusercontent.com/cloudoperators/kubernetes-operations/main/README.md @@ -17,7 +17,7 @@ spec: helmChart: name: kubernetes-operations repository: oci://ghcr.io/cloudoperators/kubernetes-operations/charts - version: 1.3.2 + version: 1.3.3 options: - name: prometheusRules.create description: Create Prometheus rules