From a0b1a93799033e3c195fbbda46e3fbe1c4d524dd Mon Sep 17 00:00:00 2001
From: Frederic Branczyk <fbranczyk@gmail.com>
Date: Tue, 18 Oct 2016 14:50:28 +0200
Subject: [PATCH] add node-exporter, kube-state-metrics, and alertmanager
 controller

Also ensure that all workloads have memory requirements and limits.
---
 .../controllers/alertmanager-controller.yaml  | 24 ++++++++++
 .../controllers/prometheus-controller.yaml    |  3 ++
 .../exporters/kube-state-metrics-bundle.yaml  | 45 ++++++++++++++++++
 manifests/exporters/node-exporter-bundle.yaml | 47 +++++++++++++++++++
 4 files changed, 119 insertions(+)
 create mode 100644 manifests/controllers/alertmanager-controller.yaml
 create mode 100644 manifests/exporters/kube-state-metrics-bundle.yaml
 create mode 100644 manifests/exporters/node-exporter-bundle.yaml

diff --git a/manifests/controllers/alertmanager-controller.yaml b/manifests/controllers/alertmanager-controller.yaml
new file mode 100644
index 00000000..a75cea91
--- /dev/null
+++ b/manifests/controllers/alertmanager-controller.yaml
@@ -0,0 +1,24 @@
+apiVersion: extensions/v1beta1
+kind: ReplicaSet
+metadata:
+  name: alertmanager-controller
+  labels:
+    controller: alertmanager
+spec:
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        controller: alertmanager
+    spec:
+      containers:
+       - name: alertmanager-controller
+         image: quay.io/coreos/kube-alertmanager-controller:latest
+         resources:
+           requests:
+             cpu: 100m
+             memory: 50Mi
+           limits:
+             cpu: 200m
+             memory: 100Mi
+
diff --git a/manifests/controllers/prometheus-controller.yaml b/manifests/controllers/prometheus-controller.yaml
index 7c8e378e..f6893247 100644
--- a/manifests/controllers/prometheus-controller.yaml
+++ b/manifests/controllers/prometheus-controller.yaml
@@ -18,4 +18,7 @@ spec:
            requests:
              cpu: 100m
              memory: 50Mi
+           limits:
+             cpu: 200m
+             memory: 100Mi
       
diff --git a/manifests/exporters/kube-state-metrics-bundle.yaml b/manifests/exporters/kube-state-metrics-bundle.yaml
new file mode 100644
index 00000000..05a69b0b
--- /dev/null
+++ b/manifests/exporters/kube-state-metrics-bundle.yaml
@@ -0,0 +1,45 @@
+apiVersion: v1
+kind: Service
+metadata:
+  annotations:
+    prometheus.io/scrape: 'true'
+  labels:
+    app: kube-state-metrics
+    name: kube-state-metrics
+  name: kube-state-metrics
+spec:
+  clusterIP: None
+  ports:
+  - name: scrape
+    port: 8080
+    protocol: TCP
+  selector:
+    app: kube-state-metrics
+  type: ClusterIP
+---
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  name: kube-state-metrics
+spec:
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: kube-state-metrics
+      annotations:
+        prometheus.io/scrape: 'true'
+    spec:
+      containers:
+      - name: kube-state-metrics
+        image: gcr.io/google_containers/kube-state-metrics:v0.3.0
+        ports:
+        - containerPort: 8080
+        resources:
+          requests:
+            memory: 30Mi
+            cpu: 100m
+          limits:
+            memory: 50Mi
+            cpu: 200m
+
diff --git a/manifests/exporters/node-exporter-bundle.yaml b/manifests/exporters/node-exporter-bundle.yaml
new file mode 100644
index 00000000..164c8471
--- /dev/null
+++ b/manifests/exporters/node-exporter-bundle.yaml
@@ -0,0 +1,47 @@
+apiVersion: v1
+kind: Service
+metadata:
+  annotations:
+    prometheus.io/scrape: 'true'
+  labels:
+    app: node-exporter
+    name: node-exporter
+  name: node-exporter
+spec:
+  clusterIP: None
+  ports:
+  - name: scrape
+    port: 9100
+    protocol: TCP
+  selector:
+    app: node-exporter
+  type: ClusterIP
+---
+apiVersion: extensions/v1beta1
+kind: DaemonSet
+metadata:
+  name: node-exporter
+spec:
+  template:
+    metadata:
+      labels:
+        app: node-exporter
+      name: node-exporter
+    spec:
+      hostNetwork: true
+      hostPID: true
+      containers:
+      - image:  quay.io/prometheus/node-exporter:0.12.0
+        name: node-exporter
+        ports:
+        - containerPort: 9100
+          hostPort: 9100
+          name: scrape
+        resources:
+          requests:
+            memory: 30Mi
+            cpu: 100m
+          limits:
+            memory: 50Mi
+            cpu: 200m
+
-- 
GitLab