diff --git a/README.md b/README.md
index 12c5261e3c64d442bbd3c53d0a6ebd539edef546..e20b3bc1454549ac36c8c5bfd15e6dbe770f4f4e 100644
--- a/README.md
+++ b/README.md
@@ -122,7 +122,7 @@ Supported Components
     -   [cephfs-provisioner](https://github.com/kubernetes-incubator/external-storage) v2.1.0-k8s1.11
     -   [cert-manager](https://github.com/jetstack/cert-manager) v0.5.0
     -   [coredns](https://github.com/coredns/coredns) v1.2.2
-    -   [ingress-nginx](https://github.com/kubernetes/ingress-nginx) v0.19.0
+    -   [ingress-nginx](https://github.com/kubernetes/ingress-nginx) v0.20.0
 
 Note: The list of validated [docker versions](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.12.md) was updated to 1.11.1, 1.12.1, 1.13.1, 17.03, 17.06, 17.09, 18.06. The kubelet might break on docker's non-standard version numbering (it no longer uses semantic versioning). To ensure auto-updates don't break your cluster look into e.g. yum versionlock plugin or apt pin).
 
diff --git a/roles/download/defaults/main.yml b/roles/download/defaults/main.yml
index 6d81c9109e7d2869ac1190d2cfe7c214fb30fe1c..e83cee1eff158cb1cf68b2b90d07f0960e66a84f 100644
--- a/roles/download/defaults/main.yml
+++ b/roles/download/defaults/main.yml
@@ -202,9 +202,9 @@ local_volume_provisioner_image_tag: "v2.1.0"
 cephfs_provisioner_image_repo: "quay.io/external_storage/cephfs-provisioner"
 cephfs_provisioner_image_tag: "v2.1.0-k8s1.11"
 ingress_nginx_controller_image_repo: "quay.io/kubernetes-ingress-controller/nginx-ingress-controller"
-ingress_nginx_controller_image_tag: "0.19.0"
-ingress_nginx_default_backend_image_repo: "gcr.io/google_containers/defaultbackend"
-ingress_nginx_default_backend_image_tag: "1.4"
+ingress_nginx_controller_image_tag: "0.20.0"
+ingress_nginx_default_backend_image_repo: "k8s.gcr.io/defaultbackend-amd64"
+ingress_nginx_default_backend_image_tag: "1.5"
 cert_manager_version: "v0.5.0"
 cert_manager_controller_image_repo: "quay.io/jetstack/cert-manager-controller"
 cert_manager_controller_image_tag: "{{ cert_manager_version }}"
diff --git a/roles/kubernetes-apps/ingress_controller/ingress_nginx/templates/ds-ingress-nginx-controller.yml.j2 b/roles/kubernetes-apps/ingress_controller/ingress_nginx/templates/ds-ingress-nginx-controller.yml.j2
index 6de89c15a66ee1246b13f6c4524bc5e20a50d079..4f075804f6d2e50b4a1c2390e4e234e31c69e0cb 100644
--- a/roles/kubernetes-apps/ingress_controller/ingress_nginx/templates/ds-ingress-nginx-controller.yml.j2
+++ b/roles/kubernetes-apps/ingress_controller/ingress_nginx/templates/ds-ingress-nginx-controller.yml.j2
@@ -18,8 +18,8 @@ spec:
         app.kubernetes.io/name: ingress-nginx
         app.kubernetes.io/part-of: ingress-nginx
       annotations:
-        prometheus.io/port: '10254'
-        prometheus.io/scrape: 'true'
+        prometheus.io/port: "10254"
+        prometheus.io/scrape: "true"
     spec:
       serviceAccountName: ingress-nginx
 {% if ingress_nginx_host_network %}
diff --git a/roles/kubernetes-apps/ingress_controller/ingress_nginx/templates/svc-default-backend.yml.j2 b/roles/kubernetes-apps/ingress_controller/ingress_nginx/templates/svc-default-backend.yml.j2
index 8d4ad59916aede33d423980acd8ed9d3e5faa0d9..9c95e870170bf9fa4a0897720e2c7ec6abc78ce6 100644
--- a/roles/kubernetes-apps/ingress_controller/ingress_nginx/templates/svc-default-backend.yml.j2
+++ b/roles/kubernetes-apps/ingress_controller/ingress_nginx/templates/svc-default-backend.yml.j2
@@ -13,3 +13,4 @@ spec:
       targetPort: 8080
   selector:
     app.kubernetes.io/name: default-backend
+    app.kubernetes.io/part-of: ingress-nginx