diff --git a/jsonnet/kube-prometheus/kube-prometheus-static-etcd.libsonnet b/jsonnet/kube-prometheus/kube-prometheus-static-etcd.libsonnet
index 7b017e74eebd630c22af4c6fbe02222feff13ae1..9bc77385f4b6d860abfdd40905e0e05d793c4803 100644
--- a/jsonnet/kube-prometheus/kube-prometheus-static-etcd.libsonnet
+++ b/jsonnet/kube-prometheus/kube-prometheus-static-etcd.libsonnet
@@ -12,82 +12,88 @@ local k = import 'github.com/ksonnet/ksonnet-lib/ksonnet.beta.4/k.libsonnet';
     },
   },
   prometheus+:: {
-    serviceEtcd:
-      local service = k.core.v1.service;
-      local servicePort = k.core.v1.service.mixin.spec.portsType;
-
-      local etcdServicePort = servicePort.newNamed('metrics', 2379, 2379);
-
-      service.new('etcd', null, etcdServicePort) +
-      service.mixin.metadata.withNamespace('kube-system') +
-      service.mixin.metadata.withLabels({ 'k8s-app': 'etcd' }) +
-      service.mixin.spec.withClusterIp('None'),
-    endpointsEtcd:
-      local endpoints = k.core.v1.endpoints;
-      local endpointSubset = endpoints.subsetsType;
-      local endpointPort = endpointSubset.portsType;
-
-      local etcdPort = endpointPort.new() +
-                       endpointPort.withName('metrics') +
-                       endpointPort.withPort(2379) +
-                       endpointPort.withProtocol('TCP');
-
-      local subset = endpointSubset.new() +
-                     endpointSubset.withAddresses([
-                       { ip: etcdIP }
-                       for etcdIP in $._config.etcd.ips
-                     ]) +
-                     endpointSubset.withPorts(etcdPort);
-
-      endpoints.new() +
-      endpoints.mixin.metadata.withName('etcd') +
-      endpoints.mixin.metadata.withNamespace('kube-system') +
-      endpoints.mixin.metadata.withLabels({ 'k8s-app': 'etcd' }) +
-      endpoints.withSubsets(subset),
-    serviceMonitorEtcd:
-      {
-        apiVersion: 'monitoring.coreos.com/v1',
-        kind: 'ServiceMonitor',
+    serviceEtcd: {
+      apiVersion: 'v1',
+      kind: 'Service',
+      metadata: {
+        name: 'etcd',
+        namespace: 'kube-system',
+        labels: { 'k8s-app': 'etcd' },
+      },
+      spec: {
+        ports: [
+          { name: 'metrics', targetPort: 2379, port: 2379 },
+        ],
+        clusterIP: 'None',
+      },
+    },
+    endpointsEtcd: {
+        apiVersion: 'v1',
+        kind: 'Endpoints',
         metadata: {
           name: 'etcd',
           namespace: 'kube-system',
-          labels: {
-            'k8s-app': 'etcd',
-          },
+          labels: { 'k8s-app': 'etcd' },
         },
-        spec: {
-          jobLabel: 'k8s-app',
-          endpoints: [
-            {
-              port: 'metrics',
-              interval: '30s',
-              scheme: 'https',
-              // Prometheus Operator (and Prometheus) allow us to specify a tlsConfig. This is required as most likely your etcd metrics end points is secure.
-              tlsConfig: {
-                caFile: '/etc/prometheus/secrets/kube-etcd-client-certs/etcd-client-ca.crt',
-                keyFile: '/etc/prometheus/secrets/kube-etcd-client-certs/etcd-client.key',
-                certFile: '/etc/prometheus/secrets/kube-etcd-client-certs/etcd-client.crt',
-                [if $._config.etcd.serverName != null then 'serverName']: $._config.etcd.serverName,
-                [if $._config.etcd.insecureSkipVerify != null then 'insecureSkipVerify']: $._config.etcd.insecureSkipVerify,
-              },
-            },
+        subsets: [{
+          addresses: [
+            { ip: etcdIP }
+            for etcdIP in $._config.etcd.ips
+          ],
+          ports: [
+            { name: 'metrics', port: 2379, protocol: 'TCP' },
           ],
-          selector: {
-            matchLabels: {
-              'k8s-app': 'etcd',
+        }],
+      },
+    serviceMonitorEtcd: {
+      apiVersion: 'monitoring.coreos.com/v1',
+      kind: 'ServiceMonitor',
+      metadata: {
+        name: 'etcd',
+        namespace: 'kube-system',
+        labels: {
+          'k8s-app': 'etcd',
+        },
+      },
+      spec: {
+        jobLabel: 'k8s-app',
+        endpoints: [
+          {
+            port: 'metrics',
+            interval: '30s',
+            scheme: 'https',
+            // Prometheus Operator (and Prometheus) allow us to specify a tlsConfig. This is required as most likely your etcd metrics end points is secure.
+            tlsConfig: {
+              caFile: '/etc/prometheus/secrets/kube-etcd-client-certs/etcd-client-ca.crt',
+              keyFile: '/etc/prometheus/secrets/kube-etcd-client-certs/etcd-client.key',
+              certFile: '/etc/prometheus/secrets/kube-etcd-client-certs/etcd-client.crt',
+              [if $._config.etcd.serverName != null then 'serverName']: $._config.etcd.serverName,
+              [if $._config.etcd.insecureSkipVerify != null then 'insecureSkipVerify']: $._config.etcd.insecureSkipVerify,
             },
           },
+        ],
+        selector: {
+          matchLabels: {
+            'k8s-app': 'etcd',
+          },
         },
       },
-    secretEtcdCerts:
+    },
+    secretEtcdCerts: {
       // Prometheus Operator allows us to mount secrets in the pod. By loading the secrets as files, they can be made available inside the Prometheus pod.
-      local secret = k.core.v1.secret;
-      secret.new('kube-etcd-client-certs', {
+      apiVersion: 'v1',
+      kind: 'Secret',
+      type: 'Opaque',
+      metadata: {
+        name: 'kube-etcd-client-certs',
+        namespace: $._config.namespace,
+      },
+      data: {
         'etcd-client-ca.crt': std.base64($._config.etcd.clientCA),
         'etcd-client.key': std.base64($._config.etcd.clientKey),
         'etcd-client.crt': std.base64($._config.etcd.clientCert),
-      }) +
-      secret.mixin.metadata.withNamespace($._config.namespace),
+      },
+    },
     prometheus+:
       {
         // Reference info: https://coreos.com/operators/prometheus/docs/latest/api.html#prometheusspec
diff --git a/jsonnet/kube-prometheus/kube-prometheus-strip-limits.libsonnet b/jsonnet/kube-prometheus/kube-prometheus-strip-limits.libsonnet
index b49e47293182e4433016be863e7845c22bf2d6a4..fbd40200a47c5592783cc75d4eb2a94dbe63b68b 100644
--- a/jsonnet/kube-prometheus/kube-prometheus-strip-limits.libsonnet
+++ b/jsonnet/kube-prometheus/kube-prometheus-strip-limits.libsonnet
@@ -23,9 +23,9 @@
         template+: {
           spec+: {
             local addArgs(c) =
-                if c.name == 'prometheus-operator'
-                then c + {args+: ['--config-reloader-cpu=0']}
-                else c,
+              if c.name == 'prometheus-operator'
+              then c { args+: ['--config-reloader-cpu=0'] }
+              else c,
             containers: std.map(addArgs, super.containers),
           },
         },