diff --git a/README.md b/README.md
index e5e1ddbceb2f15440a69f8d108eca0d105476f03..d67ea680701e3185e72ed5f238298cc92404d963 100644
--- a/README.md
+++ b/README.md
@@ -163,6 +163,14 @@ bootkube:
 (import "kube-prometheus/kube-prometheus-bootkube.libsonnet")
 ```
 
+kops:
+
+[embedmd]:# (examples/jsonnet-snippets/kops.jsonnet)
+```jsonnet
+(import 'kube-prometheus/kube-prometheus.libsonnet') +
+(import 'kube-prometheus/kube-prometheus-kops.libsonnet')
+```
+
 Another mixin that may be useful for exploring the stack is to expose the UIs of Prometheus, Alertmanager and Grafana on NodePorts:
 
 [embedmd]:# (examples/jsonnet-snippets/node-ports.jsonnet)
diff --git a/docs/KOPSonAWS.md b/docs/KOPSonAWS.md
deleted file mode 100644
index 26080a9f9311d8a11c08db58ed1c2f08ba7d65c0..0000000000000000000000000000000000000000
--- a/docs/KOPSonAWS.md
+++ /dev/null
@@ -1,20 +0,0 @@
-# Adding kube-prometheus to [KOPS](https://github.com/kubernetes/kops) on AWS 1.5.x
-
-
-## Prerequisites
-
-A running Kubernetes cluster created with [KOPS](https://github.com/kubernetes/kops).
- 
-These instructions have currently been tested with  **topology=public** on AWS with KOPS 1.7.1 and Kubernetes 1.7.x
-
-Following the instructions in the [README](https://github.com/coreos/prometheus-operator/blob/master/contrib/kube-prometheus/README.md):
-
-Example:
-
-```bash
-git clone -b master https://github.com/coreos/prometheus-operator.git prometheus-operator-temp;
-cd prometheus-operator-temp/contrib/kube-prometheus
-./hack/cluster-monitoring/self-hosted-deploy
-cd -
-rm -rf prometheus-operator-temp
-```
diff --git a/examples/jsonnet-snippets/kops.jsonnet b/examples/jsonnet-snippets/kops.jsonnet
new file mode 100644
index 0000000000000000000000000000000000000000..4ff9ceaea1f8dca3b474d0cb5d1f4e6d895a71ea
--- /dev/null
+++ b/examples/jsonnet-snippets/kops.jsonnet
@@ -0,0 +1,2 @@
+(import 'kube-prometheus/kube-prometheus.libsonnet') +
+(import 'kube-prometheus/kube-prometheus-kops.libsonnet')
diff --git a/jsonnet/kube-prometheus/kube-prometheus-insecure-kubelet.libsonnet b/jsonnet/kube-prometheus/kube-prometheus-insecure-kubelet.libsonnet
new file mode 100644
index 0000000000000000000000000000000000000000..1bd64e1b3b21ab84bd79b2ebb2a86d3e24d0ab07
--- /dev/null
+++ b/jsonnet/kube-prometheus/kube-prometheus-insecure-kubelet.libsonnet
@@ -0,0 +1,25 @@
+{
+  prometheus+:: {
+    serviceMonitorKubelet+:
+      {
+        spec+: {
+          endpoints: [
+            {
+              port: 'http-metrics',
+              scheme: 'http',
+              interval: '30s',
+              bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',
+            },
+            {
+              port: 'http-metrics',
+              scheme: 'http',
+              path: '/metrics/cadvisor',
+              interval: '30s',
+              honorLabels: true,
+              bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',
+            },
+          ],
+        },
+      },
+  },
+}
diff --git a/jsonnet/kube-prometheus/kube-prometheus-kops.libsonnet b/jsonnet/kube-prometheus/kube-prometheus-kops.libsonnet
new file mode 100644
index 0000000000000000000000000000000000000000..a9cf3bb32c74d6086be838f668fae2655904ed19
--- /dev/null
+++ b/jsonnet/kube-prometheus/kube-prometheus-kops.libsonnet
@@ -0,0 +1,23 @@
+local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
+local service = k.core.v1.service;
+local servicePort = k.core.v1.service.mixin.spec.portsType;
+
+{
+  prometheus+:: {
+    kubeControllerManagerPrometheusDiscoveryService:
+      service.new('kube-controller-manager-prometheus-discovery', { 'k8s-app': 'kube-controller-manager' }, servicePort.newNamed('http-metrics', 10252, 10252)) +
+      service.mixin.metadata.withNamespace('kube-system') +
+      service.mixin.metadata.withLabels({ 'k8s-app': 'kube-controller-manager' }) +
+      service.mixin.spec.withClusterIp('None'),
+    kubeSchedulerPrometheusDiscoveryService:
+      service.new('kube-scheduler-prometheus-discovery', { 'k8s-app': 'kube-scheduler' }, servicePort.newNamed('http-metrics', 10251, 10251)) +
+      service.mixin.metadata.withNamespace('kube-system') +
+      service.mixin.metadata.withLabels({ 'k8s-app': 'kube-scheduler' }) +
+      service.mixin.spec.withClusterIp('None'),
+    kubeDnsPrometheusDiscoveryService:
+      service.new('kube-dns-prometheus-discovery', { 'k8s-app': 'kube-dns' }, [servicePort.newNamed('http-metrics-skydns', 10055, 10055), servicePort.newNamed('http-metrics-dnsmasq', 10054, 10054)]) +
+      service.mixin.metadata.withNamespace('kube-system') +
+      service.mixin.metadata.withLabels({ 'k8s-app': 'kube-dns' }) +
+      service.mixin.spec.withClusterIp('None'),
+  },
+}