diff --git a/inventory/sample/group_vars/k8s-cluster.yml b/inventory/sample/group_vars/k8s-cluster.yml
index 96a301f7da1210d864d0656bb9322a093d07c3b8..031108767faf692119ee1d9715f88091bc1d78a8 100644
--- a/inventory/sample/group_vars/k8s-cluster.yml
+++ b/inventory/sample/group_vars/k8s-cluster.yml
@@ -162,9 +162,15 @@ dashboard_enabled: true
 # Monitoring apps for k8s
 efk_enabled: false
 
-# Helm deployment
+# Helm deployment. Needs for Prometheus Operator, k8s metrics.
 helm_enabled: false
 
+# Prometheus Operator. Needs for k8s metrics. Installed Helm is required.
+prometheus_operator_enabled: false
+
+# K8s cluster metrics. Installed Helm and Prometheus Operator are required.
+k8s_metrics_enabled: false
+
 # Istio deployment
 istio_enabled: false
 
diff --git a/roles/kubernetes-apps/meta/main.yml b/roles/kubernetes-apps/meta/main.yml
index fca51a3b6b8b7ccc57f87119bc8617c4990dab30..bc05e6f8c8b26ca3baa479e2d88a00f8f5ad2570 100644
--- a/roles/kubernetes-apps/meta/main.yml
+++ b/roles/kubernetes-apps/meta/main.yml
@@ -27,6 +27,12 @@ dependencies:
       - apps
       - registry
 
+  - role: kubernetes-apps/metrics
+    when: prometheus_operator_enabled
+    tags:
+      - apps
+      - metrics
+
   # istio role should be last because it takes a long time to initialize and
   # will cause timeouts trying to start other addons.
   - role: kubernetes-apps/istio
diff --git a/roles/kubernetes-apps/metrics/defaults/main.yml b/roles/kubernetes-apps/metrics/defaults/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..72018e6f5f58f6b04921e09c6000ae39d988a386
--- /dev/null
+++ b/roles/kubernetes-apps/metrics/defaults/main.yml
@@ -0,0 +1,9 @@
+---
+# Prometheus Operator. Needs for k8s metrics. Installed Helm is required.
+prometheus_operator_enabled: false
+
+# K8s cluster metrics. Installed Helm and Prometheus Operators are required.
+k8s_metrics_enabled: false
+
+# Separate namespace for monitoring/metrics
+monitoring_namespace: "monitoring"
diff --git a/roles/kubernetes-apps/metrics/tasks/main.yml b/roles/kubernetes-apps/metrics/tasks/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..e2280e98b3ec59c330223592471a493b71a953e8
--- /dev/null
+++ b/roles/kubernetes-apps/metrics/tasks/main.yml
@@ -0,0 +1,32 @@
+---
+- name: Metrics | Make sure Helm is installed
+  command: "{{ bin_dir }}/helm version"
+  register: helm_ready_result
+  until: helm_ready_result|succeeded
+  retries: 4
+  delay: 5
+  when:
+    - prometheus_operator_enabled
+    - inventory_hostname == groups['kube-master'][0]
+
+- name: Metrics | Add coreos repo
+  command: "{{ bin_dir }}/helm repo add coreos https://s3-eu-west-1.amazonaws.com/coreos-charts/stable/"
+  when:
+    - prometheus_operator_enabled
+    - inventory_hostname == groups['kube-master'][0]
+  run_once: true
+
+- name: Metrics | Install Prometheus Operator
+  command: "{{ bin_dir }}/helm upgrade --install prometheus-operator coreos/prometheus-operator --namespace {{ monitoring_namespace }}"
+  when:
+    - prometheus_operator_enabled
+    - inventory_hostname == groups['kube-master'][0]
+  run_once: true
+
+- name: Metrics | Install K8s cluster metrics
+  command: "{{ bin_dir }}/helm upgrade --install kube-prometheus     coreos/kube-prometheus     --namespace {{ monitoring_namespace }}"
+  when:
+    - prometheus_operator_enabled
+    - k8s_metrics_enabled
+    - inventory_hostname == groups['kube-master'][0]
+  run_once: true
diff --git a/tests/files/gce_centos7-flannel-addons.yml b/tests/files/gce_centos7-flannel-addons.yml
index 9e2e1083fe0339ed784d5477b3889f8368995ba7..c120920116551570ca024e345b3aa010ae540f6e 100644
--- a/tests/files/gce_centos7-flannel-addons.yml
+++ b/tests/files/gce_centos7-flannel-addons.yml
@@ -16,5 +16,7 @@ deploy_netchecker: true
 kubedns_min_replicas: 1
 cloud_provider: gce
 kube_encrypt_secret_data: true
+prometheus_operator_enabled: true
+k8s_metrics_enabled: true
 ingress_nginx_enabled: true
 cert_manager_enabled: true