diff --git a/jsonnet/kube-prometheus/kube-prometheus-bootkube.libsonnet b/jsonnet/kube-prometheus/kube-prometheus-bootkube.libsonnet
index 05c6a4d2408bfbfa44bd4fd547547b2e03db81db..284544c12196e95179da8cef44329961bfe8421c 100644
--- a/jsonnet/kube-prometheus/kube-prometheus-bootkube.libsonnet
+++ b/jsonnet/kube-prometheus/kube-prometheus-bootkube.libsonnet
@@ -1,23 +1,42 @@
-local k = import 'github.com/ksonnet/ksonnet-lib/ksonnet.beta.4/k.libsonnet';
-local service = k.core.v1.service;
-local servicePort = k.core.v1.service.mixin.spec.portsType;
+local service(name, namespace, labels, selector, ports) = {
+  apiVersion: 'v1',
+  kind: 'Service',
+  metadata: {
+    name: name,
+    namespace: namespace,
+    labels: labels,
+  },
+  spec: {
+    ports+: ports,
+    selector: selector,
+    clusterIP: 'None',
+  },
+};
 
 {
   prometheus+:: {
-    kubeControllerManagerPrometheusDiscoveryService:
-      service.new('kube-controller-manager-prometheus-discovery', { 'k8s-app': 'kube-controller-manager' }, servicePort.newNamed('https-metrics', 10257, 10257)) +
-      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('https-metrics', 10259, 10259)) +
-      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'),
+    kubeControllerManagerPrometheusDiscoveryService: service(
+      'kube-controller-manager-prometheus-discovery',
+      'kube-system',
+      { 'k8s-app': 'kube-controller-manager' },
+      { 'k8s-app': 'kube-controller-manager' },
+      [{ name: 'https-metrics', port: 10257, targetPort: 10257 }]
+    ),
+
+    kubeSchedulerPrometheusDiscoveryService: service(
+      'kube-scheduler-prometheus-discovery',
+      'kube-system',
+      { 'k8s-app': 'kube-scheduler' },
+      { 'k8s-app': 'kube-scheduler' },
+      [{ name: 'https-metrics', port: 10259, targetPort: 10259 }]
+    ),
+
+    kubeDnsPrometheusDiscoveryService: service(
+      'kube-dns-prometheus-discovery',
+      'kube-syste',
+      { 'k8s-app': 'kube-dns' },
+      { 'k8s-app': 'kube-dns' },
+      [{ name: 'http-metrics-skydns', port: 10055, targetPort: 10055 }, { name: 'http-metrics-dnsmasq', port: 10054, targetPort: 10054 }]
+    ),
   },
 }