From f36742b2cea74dca67ead5d42b507b2d9cfc232a Mon Sep 17 00:00:00 2001 From: Philippe Merle Date: Sun, 5 Jan 2025 16:13:51 +0100 Subject: [PATCH] Add a corrected architecture diagram --- examples/kube-prometheus-stack/README.md | 5 + examples/kube-prometheus-stack/generate.sh | 2 +- .../kube-prometheus-stack-corrected.png | Bin 0 -> 1288323 bytes .../kube-prometheus-stack-corrected.yaml | 7144 +++++++++++++++++ 4 files changed, 7150 insertions(+), 1 deletion(-) create mode 100644 examples/kube-prometheus-stack/kube-prometheus-stack-corrected.png create mode 100644 examples/kube-prometheus-stack/kube-prometheus-stack-corrected.yaml diff --git a/examples/kube-prometheus-stack/README.md b/examples/kube-prometheus-stack/README.md index 44935ca..7a7bd2d 100644 --- a/examples/kube-prometheus-stack/README.md +++ b/examples/kube-prometheus-stack/README.md @@ -13,3 +13,8 @@ $ ./helm-diagrams https://prometheus-community.github.io/helm-charts/kube-promet Architecture diagram for the **Kube Prometheus Stack** chart: ![kube-prometheus-stack.png](kube-prometheus-stack.png) + +**Note**: The previous diagram shows that some metadata labels seem to be incorrectly used in the **Kube Prometheus Stack** chart. File [kube-prometheus-stack-corrected.yaml](kube-prometheus-stack-corrected.yaml) contains some possible corrections illustrated in the following diagram. + +Corrected architecture diagram for the **Kube Prometheus Stack** chart: +![kube-prometheus-stack-corrected.png](kube-prometheus-stack-corrected.png) diff --git a/examples/kube-prometheus-stack/generate.sh b/examples/kube-prometheus-stack/generate.sh index dd017d0..20f67c1 100755 --- a/examples/kube-prometheus-stack/generate.sh +++ b/examples/kube-prometheus-stack/generate.sh @@ -4,4 +4,4 @@ PATH=../../bin:$PATH helm-diagrams https://prometheus-community.github.io/helm-charts/kube-prometheus-stack -#TODO: kube-diagrams -c KubeDiagrams.yaml kube-prometheus-stack-corrected.yaml +kube-diagrams --without-namespace -c KubeDiagrams.yaml kube-prometheus-stack-corrected.yaml diff --git a/examples/kube-prometheus-stack/kube-prometheus-stack-corrected.png b/examples/kube-prometheus-stack/kube-prometheus-stack-corrected.png new file mode 100644 index 0000000000000000000000000000000000000000..0334420b838aa1b1c6268f5dc9d4ad724975782a GIT binary patch literal 1288323 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