diff --git a/jsonnet/kube-prometheus/ksm-autoscaler/ksm-autoscaler.libsonnet b/jsonnet/kube-prometheus/ksm-autoscaler/ksm-autoscaler.libsonnet
index 1fed631ded7d73d74342a8711b7e4bcef6aa18a4..88154ac1039d84d9f2e41cf1818c5a680702d2f3 100644
--- a/jsonnet/kube-prometheus/ksm-autoscaler/ksm-autoscaler.libsonnet
+++ b/jsonnet/kube-prometheus/ksm-autoscaler/ksm-autoscaler.libsonnet
@@ -1,14 +1,7 @@
-local k = import 'github.com/ksonnet/ksonnet-lib/ksonnet.beta.4/k.libsonnet';
-
 {
   _config+:: {
-    versions+:: {
-      clusterVerticalAutoscaler: "v0.8.1"
-    },
-
-    imageRepos+:: {
-      clusterVerticalAutoscaler: 'gcr.io/google_containers/cpvpa-amd64'
-    },
+    versions+:: { clusterVerticalAutoscaler: '0.8.1' },
+    imageRepos+:: { clusterVerticalAutoscaler: 'gcr.io/google_containers/cpvpa-amd64' },
 
     kubeStateMetrics+:: {
       stepCPU: '1m',
@@ -16,103 +9,120 @@ local k = import 'github.com/ksonnet/ksonnet-lib/ksonnet.beta.4/k.libsonnet';
     },
   },
   ksmAutoscaler+:: {
-    clusterRole:
-      local clusterRole = k.rbac.v1.clusterRole;
-      local rulesType = clusterRole.rulesType;
-
-      local rules = [
-        rulesType.new() +
-        rulesType.withApiGroups(['']) +
-        rulesType.withResources([
-          'nodes',
-        ]) +
-        rulesType.withVerbs(['list', 'watch']),
-      ];
+    clusterRole: {
+      apiVersion: 'rbac.authorization.k8s.io/v1',
+      kind: 'ClusterRole',
+      metadata: { name: 'ksm-autoscaler' },
+      rules: [{
+        apiGroups: [''],
+        resources: ['nodes'],
+        verbs: ['list', 'watch'],
+      }],
+    },
 
-      clusterRole.new() +
-      clusterRole.mixin.metadata.withName('ksm-autoscaler') +
-      clusterRole.withRules(rules),
+    clusterRoleBinding: {
+      apiVersion: 'rbac.authorization.k8s.io/v1',
+      kind: 'ClusterRoleBinding',
+      metadata: { name: 'ksm-autoscaler' },
+      roleRef: {
+        apiGroup: 'rbac.authorization.k8s.io',
+        kind: 'ClusterRole',
+        name: 'ksm-autoscaler',
+      },
+      subjects: [{ kind: 'ServiceAccount', name: 'ksm-autoscaler', namespace: $._config.namespace }],
+    },
 
-    clusterRoleBinding:
-      local clusterRoleBinding = k.rbac.v1.clusterRoleBinding;
+    roleBinding: {
+      apiVersion: 'rbac.authorization.k8s.io/v1',
+      kind: 'RoleBinding',
+      metadata: {
+        name: 'ksm-autoscaler',
+        namespace: $._config.namespace,
+      },
+      roleRef: {
+        apiGroup: 'rbac.authorization.k8s.io',
+        kind: 'Role',
+        name: 'ksm-autoscaler',
+      },
+      subjects: [{ kind: 'ServiceAccount', name: 'ksm-autoscaler' }],
+    },
 
-      clusterRoleBinding.new() +
-      clusterRoleBinding.mixin.metadata.withName('ksm-autoscaler') +
-      clusterRoleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io') +
-      clusterRoleBinding.mixin.roleRef.withName('ksm-autoscaler') +
-      clusterRoleBinding.mixin.roleRef.mixinInstance({ kind: 'ClusterRole' }) +
-      clusterRoleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'ksm-autoscaler', namespace: $._config.namespace }]),
+    role: {
+      apiVersion: 'rbac.authorization.k8s.io/v1',
+      kind: 'Role',
+      metadata: {
+        name: 'ksm-autoscaler',
+        namespace: $._config.namespace,
+      },
+      rules: [
+        {
+          apiGroups: ['extensions'],
+          resources: ['deployments'],
+          verbs: ['patch'],
+          resourceNames: ['kube-state-metrics'],
+        },
+        {
+          apiGroups: ['apps'],
+          resources: ['deployments'],
+          verbs: ['patch'],
+          resourceNames: ['kube-state-metrics'],
+        },
+      ],
+    },
 
-    roleBinding:
-      local roleBinding = k.rbac.v1.roleBinding;
-  
-      roleBinding.new() +
-      roleBinding.mixin.metadata.withName('ksm-autoscaler') +
-      roleBinding.mixin.metadata.withNamespace($._config.namespace) +
-      roleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io') +
-      roleBinding.mixin.roleRef.withName('ksm-autoscaler') +
-      roleBinding.mixin.roleRef.mixinInstance({ kind: 'Role' }) +
-      roleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'ksm-autoscaler' }]),
+    serviceAccount: {
+      apiVersion: 'v1',
+      kind: 'ServiceAccount',
+      metadata: {
+        name: 'ksm-autoscaler',
+        namespace: $._config.namespace,
+      },
+    },
 
-    role:
-      local role = k.rbac.v1.role;
-      local rulesType = role.rulesType;
-  
-      local extensionsRule = rulesType.new() +
-                             rulesType.withApiGroups(['extensions']) +
-                             rulesType.withResources([
-                               'deployments',
-                             ]) +
-                             rulesType.withVerbs(['patch']) +
-                             rulesType.withResourceNames(['kube-state-metrics']);
-  
-      local appsRule = rulesType.new() +
-                       rulesType.withApiGroups(['apps']) +
-                       rulesType.withResources([
-                         'deployments',
-                       ]) +
-                       rulesType.withVerbs(['patch']) +
-                       rulesType.withResourceNames(['kube-state-metrics']);
-  
-      local rules = [extensionsRule, appsRule];
-  
-      role.new() +
-      role.mixin.metadata.withName('ksm-autoscaler') +
-      role.mixin.metadata.withNamespace($._config.namespace) +
-      role.withRules(rules),
-  
-    serviceAccount:
-      local serviceAccount = k.core.v1.serviceAccount;
-  
-      serviceAccount.new('ksm-autoscaler') +
-      serviceAccount.mixin.metadata.withNamespace($._config.namespace),
     deployment:
-      local deployment = k.apps.v1.deployment;
-      local container = deployment.mixin.spec.template.spec.containersType;
-      local podSelector = deployment.mixin.spec.template.spec.selectorType;
       local podLabels = { app: 'ksm-autoscaler' };
-  
-      local kubeStateMetricsAutoscaler =
-        container.new('ksm-autoscaler', $._config.imageRepos.clusterVerticalAutoscaler + ':' + $._config.versions.clusterVerticalAutoscaler) +
-        container.withArgs([
+      local c = {
+        name: 'ksm-autoscaler',
+        image: $._config.imageRepos.clusterVerticalAutoscaler + ':v' + $._config.versions.clusterVerticalAutoscaler,
+        args: [
           '/cpvpa',
           '--target=deployment/kube-state-metrics',
           '--namespace=' + $._config.namespace,
           '--logtostderr=true',
           '--poll-period-seconds=10',
-          '--default-config={"kube-state-metrics":{"requests":{"cpu":{"base":"' + $._config.kubeStateMetrics.baseCPU + '","step":"' + $._config.kubeStateMetrics.stepCPU + '","nodesPerStep":1},"memory":{"base":"' + $._config.kubeStateMetrics.baseMemory + '","step":"' + $._config.kubeStateMetrics.stepMemory + '","nodesPerStep":1}},"limits":{"cpu":{"base":"' + $._config.kubeStateMetrics.baseCPU + '","step":"' + $._config.kubeStateMetrics.stepCPU + '","nodesPerStep":1},"memory":{"base":"' + $._config.kubeStateMetrics.baseMemory + '","step":"' + $._config.kubeStateMetrics.stepMemory + '","nodesPerStep":1}}}}'
-        ]) +
-        container.mixin.resources.withRequests({cpu: '20m', memory: '10Mi'}); 
-  
-      local c = [kubeStateMetricsAutoscaler];
-  
-      deployment.new('ksm-autoscaler', 1, c, podLabels) +
-      deployment.mixin.metadata.withNamespace($._config.namespace) +
-      deployment.mixin.metadata.withLabels(podLabels) +
-      deployment.mixin.spec.selector.withMatchLabels(podLabels) +
-      deployment.mixin.spec.template.spec.withNodeSelector({ 'kubernetes.io/os': 'linux' }) +
-      deployment.mixin.spec.template.spec.securityContext.withRunAsNonRoot(true) +
-      deployment.mixin.spec.template.spec.securityContext.withRunAsUser(65534) +
-      deployment.mixin.spec.template.spec.withServiceAccountName('ksm-autoscaler'),
+          '--default-config={"kube-state-metrics":{"requests":{"cpu":{"base":"' + $._config.kubeStateMetrics.baseCPU + '","step":"' + $._config.kubeStateMetrics.stepCPU + '","nodesPerStep":1},"memory":{"base":"' + $._config.kubeStateMetrics.baseMemory + '","step":"' + $._config.kubeStateMetrics.stepMemory + '","nodesPerStep":1}},"limits":{"cpu":{"base":"' + $._config.kubeStateMetrics.baseCPU + '","step":"' + $._config.kubeStateMetrics.stepCPU + '","nodesPerStep":1},"memory":{"base":"' + $._config.kubeStateMetrics.baseMemory + '","step":"' + $._config.kubeStateMetrics.stepMemory + '","nodesPerStep":1}}}}',
+        ],
+        resources: {
+          requests: { cpu: '20m', memory: '10Mi' },
+        },
+      };
+
+      {
+        apiVersion: 'apps/v1',
+        kind: 'Deployment',
+        metadata: {
+          name: 'ksm-autoscaler',
+          namespace: $._config.namespace,
+          labels: podLabels,
+        },
+        spec: {
+          replicas: 1,
+          selector: { matchLabels: podLabels },
+          template: {
+            metadata: {
+              labels: podLabels,
+            },
+            spec: {
+              containers: [c],
+              serviceAccount: 'ksm-autoscaler',
+              nodeSelector: { 'kubernetes.io/os': 'linux' },
+              securityContext: {
+                runAsNonRoot: true,
+                runAsUser: 65534,
+              },
+            },
+          },
+        },
+      },
   },
 }