diff --git a/README.md b/README.md
index 3dab9c350a025109c62a6599139bfaa3997d51ae..fb4fae3a8a0407c069f9e6f0a5da0888b60d3834 100644
--- a/README.md
+++ b/README.md
@@ -208,6 +208,7 @@ local kp =
   // (import 'kube-prometheus/kube-prometheus-static-etcd.libsonnet') +
   // (import 'kube-prometheus/kube-prometheus-thanos-sidecar.libsonnet') +
   // (import 'kube-prometheus/kube-prometheus-custom-metrics.libsonnet') +
+  // (import 'kube-prometheus/kube-prometheus-external-metrics.libsonnet') +
   {
     _config+:: {
       namespace: 'monitoring',
diff --git a/docs/developing-prometheus-rules-and-grafana-dashboards.md b/docs/developing-prometheus-rules-and-grafana-dashboards.md
index a0a41c5ead83b08660e7a20a97fcfb135eafdd55..ee7be4e0dd2d641caa4f0a535d6c81c0bcc7f7b7 100644
--- a/docs/developing-prometheus-rules-and-grafana-dashboards.md
+++ b/docs/developing-prometheus-rules-and-grafana-dashboards.md
@@ -19,6 +19,7 @@ local kp =
   // (import 'kube-prometheus/kube-prometheus-static-etcd.libsonnet') +
   // (import 'kube-prometheus/kube-prometheus-thanos-sidecar.libsonnet') +
   // (import 'kube-prometheus/kube-prometheus-custom-metrics.libsonnet') +
+  // (import 'kube-prometheus/kube-prometheus-external-metrics.libsonnet') +
   {
     _config+:: {
       namespace: 'monitoring',
diff --git a/example.jsonnet b/example.jsonnet
index 54de1e3554854b8a8142aeb035a95b704752a63a..15a801f80100cc7eb77161059bbd390dbb66d758 100644
--- a/example.jsonnet
+++ b/example.jsonnet
@@ -7,6 +7,7 @@ local kp =
   // (import 'kube-prometheus/kube-prometheus-static-etcd.libsonnet') +
   // (import 'kube-prometheus/kube-prometheus-thanos-sidecar.libsonnet') +
   // (import 'kube-prometheus/kube-prometheus-custom-metrics.libsonnet') +
+  // (import 'kube-prometheus/kube-prometheus-external-metrics.libsonnet') +
   {
     _config+:: {
       namespace: 'monitoring',
diff --git a/jsonnet/kube-prometheus/kube-prometheus-external-metrics.libsonnet b/jsonnet/kube-prometheus/kube-prometheus-external-metrics.libsonnet
new file mode 100644
index 0000000000000000000000000000000000000000..abe35b0c2881247a2b821d5a10e756bb6c8c2799
--- /dev/null
+++ b/jsonnet/kube-prometheus/kube-prometheus-external-metrics.libsonnet
@@ -0,0 +1,95 @@
+// External metrics API allows the HPA v2 to scale based on metrics coming from outside of Kubernetes cluster
+// For more details on usage visit https://github.com/DirectXMan12/k8s-prometheus-adapter#quick-links
+
+{
+  _config+:: {
+    prometheusAdapter+:: {
+      namespace: $._config.namespace,
+      // Rules for external-metrics
+      config+:: {
+        externalRules+: [
+          // {
+          //   seriesQuery: '{__name__=~"^.*_queue$",namespace!=""}',
+          //   seriesFilters: [],
+          //   resources: {
+          //     overrides: {
+          //       namespace: { resource: 'namespace' }
+          //     },
+          //   },
+          //   name: { matches: '^.*_queue$', as: '$0' },
+          //   metricsQuery: 'max(<<.Series>>{<<.LabelMatchers>>})',
+          // },
+        ],
+      },
+    },
+  },
+
+  prometheusAdapter+:: {
+    externalMetricsApiService: {
+      apiVersion: 'apiregistration.k8s.io/v1',
+      kind: 'APIService',
+      metadata: {
+        name: 'v1beta1.external.metrics.k8s.io',
+      },
+      spec: {
+        service: {
+          name: $.prometheusAdapter.service.metadata.name,
+          namespace: $._config.prometheusAdapter.namespace,
+        },
+        group: 'external.metrics.k8s.io',
+        version: 'v1beta1',
+        insecureSkipTLSVerify: true,
+        groupPriorityMinimum: 100,
+        versionPriority: 100,
+      },
+    },
+    externalMetricsClusterRoleServerResources: {
+      apiVersion: 'rbac.authorization.k8s.io/v1',
+      kind: 'ClusterRole',
+      metadata: {
+        name: 'external-metrics-server-resources',
+      },
+      rules: [{
+        apiGroups: ['external.metrics.k8s.io'],
+        resources: ['*'],
+        verbs: ['*'],
+      }],
+    },
+    externalMetricsClusterRoleBindingServerResources: {
+      apiVersion: 'rbac.authorization.k8s.io/v1',
+      kind: 'ClusterRoleBinding',
+      metadata: {
+        name: 'external-metrics-server-resources',
+      },
+
+      roleRef: {
+        apiGroup: 'rbac.authorization.k8s.io',
+        kind: 'ClusterRole',
+        name: 'external-metrics-server-resources',
+      },
+      subjects: [{
+        kind: 'ServiceAccount',
+        name: $.prometheusAdapter.serviceAccount.metadata.name,
+        namespace: $._config.prometheusAdapter.namespace,
+      }],
+    },
+    externalMetricsClusterRoleBindingHPA: {
+      apiVersion: 'rbac.authorization.k8s.io/v1',
+      kind: 'ClusterRoleBinding',
+      metadata: {
+        name: 'hpa-controller-external-metrics',
+      },
+
+      roleRef: {
+        apiGroup: 'rbac.authorization.k8s.io',
+        kind: 'ClusterRole',
+        name: 'external-metrics-server-resources',
+      },
+      subjects: [{
+        kind: 'ServiceAccount',
+        name: 'horizontal-pod-autoscaler',
+        namespace: 'kube-system',
+      }],
+    },
+  },
+}