From b59b2c23d85292e559750feca9fee9d3041989b8 Mon Sep 17 00:00:00 2001
From: Damien Grisonnet <dgrisonn@redhat.com>
Date: Tue, 6 Apr 2021 11:33:07 +0200
Subject: [PATCH] examples: update platform snippets and doc

Signed-off-by: Damien Grisonnet <dgrisonn@redhat.com>
---
 README.md                                     | 63 +++++--------------
 docs/EKS-cni-support.md                       |  6 +-
 examples/eks-cni-example.jsonnet              |  6 +-
 examples/jsonnet-snippets/aws.jsonnet         |  2 -
 examples/jsonnet-snippets/bootkube.jsonnet    |  2 -
 .../jsonnet-snippets/kops-coredns.jsonnet     |  3 -
 examples/jsonnet-snippets/kops.jsonnet        |  2 -
 examples/jsonnet-snippets/kubeadm.jsonnet     |  2 -
 examples/jsonnet-snippets/kubespray.jsonnet   |  2 -
 examples/jsonnet-snippets/platform.jsonnet    |  8 +++
 examples/minikube.jsonnet                     |  4 +-
 jsonnet/kube-prometheus/platforms/README.md   | 17 +----
 12 files changed, 37 insertions(+), 80 deletions(-)
 delete mode 100644 examples/jsonnet-snippets/aws.jsonnet
 delete mode 100644 examples/jsonnet-snippets/bootkube.jsonnet
 delete mode 100644 examples/jsonnet-snippets/kops-coredns.jsonnet
 delete mode 100644 examples/jsonnet-snippets/kops.jsonnet
 delete mode 100644 examples/jsonnet-snippets/kubeadm.jsonnet
 delete mode 100644 examples/jsonnet-snippets/kubespray.jsonnet
 create mode 100644 examples/jsonnet-snippets/platform.jsonnet

diff --git a/README.md b/README.md
index 794063bd..b6e7624f 100644
--- a/README.md
+++ b/README.md
@@ -360,57 +360,28 @@ Jsonnet is a turing complete language, any logic can be reflected in it. It also
 
 ### Cluster Creation Tools
 
-A common example is that not all Kubernetes clusters are created exactly the same way, meaning the configuration to monitor them may be slightly different. For [kubeadm](examples/jsonnet-snippets/kubeadm.jsonnet), [bootkube](examples/jsonnet-snippets/bootkube.jsonnet), [kops](examples/jsonnet-snippets/kops.jsonnet) and [kubespray](examples/jsonnet-snippets/kubespray.jsonnet) clusters there are mixins available to easily configure these:
+A common example is that not all Kubernetes clusters are created exactly the same way, meaning the configuration to monitor them may be slightly different. For the following clusters there are mixins available to easily configure them:
 
-kubeadm:
+* aws
+* bootkube
+* eks
+* gke
+* kops-coredns
+* kubeadm
+* kubespray
 
-[embedmd]:# (examples/jsonnet-snippets/kubeadm.jsonnet)
-```jsonnet
-(import 'kube-prometheus/main.libsonnet') +
-(import 'kube-prometheus/platforms/kubeadm.libsonnet')
-```
-
-bootkube:
-
-[embedmd]:# (examples/jsonnet-snippets/bootkube.jsonnet)
-```jsonnet
-(import 'kube-prometheus/main.libsonnet') +
-(import 'kube-prometheus/platforms/bootkube.libsonnet')
-```
-
-kops:
-
-[embedmd]:# (examples/jsonnet-snippets/kops.jsonnet)
-```jsonnet
-(import 'kube-prometheus/main.libsonnet') +
-(import 'kube-prometheus/platforms/kops.libsonnet')
-```
-
-kops with CoreDNS:
-
-If your kops cluster is using CoreDNS, there is an additional mixin to import.
+These mixins are selectable via the `platform` field of kubePrometheus:
 
-[embedmd]:# (examples/jsonnet-snippets/kops-coredns.jsonnet)
+[embedmd]:# (examples/jsonnet-snippets/platform.jsonnet)
 ```jsonnet
 (import 'kube-prometheus/main.libsonnet') +
-(import 'kube-prometheus/platforms/kops.libsonnet') +
-(import 'kube-prometheus/platforms/kops-coredns.libsonnet')
-```
-
-kubespray:
-
-[embedmd]:# (examples/jsonnet-snippets/kubespray.jsonnet)
-```jsonnet
-(import 'kube-prometheus/main.libsonnet') +
-(import 'kube-prometheus/platforms/kubespray.libsonnet')
-```
-
-aws:
-
-[embedmd]:# (examples/jsonnet-snippets/aws.jsonnet)
-```jsonnet
-(import 'kube-prometheus/main.libsonnet') +
-(import 'kube-prometheus/platforms/aws.libsonnet')
+{
+  values+:: {
+    kubePrometheus+: {
+      platform: 'example-platform',
+    },
+  },
+}
 ```
 
 ### Internal Registry
diff --git a/docs/EKS-cni-support.md b/docs/EKS-cni-support.md
index 266d5fcb..1cd8b146 100644
--- a/docs/EKS-cni-support.md
+++ b/docs/EKS-cni-support.md
@@ -7,12 +7,14 @@ One fatal issue that can occur is that you run out of IP addresses in your eks c
 You can monitor the `awscni` using kube-promethus with : 
 [embedmd]:# (../examples/eks-cni-example.jsonnet)
 ```jsonnet
-local kp = (import 'kube-prometheus/main.libsonnet') +
-           (import 'kube-prometheus/platforms/eks.libsonnet') + {
+local kp = (import 'kube-prometheus/main.libsonnet') + {
   values+:: {
     common+: {
       namespace: 'monitoring',
     },
+    kubePrometheus+: {
+      platform: 'eks',
+    },
   },
   kubernetesControlPlane+: {
     prometheusRuleEksCNI+: {
diff --git a/examples/eks-cni-example.jsonnet b/examples/eks-cni-example.jsonnet
index c92236fe..1b37af50 100644
--- a/examples/eks-cni-example.jsonnet
+++ b/examples/eks-cni-example.jsonnet
@@ -1,9 +1,11 @@
-local kp = (import 'kube-prometheus/main.libsonnet') +
-           (import 'kube-prometheus/platforms/eks.libsonnet') + {
+local kp = (import 'kube-prometheus/main.libsonnet') + {
   values+:: {
     common+: {
       namespace: 'monitoring',
     },
+    kubePrometheus+: {
+      platform: 'eks',
+    },
   },
   kubernetesControlPlane+: {
     prometheusRuleEksCNI+: {
diff --git a/examples/jsonnet-snippets/aws.jsonnet b/examples/jsonnet-snippets/aws.jsonnet
deleted file mode 100644
index 6eaca09f..00000000
--- a/examples/jsonnet-snippets/aws.jsonnet
+++ /dev/null
@@ -1,2 +0,0 @@
-(import 'kube-prometheus/main.libsonnet') +
-(import 'kube-prometheus/platforms/aws.libsonnet')
diff --git a/examples/jsonnet-snippets/bootkube.jsonnet b/examples/jsonnet-snippets/bootkube.jsonnet
deleted file mode 100644
index 3d9f3482..00000000
--- a/examples/jsonnet-snippets/bootkube.jsonnet
+++ /dev/null
@@ -1,2 +0,0 @@
-(import 'kube-prometheus/main.libsonnet') +
-(import 'kube-prometheus/platforms/bootkube.libsonnet')
diff --git a/examples/jsonnet-snippets/kops-coredns.jsonnet b/examples/jsonnet-snippets/kops-coredns.jsonnet
deleted file mode 100644
index d1af478b..00000000
--- a/examples/jsonnet-snippets/kops-coredns.jsonnet
+++ /dev/null
@@ -1,3 +0,0 @@
-(import 'kube-prometheus/main.libsonnet') +
-(import 'kube-prometheus/platforms/kops.libsonnet') +
-(import 'kube-prometheus/platforms/kops-coredns.libsonnet')
diff --git a/examples/jsonnet-snippets/kops.jsonnet b/examples/jsonnet-snippets/kops.jsonnet
deleted file mode 100644
index 9271b993..00000000
--- a/examples/jsonnet-snippets/kops.jsonnet
+++ /dev/null
@@ -1,2 +0,0 @@
-(import 'kube-prometheus/main.libsonnet') +
-(import 'kube-prometheus/platforms/kops.libsonnet')
diff --git a/examples/jsonnet-snippets/kubeadm.jsonnet b/examples/jsonnet-snippets/kubeadm.jsonnet
deleted file mode 100644
index 0750b4b3..00000000
--- a/examples/jsonnet-snippets/kubeadm.jsonnet
+++ /dev/null
@@ -1,2 +0,0 @@
-(import 'kube-prometheus/main.libsonnet') +
-(import 'kube-prometheus/platforms/kubeadm.libsonnet')
diff --git a/examples/jsonnet-snippets/kubespray.jsonnet b/examples/jsonnet-snippets/kubespray.jsonnet
deleted file mode 100644
index d9bb3bd5..00000000
--- a/examples/jsonnet-snippets/kubespray.jsonnet
+++ /dev/null
@@ -1,2 +0,0 @@
-(import 'kube-prometheus/main.libsonnet') +
-(import 'kube-prometheus/platforms/kubespray.libsonnet')
diff --git a/examples/jsonnet-snippets/platform.jsonnet b/examples/jsonnet-snippets/platform.jsonnet
new file mode 100644
index 00000000..a3ad9c3d
--- /dev/null
+++ b/examples/jsonnet-snippets/platform.jsonnet
@@ -0,0 +1,8 @@
+(import 'kube-prometheus/main.libsonnet') +
+{
+  values+:: {
+    kubePrometheus+: {
+      platform: 'example-platform',
+    },
+  },
+}
diff --git a/examples/minikube.jsonnet b/examples/minikube.jsonnet
index 87b88d69..c5a1bc68 100644
--- a/examples/minikube.jsonnet
+++ b/examples/minikube.jsonnet
@@ -1,6 +1,5 @@
 local kp =
   (import 'kube-prometheus/main.libsonnet') +
-  (import 'kube-prometheus/platforms/kubeadm.libsonnet') +
   // Note that NodePort type services is likely not a good idea for your production use case, it is only used for demonstration purposes here.
   (import 'kube-prometheus/addons/node-ports.libsonnet') +
   {
@@ -19,6 +18,9 @@ local kp =
           },
         },
       },
+      kubePrometheus+: {
+        platform: 'kubeadm',
+      },
     },
 
     // For simplicity, each of the following values for 'externalUrl':
diff --git a/jsonnet/kube-prometheus/platforms/README.md b/jsonnet/kube-prometheus/platforms/README.md
index 8edeade6..45eb76d1 100644
--- a/jsonnet/kube-prometheus/platforms/README.md
+++ b/jsonnet/kube-prometheus/platforms/README.md
@@ -1,18 +1,3 @@
 # Adding a new platform specific configuration
 
-Adding a new platform specific configuration requires to update the
-[platforms.jsonnet](./platform.jsonnet) file by adding the platform to the list
-of existing ones.
-
-This allow configuring the new platform in the following way:
-
-```jsonnet
-(import 'kube-prometheus/main.libsonnet') +
-  {
-    values+:: {
-      kubePrometheus+: {
-        platform: 'example-platform',
-      }
-    }
-  }
-```
+Adding a new platform specific configuration requires to update the [README](../../../README.md#cluster-creation-tools) and the [platforms.jsonnet](./platform.jsonnet) file by adding the platform to the list of existing ones. This allow the new platform to be discoverable and easily configurable by the users.
-- 
GitLab