From 2b9743fbb9913bed8f5567cd9ac8d2441b817c96 Mon Sep 17 00:00:00 2001 From: Philippe Merle Date: Tue, 5 Aug 2025 14:40:21 +0300 Subject: [PATCH] Change how services, network and PodDisruptionBudget policies are bound to either pods or workloads --- bin/kube-diagrams | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/bin/kube-diagrams b/bin/kube-diagrams index 3ed2fc5..2a89a74 100755 --- a/bin/kube-diagrams +++ b/bin/kube-diagrams @@ -839,16 +839,23 @@ class EdgesContext(list): selector = query_path(self.resource, path, default_selector) if selector is None: return - build_in_workload_resources = { - "Pod": "metadata.labels", - "PodTemplate": "template.metadata.labels", - "Deployment": "spec.template.metadata.labels", - "ReplicaSet": "spec.template.metadata.labels", - "ReplicationController": "spec.template.metadata.labels", - "StatefulSet": "spec.template.metadata.labels", - "DaemonSet": "spec.template.metadata.labels", - "Job": "spec.template.metadata.labels", - } + if query_path(self.resource, "metadata.uid") is not None: + # If the resource is deployed then binds it to pods only. + build_in_workload_resources = { + "Pod": "metadata.labels", + } + else: + # If the resource is not deployed then binds it to workloads or pods. + build_in_workload_resources = { + "Deployment": "spec.template.metadata.labels", + "ReplicaSet": "spec.template.metadata.labels", + "ReplicationController": "spec.template.metadata.labels", + "StatefulSet": "spec.template.metadata.labels", + "DaemonSet": "spec.template.metadata.labels", + "Job": "spec.template.metadata.labels", + "PodTemplate": "template.metadata.labels", + "Pod": "metadata.labels", + } resource_not_found = True for kind, label in build_in_workload_resources.items(): if self.add_all_resources_matching_labels(