From 3043f9edaa9ac35ffadeb4897585109e01ff1f8e Mon Sep 17 00:00:00 2001 From: Philippe Merle Date: Fri, 27 Dec 2024 13:57:54 +0100 Subject: [PATCH] Improve diagram nodes clusters management --- bin/kube-diagrams | 32 +++++++++++++++++++------------- bin/kube-diagrams.yaml | 18 ++++++++++++------ 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/bin/kube-diagrams b/bin/kube-diagrams index 7fdac7f..63a4f13 100755 --- a/bin/kube-diagrams +++ b/bin/kube-diagrams @@ -309,25 +309,31 @@ with open(args.filename) as f: cluster = resource_cluster.get_or_create_cluster("Namespace: %s" % name) else: cluster = resource_cluster - cluster.resources[rid] = resource else: # scope = Namespaced rid = name + "/" + get_namespace(resource) + "/" + get_type(resource) resources[rid] = resource cluster = resource_cluster.get_or_create_cluster("Namespace: %s" % get_namespace(resource)) - def process_clusters(cluster, resource, clusters): - for cluster_config in clusters: - data = query_path(resource, cluster_config["path"]) - if data != None: - cluster = cluster.get_or_create_cluster("%s: %s" % (cluster_config["label"], data)) + + def process_clusters(cluster, resource, clusters): + for cluster_config in clusters: + if "label" in cluster_config: + label = cluster_config["label"] + labels = query_path(resource, "metadata.labels") + if labels != None and label in labels: + cluster = cluster.get_or_create_cluster("%s: %s" % ( + cluster_config["title"], + labels[label] + )) clusters.remove(cluster_config) return process_clusters(cluster, resource, clusters) - return cluster - cluster = process_clusters( - cluster, - resource, - copy.deepcopy(config.get("clusters", [])) - ) - cluster.resources[rid] = resource + return cluster + + cluster = process_clusters( + cluster, + resource, + copy.deepcopy(config.get("clusters", [])) + ) + cluster.resources[rid] = resource if resource["kind"] == "List": for r in resource["items"]: diff --git a/bin/kube-diagrams.yaml b/bin/kube-diagrams.yaml index 25b3e94..3d29932 100644 --- a/bin/kube-diagrams.yaml +++ b/bin/kube-diagrams.yaml @@ -11,12 +11,18 @@ edges: UNDEFINED: color: red clusters: - - label: K8s Application - path: metadata.labels.k8s-app - - label: Application - path: metadata.labels.app - - label: Microservice - path: metadata.labels.service + - label: app + title: Application + - label: service + title: Microservice + - label: app.kubernetes.io/instance + title: K8s Application + - label: k8s-app + title: K8s Application + - label: kubernetes.io/bootstrapping + title: K8s Bootstrapping + - label: tier + title: K8s Tier nodes: ClusterRole/rbac.authorization.k8s.io/v1: scope: Cluster