From edb327531d88d876b6b3532f2f759aefb1625280 Mon Sep 17 00:00:00 2001
From: karancode <karan.thanvi@paypay-corp.co.jp>
Date: Wed, 23 Oct 2019 00:15:25 +0900
Subject: [PATCH] update example

---
 docs/EKS-cni-support.md                       | 62 ++++++++++++++++---
 examples/eks-cni-example.jsonnet              | 55 ++++++++++++++++
 .../kube-prometheus-aws-eks-cni.libsonnet     | 45 --------------
 3 files changed, 109 insertions(+), 53 deletions(-)
 create mode 100644 examples/eks-cni-example.jsonnet
 delete mode 100644 jsonnet/kube-prometheus/kube-prometheus-aws-eks-cni.libsonnet

diff --git a/docs/EKS-cni-support.md b/docs/EKS-cni-support.md
index b75b749b..e41f38f8 100644
--- a/docs/EKS-cni-support.md
+++ b/docs/EKS-cni-support.md
@@ -5,14 +5,60 @@ AWS EKS uses [CNI](https://github.com/aws/amazon-vpc-cni-k8s) networking plugin
 One fatal issue that can occur is that you run out of IP addresses in your eks cluster. (Generally happens due to error configs where pods keep scheduling).
 
 You can monitor the `awscni` using kube-promethus with : 
-```
-local kp = (import 'kube-prometheus/kube-prometheus.libsonnet') +
-    (import 'kube-prometheus/kube-prometheus-aws-eks-cni.libsonnet') +
-	{
-        _config+:: {
-		# ... config here
-		}
-    };
+[embedmd]:# (../examples/eks-cni-example.jsonnet)
+```jsonnet
+local kp = (import 'kube-prometheus/kube-prometheus-eks.libsonnet') + {
+  local service = kp.core.v1.service,
+  local servicePort = kp.core.v1.service.mixin.spec.portsType,
+  _config+:: {
+    namespace: 'monitoring',
+  },
+  prometheus+: {
+    AwsEksCniMetricService:
+        service.new('aws-node', { 'k8s-app' : 'aws-node' } , servicePort.newNamed('cni-metrics-port', 61678, 61678)) +
+        service.mixin.metadata.withNamespace('kube-system') +
+        service.mixin.metadata.withLabels({ 'k8s-app': 'aws-node' }) +
+        service.mixin.spec.withClusterIp('None'),
+    serviceMonitorAwsEksCNI:
+      {
+        apiVersion: 'monitoring.coreos.com/v1',
+        kind: 'ServiceMonitor',
+        metadata: {
+          name: 'awsekscni',
+          namespace: kp.namespace,
+          labels: {
+            'k8s-app': 'eks-cni',
+          },
+        },
+        spec: {
+          jobLabel: 'k8s-app',
+          selector: {
+            matchLabels: {
+              'k8s-app': 'aws-node',
+            },
+          },
+          namespaceSelector: {
+            matchNames: [
+              'kube-system',
+            ],
+          },
+          endpoints: [
+            {
+              port: 'cni-metrics-port',
+              interval: '30s',
+              path: '/metrics',
+            },
+          ],
+        },
+      },
+  },
+};
+
+{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +
+{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +
+{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +
+{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +
+{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) }
 ```
 
 After you have the required yaml file please run
diff --git a/examples/eks-cni-example.jsonnet b/examples/eks-cni-example.jsonnet
new file mode 100644
index 00000000..62c9170c
--- /dev/null
+++ b/examples/eks-cni-example.jsonnet
@@ -0,0 +1,55 @@
+local kp = (import 'kube-prometheus/kube-prometheus-eks.libsonnet') + {
+  local service = kp.core.v1.service,
+  local servicePort = kp.core.v1.service.mixin.spec.portsType,
+  _config+:: {
+    namespace: 'monitoring',
+  },
+  prometheus+: {
+    AwsEksCniMetricService:
+        service.new('aws-node', { 'k8s-app' : 'aws-node' } , servicePort.newNamed('cni-metrics-port', 61678, 61678)) +
+        service.mixin.metadata.withNamespace('kube-system') +
+        service.mixin.metadata.withLabels({ 'k8s-app': 'aws-node' }) +
+        service.mixin.spec.withClusterIp('None'),
+    serviceMonitorAwsEksCNI:
+      {
+        apiVersion: 'monitoring.coreos.com/v1',
+        kind: 'ServiceMonitor',
+        metadata: {
+          name: 'awsekscni',
+          namespace: kp.namespace,
+          labels: {
+            'k8s-app': 'eks-cni',
+          },
+        },
+        spec: {
+          jobLabel: 'k8s-app',
+          selector: {
+            matchLabels: {
+              'k8s-app': 'aws-node',
+            },
+          },
+          namespaceSelector: {
+            matchNames: [
+              'kube-system',
+            ],
+          },
+          endpoints: [
+            {
+              port: 'cni-metrics-port',
+              interval: '30s',
+              path: '/metrics',
+            },
+          ],
+        },
+      },
+  },
+};
+
+{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +
+{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +
+{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +
+{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +
+{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +
+{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +
+{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } +
+{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }
diff --git a/jsonnet/kube-prometheus/kube-prometheus-aws-eks-cni.libsonnet b/jsonnet/kube-prometheus/kube-prometheus-aws-eks-cni.libsonnet
deleted file mode 100644
index aa749534..00000000
--- a/jsonnet/kube-prometheus/kube-prometheus-aws-eks-cni.libsonnet
+++ /dev/null
@@ -1,45 +0,0 @@
-local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
-local service = k.core.v1.service;
-local servicePort = k.core.v1.service.mixin.spec.portsType;
-
-{
-  prometheus+: {
-    AwsEksCniMetricService:
-        service.new('aws-node', { 'k8s-app' : 'aws-node' } , servicePort.newNamed('cni-metrics-port', 61678, 61678)) +
-        service.mixin.metadata.withNamespace('kube-system') +
-        service.mixin.metadata.withLabels({ 'k8s-app': 'aws-node' }) +
-        service.mixin.spec.withClusterIp('None'),
-    serviceMonitorAwsEksCNI:
-      {
-        apiVersion: 'monitoring.coreos.com/v1',
-        kind: 'ServiceMonitor',
-        metadata: {
-          name: 'awsekscni',
-          namespace: 'monitoring',
-          labels: {
-            'k8s-app': 'eks-cni',
-          },
-        },
-        spec: {
-          jobLabel: 'k8s-app',
-          selector: {
-            matchLabels: {
-              'k8s-app': 'aws-node',
-            },
-          },
-          namespaceSelector: {
-            matchNames: [
-              'kube-system',
-            ],
-          },
-          endpoints: [
-            {
-              port: 'cni-metrics-port',
-              interval: '30s',
-              path: '/metrics',
-            },
-          ],
-        },
-      },
-  },
-}
-- 
GitLab