From 1af086536629e112a2eab5e0f4c25bcf4fcaa3ef Mon Sep 17 00:00:00 2001 From: Philippe Merle Date: Wed, 5 Mar 2025 11:47:27 +0100 Subject: [PATCH] Add a label to service to workload edges. The label is . --- bin/kube-diagrams | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/bin/kube-diagrams b/bin/kube-diagrams index 2df79e2..09bcd07 100755 --- a/bin/kube-diagrams +++ b/bin/kube-diagrams @@ -589,7 +589,22 @@ class EdgesContext(list): Add edges from a service resource to workload resources, endpoint slices and endpoints. """ - self.add_all_workload_resources("spec.selector") + labels = [] + for service_port in query_path(self.resource, "spec.ports", []): + port = service_port.get('port') + targetPort = service_port.get('targetPort') + protocol = service_port.get('protocol', 'TCP') + if targetPort is None or targetPort == port: + label = f"{port}/{protocol}" + else: + label = f"{port}->{targetPort}/{protocol}" + labels.append(label) + edge = { + **get_edge_config("SELECTOR"), + "label": f" {'\n'.join(labels)}", + "fontsize": "10" + } + self.add_all_workload_resources("spec.selector", edge_kind=edge) self.add_all_resources_matching_labels( "EndpointSlice", { @@ -809,9 +824,9 @@ def process_edges(): else: edge_configuration = get_edge_config(edge_name) if edge_configuration.get("direction") == "up": - _ = diagram_nodes[edge_from] \ + _ = diagram_nodes[edge_to] \ >> Edge(**get_edge_config("INVISIBLE")) \ - >> diagram_nodes[edge_to] + >> diagram_nodes[edge_from] _ = diagram_nodes[edge_from] \ >> Edge(**edge_configuration) \ >> diagram_nodes[edge_to]