Repository: kubernetes/dashboard
Pull request #4377 (2019-10-03 09:12:55)

Update API versions

k8s-ci-robot: [APPROVALNOTIFIER] This PR is **APPROVED**

This pull-request has been approved by: *<a href="https://github.com/kubernetes/dashboard/pull/4377#" title="Author self-approved">maciaszczykm</a>*

The full list of commands accepted by this bot can be found [here](https://go.k8s.io/bot-commands?repo=kubernetes%2Fdashboard).

The pull request process is described [here](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process)

<details >
Needs approval from an approver in each of these files:

- ~~[OWNERS](https://github.com/kubernetes/dashboard/blob/master/OWNERS)~~ [maciaszczykm]

Approvers can indicate their approval by writing `/approve` in a comment
Approvers can cancel approval by writing `/approve cancel` in a comment
</details>
<!-- META={"approvers":[]} -->
codecov[bot]: # [Codecov](https://codecov.io/gh/kubernetes/dashboard/pull/4377?src=pr&el=h1) Report
> Merging [#4377](https://codecov.io/gh/kubernetes/dashboard/pull/4377?src=pr&el=desc) into [master](https://codecov.io/gh/kubernetes/dashboard/commit/de8b44c95fb787871fc451e22d8ec8b51df6e0e5?src=pr&el=desc) will **decrease** coverage by `0.01%`.
> The diff coverage is `n/a`.

[![Impacted file tree graph](https://codecov.io/gh/kubernetes/dashboard/pull/4377/graphs/tree.svg?width=650&token=Wj7jysJ9A5&height=150&src=pr)](https://codecov.io/gh/kubernetes/dashboard/pull/4377?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master    #4377      +/-   ##
==========================================
- Coverage   46.62%   46.61%   -0.02%     
==========================================
  Files         200      200              
  Lines        9374     9374              
  Branches      105      105              
==========================================
- Hits         4371     4370       -1     
- Misses       4734     4735       +1     
  Partials      269      269
```


| [Impacted Files](https://codecov.io/gh/kubernetes/dashboard/pull/4377?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [src/app/backend/resource/deployment/deploy.go](https://codecov.io/gh/kubernetes/dashboard/pull/4377/diff?src=pr&el=tree#diff-c3JjL2FwcC9iYWNrZW5kL3Jlc291cmNlL2RlcGxveW1lbnQvZGVwbG95Lmdv) | `45.45% <ø> (ø)` | :arrow_up: |
| [...p/backend/integration/metric/common/aggregation.go](https://codecov.io/gh/kubernetes/dashboard/pull/4377/diff?src=pr&el=tree#diff-c3JjL2FwcC9iYWNrZW5kL2ludGVncmF0aW9uL21ldHJpYy9jb21tb24vYWdncmVnYXRpb24uZ28=) | `89.09% <0%> (-1.82%)` | :arrow_down: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/kubernetes/dashboard/pull/4377?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/kubernetes/dashboard/pull/4377?src=pr&el=footer). Last update [de8b44c...b0fe159](https://codecov.io/gh/kubernetes/dashboard/pull/4377?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

maciaszczykm: /cc @shu-mutou 

Can you verify it?

Patch:
diff --git a/aio/deploy/alternative.yaml b/aio/deploy/alternative.yaml
index 70a2df18c..e42762353 100644
--- a/aio/deploy/alternative.yaml
+++ b/aio/deploy/alternative.yaml
@@ -157,7 +157,7 @@ subjects:
 ---
 
 kind: Deployment
-apiVersion: apps/v1beta2
+apiVersion: apps/v1
 metadata:
   labels:
     k8s-app: kubernetes-dashboard
diff --git a/aio/deploy/alternative/06_dashboard-deployment.yaml b/aio/deploy/alternative/06_dashboard-deployment.yaml
index 754591d15..e0835fce5 100644
--- a/aio/deploy/alternative/06_dashboard-deployment.yaml
+++ b/aio/deploy/alternative/06_dashboard-deployment.yaml
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 kind: Deployment
-apiVersion: apps/v1beta2
+apiVersion: apps/v1
 metadata:
   labels:
     k8s-app: kubernetes-dashboard
diff --git a/aio/deploy/head.yaml b/aio/deploy/head.yaml
index 4dac4fa93..9d8164c3c 100644
--- a/aio/deploy/head.yaml
+++ b/aio/deploy/head.yaml
@@ -157,7 +157,7 @@ subjects:
 ---
 
 kind: Deployment
-apiVersion: apps/v1beta2
+apiVersion: apps/v1
 metadata:
   labels:
     k8s-app: kubernetes-dashboard-head
diff --git a/docs/user/accessing-dashboard/1.7.x-and-above.md b/docs/user/accessing-dashboard/1.7.x-and-above.md
index 4dc0d211e..439e1cfcf 100644
--- a/docs/user/accessing-dashboard/1.7.x-and-above.md
+++ b/docs/user/accessing-dashboard/1.7.x-and-above.md
@@ -26,9 +26,9 @@ $ kubectl proxy
 Starting to serve on 127.0.0.1:8001
 ```
 
-Once proxy server is started you should be able to access Dashboard from your browser.
+Once the proxy server is started you should be able to access Dashboard from your browser.
 
-To access HTTPS endpoint of dashboard go to: `http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/`
+To access the HTTPS endpoint of dashboard go to: `http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/`
 
 NOTE: Dashboard should not be exposed publicly using `kubectl proxy` command as it only allows HTTP connection. For domains other than `localhost` and `127.0.0.1` it will not be possible to sign in. Nothing will happen after clicking `Sign in` button on login page.
 
@@ -41,7 +41,7 @@ kube@minikube:~$ kubectl port-forward -n kubernetes-dashboard service/kubernetes
 Forwarding from 127.0.0.1:10443 -> 8443
 ```
 
-NOTE: If you need to expose dashboard to other hosts except host running `kubectl`, you should set `--address [ IP address that your browser's  host has ]` option. You can set this option as `--address 0.0.0.0`, but it means exposing publicly.
+NOTE: If you need to expose dashboard to other hosts besides the host running `kubectl`, you should set the `--address [ IP address that your browser's host has ]` option. You can set this option to `--address 0.0.0.0`, but it means publicly exposing the dashboard.
 
 ## NodePort
 
diff --git a/i18n/fr/OWNERS b/i18n/fr/OWNERS
index 54c08dee0..b96bc82c9 100644
--- a/i18n/fr/OWNERS
+++ b/i18n/fr/OWNERS
@@ -1,3 +1,5 @@
 approvers:
   - feloy
 
+labels:
+- language/fr
diff --git a/i18n/ja/OWNERS b/i18n/ja/OWNERS
index 832580348..7edd30fd5 100644
--- a/i18n/ja/OWNERS
+++ b/i18n/ja/OWNERS
@@ -4,4 +4,3 @@ approvers:
 
 labels:
 - language/ja
-
diff --git a/i18n/ko/OWNERS b/i18n/ko/OWNERS
index 32020f0f3..057dc98a9 100644
--- a/i18n/ko/OWNERS
+++ b/i18n/ko/OWNERS
@@ -1,3 +1,5 @@
 approvers:
   - seokho-son
 
+labels:
+- language/ko
diff --git a/i18n/zh/OWNERS b/i18n/zh/OWNERS
new file mode 100644
index 000000000..54fbe2363
--- /dev/null
+++ b/i18n/zh/OWNERS
@@ -0,0 +1,2 @@
+labels:
+- language/zh
diff --git a/package-lock.json b/package-lock.json
index 13a595ed1..c47c8e846 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5,12 +5,12 @@
   "requires": true,
   "dependencies": {
     "@angular-devkit/architect": {
-      "version": "0.803.6",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.803.6.tgz",
-      "integrity": "sha512-8KWQa9xSG3wgNilFSa9zohpBw/phrn5Nv1Eq/jj1xoD5VH8+kYsHHD8YLbNrwwW6QujGdA+kgXtyWzJD30EG7A==",
+      "version": "0.803.9",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.803.9.tgz",
+      "integrity": "sha512-grbnPxZ8vnd1UWQUWdJKBxsG8kD6Pj9XtTOEqKg5gH9Vha1zKkEnROWG18TFZzHrJffCE8E18c0OgDIjz+pL3g==",
       "dev": true,
       "requires": {
-        "@angular-devkit/core": "8.3.6",
+        "@angular-devkit/core": "8.3.9",
         "rxjs": "6.4.0"
       },
       "dependencies": {
@@ -26,18 +26,18 @@
       }
     },
     "@angular-devkit/build-angular": {
-      "version": "0.803.6",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.803.6.tgz",
-      "integrity": "sha512-Dj6qsfXif/oSbnODOZg+8Pvwm/CItT5tCh3TEp2eyB9DFCpt/7rH7w0aKdnzxehGGD9oXFrXBoWPlwI2HebWsw==",
+      "version": "0.803.9",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.803.9.tgz",
+      "integrity": "sha512-fSA3b506Z06l+Lvbw8xxytG+/WcWclMoO3QTMec897shXAFAZNtK+3KtoF2VITTQcYP12MNIVM7TQiTGof70AQ==",
       "dev": true,
       "requires": {
-        "@angular-devkit/architect": "0.803.6",
-        "@angular-devkit/build-optimizer": "0.803.6",
-        "@angular-devkit/build-webpack": "0.803.6",
-        "@angular-devkit/core": "8.3.6",
+        "@angular-devkit/architect": "0.803.9",
+        "@angular-devkit/build-optimizer": "0.803.9",
+        "@angular-devkit/build-webpack": "0.803.9",
+        "@angular-devkit/core": "8.3.9",
         "@babel/core": "7.5.5",
         "@babel/preset-env": "7.5.5",
-        "@ngtools/webpack": "8.3.6",
+        "@ngtools/webpack": "8.3.9",
         "ajv": "6.10.2",
         "autoprefixer": "9.6.1",
         "browserslist": "4.6.6",
@@ -51,6 +51,7 @@
         "find-cache-dir": "3.0.0",
         "glob": "7.1.4",
         "istanbul-instrumenter-loader": "3.0.1",
+        "jest-worker": "24.9.0",
         "karma-source-map-support": "1.4.0",
         "less": "3.9.0",
         "less-loader": "5.0.0",
@@ -76,7 +77,7 @@
         "style-loader": "1.0.0",
         "stylus": "0.54.5",
         "stylus-loader": "3.0.2",
-        "terser": "4.1.4",
+        "terser": "4.3.8",
         "terser-webpack-plugin": "1.4.1",
         "tree-kill": "1.2.1",
         "webpack": "4.39.2",
@@ -85,7 +86,6 @@
         "webpack-merge": "4.2.1",
         "webpack-sources": "1.4.3",
         "webpack-subresource-integrity": "1.1.0-rc.6",
-        "worker-farm": "1.7.0",
         "worker-plugin": "3.2.0"
       },
       "dependencies": {
@@ -859,9 +859,9 @@
           }
         },
         "schema-utils": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.2.0.tgz",
-          "integrity": "sha512-5EwsCNhfFTZvUreQhx/4vVQpJ/lnCAkgoIHLhSpp4ZirE+4hzFvdJi0FMub6hxbFVBJYSpeVVmon+2e7uEGRrA==",
+          "version": "2.4.1",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.4.1.tgz",
+          "integrity": "sha512-RqYLpkPZX5Oc3fw/kHHHyP56fg5Y+XBpIpV8nCg0znIALfq3OH+Ea9Hfeac9BAMwG5IICltiZ0vxFvJQONfA5w==",
           "dev": true,
           "requires": {
             "ajv": "^6.10.2",
@@ -969,9 +969,9 @@
       }
     },
     "@angular-devkit/build-optimizer": {
-      "version": "0.803.6",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.803.6.tgz",
-      "integrity": "sha512-1l8BCfd1zj3vPN/N/dNux+XVxudZ3Ae0aMUvcY0NNkWR92ShCAtwyQUHAffZGDNmGvTyRy0k7vYt0knkhSSjNg==",
+      "version": "0.803.9",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.803.9.tgz",
+      "integrity": "sha512-AeuQroeK7eCTTc7JG+DLzglGGp8aymA+9hkFveOoUgqdhnCG9FaqBew8ZetBD6FEokU7eFT4bERJmgq497MTOg==",
       "dev": true,
       "requires": {
         "loader-utils": "1.2.3",
@@ -990,13 +990,13 @@
       }
     },
     "@angular-devkit/build-webpack": {
-      "version": "0.803.6",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.803.6.tgz",
-      "integrity": "sha512-Wfe0Y5+8kAwoIjUGv95KoUuEOTEwe5Gl+qU7q84ztCfprEeiYyUL/moT+7KnIyRctlpiGpFDXMSVJAIHMve+Mg==",
+      "version": "0.803.9",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.803.9.tgz",
+      "integrity": "sha512-IqS7xAEigI9Uwbv8WtcDN9YYqfYJsS/HxRq0XNYXUfHsdbZGb2qBrQ/8QODbh3V1S99yxTiPn0x+LYhO98zlnA==",
       "dev": true,
       "requires": {
-        "@angular-devkit/architect": "0.803.6",
-        "@angular-devkit/core": "8.3.6",
+        "@angular-devkit/architect": "0.803.9",
+        "@angular-devkit/core": "8.3.9",
         "rxjs": "6.4.0",
         "webpack-merge": "4.2.1"
       },
@@ -1013,9 +1013,9 @@
       }
     },
     "@angular-devkit/core": {
-      "version": "8.3.6",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.3.6.tgz",
-      "integrity": "sha512-kf4ViwjxERlyAnnrbenaUzPr0muixCyupzyiJ2RIuenK3ob9t1fnAsaugZt+Gfo54i3NgfBMKu1xNwnTR7HnAw==",
+      "version": "8.3.9",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.3.9.tgz",
+      "integrity": "sha512-LYNdY8UpcEGaqWq0smPhSAiz+Oq1gv4j1LGLLyY1d2CJpf4czIuI8SkTHtmGMjpKy8ss/Vk1mHwRjBrWB0dUag==",
       "dev": true,
       "requires": {
         "ajv": "6.10.2",
@@ -1079,9 +1079,9 @@
       }
     },
     "@angular/cdk": {
-      "version": "8.1.4",
-      "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-8.1.4.tgz",
-      "integrity": "sha512-U0tjhAZM4qqUHGGKIKFZZ9d8929s2U/HO0FdoT/eX+oHPOA6mm3bBep7myrSzlkP9V7O1JJfYdhEgijXhYxprQ==",
+      "version": "8.2.3",
+      "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-8.2.3.tgz",
+      "integrity": "sha512-ZwO5Sn720RA2YvBqud0JAHkZXjmjxM0yNzCO8RVtRE9i8Gl26Wk0j0nQeJkVm4zwv2QO8MwbKUKGTMt8evsokA==",
       "requires": {
         "parse5": "^5.0.0",
         "tslib": "^1.7.1"
@@ -2000,9 +2000,9 @@
       "dev": true
     },
     "@angular/material": {
-      "version": "8.1.4",
-      "resolved": "https://registry.npmjs.org/@angular/material/-/material-8.1.4.tgz",
-      "integrity": "sha512-HV1qU63MaOtAc+cWg21Y2ygQKdEDjsGQ/3d3qym9sfR0xU2vvY7OG6gH48BfPeU63oMYxQkhxfoGP8wWMXSU1w==",
+      "version": "8.2.3",
+      "resolved": "https://registry.npmjs.org/@angular/material/-/material-8.2.3.tgz",
+      "integrity": "sha512-SOczkIaqes+r+9XF/UUiokidfFKBpHkOPIaFK857sFD0FBNPvPEpOr5oHKCG3feERRwAFqHS7Wo2ohVEWypb5A==",
       "requires": {
         "tslib": "^1.7.1"
       }
@@ -2072,9 +2072,9 @@
           }
         },
         "json5": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz",
-          "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==",
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz",
+          "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==",
           "dev": true,
           "requires": {
             "minimist": "^1.2.0"
@@ -2319,21 +2319,21 @@
       },
       "dependencies": {
         "@babel/generator": {
-          "version": "7.6.2",
-          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.2.tgz",
-          "integrity": "sha512-j8iHaIW4gGPnViaIHI7e9t/Hl8qLjERI6DcV9kEpAIDJsAOrcnXqRS7t+QbhL76pwbtqP+QCQLL0z1CyVmtjjQ==",
+          "version": "7.6.4",
+          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.4.tgz",
+          "integrity": "sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w==",
           "dev": true,
           "requires": {
-            "@babel/types": "^7.6.0",
+            "@babel/types": "^7.6.3",
             "jsesc": "^2.5.1",
             "lodash": "^4.17.13",
             "source-map": "^0.5.0"
           }
         },
         "@babel/parser": {
-          "version": "7.6.2",
-          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.2.tgz",
-          "integrity": "sha512-mdFqWrSPCmikBoaBYMuBulzTIKuXVPtEISFbRRVNwMWpCms/hmE2kRq0bblUHaNRKrjRlmVbx1sDHmjmRgD2Xg==",
+          "version": "7.6.4",
+          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.4.tgz",
+          "integrity": "sha512-D8RHPW5qd0Vbyo3qb+YjO5nvUVRTXFLQ/FsDxJU2Nqz4uB5EnUN0ZQSEYpvTIbRuttig1XbHWU5oMeQwQSAA+A==",
           "dev": true
         },
         "@babel/template": {
@@ -2348,26 +2348,26 @@
           }
         },
         "@babel/traverse": {
-          "version": "7.6.2",
-          "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.2.tgz",
-          "integrity": "sha512-8fRE76xNwNttVEF2TwxJDGBLWthUkHWSldmfuBzVRmEDWOtu4XdINTgN7TDWzuLg4bbeIMLvfMFD9we5YcWkRQ==",
+          "version": "7.6.3",
+          "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.3.tgz",
+          "integrity": "sha512-unn7P4LGsijIxaAJo/wpoU11zN+2IaClkQAxcJWBNCMS6cmVh802IyLHNkAjQ0iYnRS3nnxk5O3fuXW28IMxTw==",
           "dev": true,
           "requires": {
             "@babel/code-frame": "^7.5.5",
-            "@babel/generator": "^7.6.2",
+            "@babel/generator": "^7.6.3",
             "@babel/helper-function-name": "^7.1.0",
             "@babel/helper-split-export-declaration": "^7.4.4",
-            "@babel/parser": "^7.6.2",
-            "@babel/types": "^7.6.0",
+            "@babel/parser": "^7.6.3",
+            "@babel/types": "^7.6.3",
             "debug": "^4.1.0",
             "globals": "^11.1.0",
             "lodash": "^4.17.13"
           }
         },
         "@babel/types": {
-          "version": "7.6.1",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.1.tgz",
-          "integrity": "sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g==",
+          "version": "7.6.3",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz",
+          "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==",
           "dev": true,
           "requires": {
             "esutils": "^2.0.2",
@@ -2546,9 +2546,9 @@
       }
     },
     "@babel/plugin-transform-block-scoping": {
-      "version": "7.6.2",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.2.tgz",
-      "integrity": "sha512-zZT8ivau9LOQQaOGC7bQLQOT4XPkPXgN2ERfUgk1X8ql+mVkLc4E8eKk+FO3o0154kxzqenWCorfmEXpEZcrSQ==",
+      "version": "7.6.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.3.tgz",
+      "integrity": "sha512-7hvrg75dubcO3ZI2rjYTzUrEuh1E9IyDEhhB6qfcooxhDA33xx2MasuLVgdxzcP6R/lipAC6n9ub9maNW6RKdw==",
       "dev": true,
       "requires": {
         "@babel/helper-plugin-utils": "^7.0.0",
@@ -2701,9 +2701,9 @@
       }
     },
     "@babel/plugin-transform-named-capturing-groups-regex": {
-      "version": "7.6.2",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.2.tgz",
-      "integrity": "sha512-xBdB+XOs+lgbZc2/4F5BVDVcDNS4tcSKQc96KmlqLEAwz6tpYPEvPdmDfvVG0Ssn8lAhronaRs6Z6KSexIpK5g==",
+      "version": "7.6.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.3.tgz",
+      "integrity": "sha512-jTkk7/uE6H2s5w6VlMHeWuH+Pcy2lmdwFoeWCVnvIrDUnB5gQqTVI8WfmEAhF2CDEarGrknZcmSFg1+bkfCoSw==",
       "dev": true,
       "requires": {
         "regexpu-core": "^4.6.0"
@@ -3035,12 +3035,12 @@
       }
     },
     "@ngtools/webpack": {
-      "version": "8.3.6",
-      "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-8.3.6.tgz",
-      "integrity": "sha512-G6VHUaGJDpK+ehCNnvxdq39BXA3XbnvvFWvF1qg9LVWOUYTnWCQMyTTAknrsrOZUIvMqxYxxVlQ6D//hff7JFA==",
+      "version": "8.3.9",
+      "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-8.3.9.tgz",
+      "integrity": "sha512-SicYBW+3GA0S3q2YMkbNeoidUK0mjiNYk/Im+WaNo9uxyE8Jq2Ui5NXQ9QUxANtFsaeFomXW5rUwCrgkLYLg0w==",
       "dev": true,
       "requires": {
-        "@angular-devkit/core": "8.3.6",
+        "@angular-devkit/core": "8.3.9",
         "enhanced-resolve": "4.1.0",
         "rxjs": "6.4.0",
         "tree-kill": "1.2.1",
@@ -3511,9 +3511,9 @@
       "integrity": "sha512-pGF/zvYOACZ/gLGWdQH8zSwteQS1epp68yRcVLJMgUck/MjEn/FBYmPub9pXT8C1e4a8YZfHo1CKyV8q1vKUnQ=="
     },
     "@types/jasmine": {
-      "version": "3.4.0",
-      "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.4.0.tgz",
-      "integrity": "sha512-6pUnBg6DuSB55xnxJ5+gW9JOkFrPsXkYAuqqEE8oyrpgDiPQ+TZ+1Zt4S+CHcRJcxyNYXeIXG4vHSzdF6y9Uvw==",
+      "version": "3.4.4",
+      "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.4.4.tgz",
+      "integrity": "sha512-+/sHcTPyDS1JQacDRRRWb+vNrjBwnD+cKvTaWlxlJ/uOOFvzCkjOwNaqVjYMLfsjzNi0WtDH9RyReDXPG1Cdug==",
       "dev": true
     },
     "@types/jasminewd2": {
@@ -3532,9 +3532,9 @@
       "dev": true
     },
     "@types/lodash": {
-      "version": "4.14.141",
-      "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.141.tgz",
-      "integrity": "sha512-v5NYIi9qEbFEUpCyikmnOYe4YlP8BMUdTcNCAquAKzu+FA7rZ1onj9x80mbnDdOW/K5bFf3Tv5kJplP33+gAbQ==",
+      "version": "4.14.143",
+      "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.143.tgz",
+      "integrity": "sha512-SJjLJkaSVYfRTLdi5llaabRVjWHQ86McEJ0BGNzHYREtJvlnJEHlaLcZ8s7Ah091QFfOeZTtiduoUN2gTcpTng==",
       "dev": true
     },
     "@types/minimatch": {
@@ -3544,9 +3544,9 @@
       "dev": true
     },
     "@types/node": {
-      "version": "12.7.9",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.9.tgz",
-      "integrity": "sha512-P57oKTJ/vYivL2BCfxCC5tQjlS8qW31pbOL6qt99Yrjm95YdHgNZwjrTTjMBh+C2/y6PXIX4oz253+jUzxKKfQ==",
+      "version": "12.7.12",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.12.tgz",
+      "integrity": "sha512-KPYGmfD0/b1eXurQ59fXD1GBzhSQfz6/lKBxkaHX9dKTzjXbK68Zt7yGUxUsCS1jeTy/8aL+d9JEr+S54mpkWQ==",
       "dev": true
     },
     "@types/normalize-package-data": {
@@ -6921,9 +6921,9 @@
       "dev": true
     },
     "c3": {
-      "version": "0.7.9",
-      "resolved": "https://registry.npmjs.org/c3/-/c3-0.7.9.tgz",
-      "integrity": "sha512-/oKEvC6yQIIqQtNC1R3GD+L+/dAF9svQ3TexNtyb5mugFhDvUdnp5pcWXmg6O9MZ6inwNF+RXuiREe62s0c7Kw==",
+      "version": "0.7.10",
+      "resolved": "https://registry.npmjs.org/c3/-/c3-0.7.10.tgz",
+      "integrity": "sha512-yf7wOiQWXCJVQNBN0RRILTMr/TYZunm+uTYiq/ldhWN8fhSjCpZ3ntDYk4u75m6G0cUhATLtdas3BbmJfito7A==",
       "requires": {
         "d3": "^5.8.0"
       }
@@ -7579,13 +7579,13 @@
       }
     },
     "concurrently": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-4.1.2.tgz",
-      "integrity": "sha512-Kim9SFrNr2jd8/0yNYqDTFALzUX1tvimmwFWxmp/D4mRI+kbqIIwE2RkBDrxS2ic25O1UgQMI5AtBqdtX3ynYg==",
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.0.0.tgz",
+      "integrity": "sha512-1yDvK8mduTIdxIxV9C60KoiOySUl/lfekpdbI+U5GXaPrgdffEavFa9QZB3vh68oWOpbCC+TuvxXV9YRPMvUrA==",
       "dev": true,
       "requires": {
         "chalk": "^2.4.2",
-        "date-fns": "^1.30.1",
+        "date-fns": "^2.0.1",
         "lodash": "^4.17.15",
         "read-pkg": "^4.0.1",
         "rxjs": "^6.5.2",
@@ -7595,6 +7595,12 @@
         "yargs": "^12.0.5"
       },
       "dependencies": {
+        "date-fns": {
+          "version": "2.4.1",
+          "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.4.1.tgz",
+          "integrity": "sha512-2RhmH/sjDSCYW2F3ZQxOUx/I7PvzXpi89aQL2d3OAxSTwLx6NilATeUbe0menFE3Lu5lFkOFci36ivimwYHHxw==",
+          "dev": true
+        },
         "has-flag": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
@@ -10193,9 +10199,9 @@
       },
       "dependencies": {
         "schema-utils": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.2.0.tgz",
-          "integrity": "sha512-5EwsCNhfFTZvUreQhx/4vVQpJ/lnCAkgoIHLhSpp4ZirE+4hzFvdJi0FMub6hxbFVBJYSpeVVmon+2e7uEGRrA==",
+          "version": "2.4.1",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.4.1.tgz",
+          "integrity": "sha512-RqYLpkPZX5Oc3fw/kHHHyP56fg5Y+XBpIpV8nCg0znIALfq3OH+Ea9Hfeac9BAMwG5IICltiZ0vxFvJQONfA5w==",
           "dev": true,
           "requires": {
             "ajv": "^6.10.2",
@@ -10680,9 +10686,9 @@
       "dev": true
     },
     "get-own-enumerable-property-symbols": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz",
-      "integrity": "sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg==",
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.1.tgz",
+      "integrity": "sha512-09/VS4iek66Dh2bctjRkowueRJbY1JDGR1L/zRxO1Qk8Uxs6PnqaNSqalpizPT+CDjre3hnEsuzvhgomz9qYrA==",
       "dev": true
     },
     "get-stdin": {
@@ -12458,9 +12464,9 @@
       }
     },
     "husky": {
-      "version": "3.0.6",
-      "resolved": "https://registry.npmjs.org/husky/-/husky-3.0.6.tgz",
-      "integrity": "sha512-bNTgujuC5VS0m8gK70zRpzXq9rccFUFcjuU6L/SFLZxV7eke+6x10Tpk+st3rmgCEsQ4vn+yJk1jx3gvSD8knQ==",
+      "version": "3.0.8",
+      "resolved": "https://registry.npmjs.org/husky/-/husky-3.0.8.tgz",
+      "integrity": "sha512-HFOsgcyrX3qe/rBuqyTt+P4Gxn5P0seJmr215LAZ/vnwK3jWB3r0ck7swbzGRUbufCf9w/lgHPVbF/YXQALgfQ==",
       "dev": true,
       "requires": {
         "chalk": "^2.4.2",
@@ -12839,9 +12845,9 @@
       }
     },
     "is-absolute-url": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.2.tgz",
-      "integrity": "sha512-+5g/wLlcm1AcxSP7014m6GvbPHswDx980vD/3bZaap8aGV9Yfs7Q6y6tfaupgZ5O74Byzc8dGrSCJ+bFXx0KdA==",
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz",
+      "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==",
       "dev": true
     },
     "is-accessor-descriptor": {
@@ -13475,6 +13481,27 @@
         "colors": "1.1.2"
       }
     },
+    "jest-worker": {
+      "version": "24.9.0",
+      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz",
+      "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==",
+      "dev": true,
+      "requires": {
+        "merge-stream": "^2.0.0",
+        "supports-color": "^6.1.0"
+      },
+      "dependencies": {
+        "supports-color": {
+          "version": "6.1.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+          "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        }
+      }
+    },
     "joi": {
       "version": "13.7.0",
       "resolved": "https://registry.npmjs.org/joi/-/joi-13.7.0.tgz",
@@ -13931,9 +13958,9 @@
       "dev": true
     },
     "lint-staged": {
-      "version": "9.4.1",
-      "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-9.4.1.tgz",
-      "integrity": "sha512-zFRbo1bAJEVf1m33paTTjDVfy2v3lICCqHfmQSgNoI+lWpi7HPG5y/R2Y7Whdce+FKxlZYs/U1sDSx8+nmQdDA==",
+      "version": "9.4.2",
+      "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-9.4.2.tgz",
+      "integrity": "sha512-OFyGokJSWTn2M6vngnlLXjaHhi8n83VIZZ5/1Z26SULRUWgR3ITWpAEQC9Pnm3MC/EpCxlwts/mQWDHNji2+zA==",
       "dev": true,
       "requires": {
         "chalk": "^2.4.2",
@@ -13989,9 +14016,9 @@
           }
         },
         "execa": {
-          "version": "2.0.4",
-          "resolved": "https://registry.npmjs.org/execa/-/execa-2.0.4.tgz",
-          "integrity": "sha512-VcQfhuGD51vQUQtKIq2fjGDLDbL6N1DTQVpYzxZ7LPIXw3HqTuIz6uxRmpV1qf8i31LHf2kjiaGI+GdHwRgbnQ==",
+          "version": "2.0.5",
+          "resolved": "https://registry.npmjs.org/execa/-/execa-2.0.5.tgz",
+          "integrity": "sha512-SwmwZZyJjflcqLSgllk4EQlMLst2p9muyzwNugKGFlpAz6rZ7M+s2nBR97GAq4Vzjwx2y9rcMcmqzojwN+xwNA==",
           "dev": true,
           "requires": {
             "cross-spawn": "^6.0.5",
@@ -15771,9 +15798,9 @@
       }
     },
     "node-forge": {
-      "version": "0.8.2",
-      "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.2.tgz",
-      "integrity": "sha512-mXQ9GBq1N3uDCyV1pdSzgIguwgtVpM7f5/5J4ipz12PKWElmPpVWLDuWl8iXmhysr21+WmX/OJ5UKx82wjomgg==",
+      "version": "0.9.0",
+      "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz",
+      "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==",
       "dev": true
     },
     "node-gyp": {
@@ -15851,20 +15878,12 @@
       }
     },
     "node-releases": {
-      "version": "1.1.32",
-      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.32.tgz",
-      "integrity": "sha512-VhVknkitq8dqtWoluagsGPn3dxTvN9fwgR59fV3D7sLBHe0JfDramsMI8n8mY//ccq/Kkrf8ZRHRpsyVZ3qw1A==",
+      "version": "1.1.35",
+      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.35.tgz",
+      "integrity": "sha512-JGcM/wndCN/2elJlU0IGdVEJQQnJwsLbgPCFd2pY7V0mxf17bZ0Gb/lgOtL29ZQhvEX5shnVhxQyZz3ex94N8w==",
       "dev": true,
       "requires": {
-        "semver": "^5.3.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-          "dev": true
-        }
+        "semver": "^6.3.0"
       }
     },
     "node-sass": {
@@ -19395,12 +19414,12 @@
       "dev": true
     },
     "selfsigned": {
-      "version": "1.10.6",
-      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.6.tgz",
-      "integrity": "sha512-i3+CeqxL7DpAazgVpAGdKMwHuL63B5nhJMh9NQ7xmChGkA3jNFflq6Jyo1LLJYcr3idWiNOPWHCrm4zMayLG4w==",
+      "version": "1.10.7",
+      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz",
+      "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==",
       "dev": true,
       "requires": {
-        "node-forge": "0.8.2"
+        "node-forge": "0.9.0"
       }
     },
     "semver": {
@@ -20721,9 +20740,9 @@
       },
       "dependencies": {
         "schema-utils": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.2.0.tgz",
-          "integrity": "sha512-5EwsCNhfFTZvUreQhx/4vVQpJ/lnCAkgoIHLhSpp4ZirE+4hzFvdJi0FMub6hxbFVBJYSpeVVmon+2e7uEGRrA==",
+          "version": "2.4.1",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.4.1.tgz",
+          "integrity": "sha512-RqYLpkPZX5Oc3fw/kHHHyP56fg5Y+XBpIpV8nCg0znIALfq3OH+Ea9Hfeac9BAMwG5IICltiZ0vxFvJQONfA5w==",
           "dev": true,
           "requires": {
             "ajv": "^6.10.2",
@@ -20808,9 +20827,9 @@
       "dev": true
     },
     "systemjs": {
-      "version": "6.1.2",
-      "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-6.1.2.tgz",
-      "integrity": "sha512-QN0E62xEGCjp4+Wwg5o50CgdlMkQdUkiw5rHKQNJ454iKJCsFmQjPBoCEs1xq8mM/J+eYtLkZS0JCcay/gaEFw=="
+      "version": "6.1.3",
+      "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-6.1.3.tgz",
+      "integrity": "sha512-gchy3HVD7U7frun2RT3ApxjLtekG39KQXpLhNxRR5HSWqA1+p3dxPXrmvoevEsKAhCEPi2MjZ75zPBDiftic8A=="
     },
     "table": {
       "version": "3.8.3",
@@ -20992,9 +21011,9 @@
       }
     },
     "terser": {
-      "version": "4.1.4",
-      "resolved": "https://registry.npmjs.org/terser/-/terser-4.1.4.tgz",
-      "integrity": "sha512-+ZwXJvdSwbd60jG0Illav0F06GDJF0R4ydZ21Q3wGAFKoBGyJGo34F63vzJHgvYxc1ukOtIjvwEvl9MkjzM6Pg==",
+      "version": "4.3.8",
+      "resolved": "https://registry.npmjs.org/terser/-/terser-4.3.8.tgz",
+      "integrity": "sha512-otmIRlRVmLChAWsnSFNO0Bfk6YySuBp6G9qrHiJwlLDd4mxe2ta4sjI7TzIR+W1nBMjilzrMcPOz9pSusgx3hQ==",
       "dev": true,
       "requires": {
         "commander": "^2.20.0",
diff --git a/package.json b/package.json
index 24a2c9ac4..74e7e03c3 100644
--- a/package.json
+++ b/package.json
@@ -93,14 +93,14 @@
   },
   "dependencies": {
     "@angular/animations": "8.0.3",
-    "@angular/cdk": "8.1.4",
+    "@angular/cdk": "8.2.3",
     "@angular/common": "8.0.3",
     "@angular/compiler": "8.0.3",
     "@angular/core": "8.0.3",
     "@angular/flex-layout": "8.0.0-beta.27",
     "@angular/forms": "8.0.3",
     "@angular/http": "7.2.15",
-    "@angular/material": "8.1.4",
+    "@angular/material": "8.2.3",
     "@angular/platform-browser": "8.0.3",
     "@angular/platform-browser-dynamic": "8.0.3",
     "@angular/router": "8.0.3",
@@ -110,7 +110,7 @@
     "@types/file-saver": "2.0.1",
     "@types/highlight.js": "^9.12.3",
     "ace-builds": "1.4.6",
-    "c3": "0.7.9",
+    "c3": "0.7.10",
     "core-js": "3.1.4",
     "d3": "5.10.1",
     "file-saver": "2.0.2",
@@ -123,7 +123,7 @@
     "ngx-filter-pipe": "2.1.2",
     "normalize.css": "8.0.1",
     "roboto-fontface": "0.10.0",
-    "systemjs": "6.1.2",
+    "systemjs": "6.1.3",
     "rxjs": "6.5.2",
     "rxjs-compat": "6.5.3",
     "sockjs-client": "1.4.0",
@@ -133,20 +133,20 @@
     "zone.js": "0.9.1"
   },
   "devDependencies": {
-    "@angular-devkit/build-angular": "0.803.6",
+    "@angular-devkit/build-angular": "0.803.9",
     "@angular/cli": "8.3.7",
     "@angular/compiler-cli": "8.0.3",
     "@angular/language-service": "8.0.3",
-    "@types/jasmine": "3.4.0",
+    "@types/jasmine": "3.4.4",
     "@types/jasminewd2": "2.0.8",
     "@types/js-yaml": "3.12.1",
-    "@types/lodash": "4.14.141",
-    "@types/node": "12.7.9",
+    "@types/lodash": "4.14.143",
+    "@types/node": "12.7.12",
     "babel": "6.23.0",
     "babel-preset-env": "1.7.0",
     "babel-register": "6.26.0",
     "codelyzer": "4.5.0",
-    "concurrently": "4.1.2",
+    "concurrently": "5.0.0",
     "cypress": "3.4.1",
     "del": "5.1.0",
     "git-describe": "4.0.4",
@@ -155,7 +155,7 @@
     "gulp-filter": "6.0.0",
     "gulp-header-license": "1.0.9",
     "gulp-license-check": "1.2.1",
-    "husky": "3.0.6",
+    "husky": "3.0.8",
     "jasmine-core": "3.5.0",
     "jasmine-spec-reporter": "4.2.1",
     "js-beautify": "1.10.2",
@@ -166,7 +166,7 @@
     "karma-firefox-launcher": "1.2.0",
     "karma-jasmine": "2.0.1",
     "karma-jasmine-html-reporter": "1.4.2",
-    "lint-staged": "9.4.1",
+    "lint-staged": "9.4.2",
     "lite-server": "2.4.0",
     "lodash": "4.17.13",
     "minimatch": "3.0.4",
diff --git a/src/app/backend/api/types.go b/src/app/backend/api/types.go
index f93aa39ae..226a3a57f 100644
--- a/src/app/backend/api/types.go
+++ b/src/app/backend/api/types.go
@@ -187,12 +187,13 @@ type APIMapping struct {
 }
 
 // Mapping from resource kind to K8s apiserver API path. This is mostly pluralization, because
-// K8s apiserver uses plural paths and this project singular.
+// Kubernetes apiserver uses plural paths and this project singular.
 // Must be kept in sync with the list of supported kinds.
+// See: https://kubernetes.io/docs/reference/
 var KindToAPIMapping = map[string]APIMapping{
 	ResourceKindConfigMap:                {"configmaps", ClientTypeDefault, true},
-	ResourceKindDaemonSet:                {"daemonsets", ClientTypeExtensionClient, true},
-	ResourceKindDeployment:               {"deployments", ClientTypeExtensionClient, true},
+	ResourceKindDaemonSet:                {"daemonsets", ClientTypeAppsClient, true},
+	ResourceKindDeployment:               {"deployments", ClientTypeAppsClient, true},
 	ResourceKindEvent:                    {"events", ClientTypeDefault, true},
 	ResourceKindHorizontalPodAutoscaler:  {"horizontalpodautoscalers", ClientTypeAutoscalingClient, true},
 	ResourceKindIngress:                  {"ingresses", ClientTypeExtensionClient, true},
@@ -205,7 +206,7 @@ var KindToAPIMapping = map[string]APIMapping{
 	ResourceKindPersistentVolume:         {"persistentvolumes", ClientTypeDefault, false},
 	ResourceKindCustomResourceDefinition: {"customresourcedefinitions", ClientTypeAPIExtensionsClient, false},
 	ResourceKindPod:                      {"pods", ClientTypeDefault, true},
-	ResourceKindReplicaSet:               {"replicasets", ClientTypeExtensionClient, true},
+	ResourceKindReplicaSet:               {"replicasets", ClientTypeAppsClient, true},
 	ResourceKindReplicationController:    {"replicationcontrollers", ClientTypeDefault, true},
 	ResourceKindResourceQuota:            {"resourcequotas", ClientTypeDefault, true},
 	ResourceKindSecret:                   {"secrets", ClientTypeDefault, true},
diff --git a/src/app/backend/client/manager.go b/src/app/backend/client/manager.go
index 85ac6e39f..d4384dbad 100644
--- a/src/app/backend/client/manager.go
+++ b/src/app/backend/client/manager.go
@@ -261,7 +261,7 @@ func (self *clientManager) VerberClient(req *restful.Request, config *rest.Confi
 		k8sClient.ExtensionsV1beta1().RESTClient(), k8sClient.AppsV1().RESTClient(),
 		k8sClient.BatchV1().RESTClient(), k8sClient.BatchV1beta1().RESTClient(), k8sClient.AutoscalingV1().RESTClient(),
 		k8sClient.StorageV1().RESTClient(), k8sClient.RbacV1().RESTClient(),
-		apiextensionsclient.ApiextensionsV1beta1().RESTClient(),
+		apiextensionsclient.ApiextensionsV1().RESTClient(),
 		pluginsclient.DashboardV1alpha1().RESTClient(),
 		config), nil
 }
diff --git a/src/app/backend/resource/deployment/deploy.go b/src/app/backend/resource/deployment/deploy.go
index ee089774a..fa6d7d0dd 100644
--- a/src/app/backend/resource/deployment/deploy.go
+++ b/src/app/backend/resource/deployment/deploy.go
@@ -214,10 +214,6 @@ func DeployApp(spec *AppDeploymentSpec, client client.Interface) error {
 			Replicas: &spec.Replicas,
 			Template: podTemplate,
 			Selector: &metaV1.LabelSelector{
-				// Quoting from https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#selector:
-				// In API version apps/v1beta2, .spec.selector and .metadata.labels no longer default to
-				// .spec.template.metadata.labels if not set. So they must be set explicitly.
-				// Also note that .spec.selector is immutable after creation of the Deployment in apps/v1beta2.
 				MatchLabels: labels,
 			},
 		},
diff --git a/src/app/backend/scaling/scale.go b/src/app/backend/scaling/scale.go
index 98790092f..88ea7f9df 100644
--- a/src/app/backend/scaling/scale.go
+++ b/src/app/backend/scaling/scale.go
@@ -17,6 +17,7 @@ package scaling
 import (
 	"strconv"
 
+	apps "k8s.io/api/apps/v1"
 	"k8s.io/apimachinery/pkg/runtime/schema"
 	"k8s.io/client-go/discovery"
 	"k8s.io/client-go/discovery/cached/memory"
@@ -25,7 +26,6 @@ import (
 	"k8s.io/client-go/rest"
 	"k8s.io/client-go/restmapper"
 	"k8s.io/client-go/scale"
-	"k8s.io/client-go/scale/scheme/appsv1beta2"
 )
 
 // ReplicaCounts provide the desired and actual number of replicas.
@@ -92,7 +92,7 @@ func getScaleGetter(cfg *rest.Config) (scale.ScalesGetter, error) {
 		return nil, err
 	}
 
-	cfg.GroupVersion = &appsv1beta2.SchemeGroupVersion
+	cfg.GroupVersion = &apps.SchemeGroupVersion
 	cfg.NegotiatedSerializer = scheme.Codecs
 
 	restClient, err := rest.RESTClientFor(cfg)
@@ -117,6 +117,6 @@ func getGroupResource(kind string) schema.GroupResource {
 	if gr.Group != "" && gr.Resource != "" {
 		return gr
 	} else {
-		return appsv1beta2.Resource(kind)
+		return apps.Resource(kind)
 	}
 }
diff --git a/src/app/frontend/common/components/chips/component.ts b/src/app/frontend/common/components/chips/component.ts
index 45edcd405..e356e00c6 100644
--- a/src/app/frontend/common/components/chips/component.ts
+++ b/src/app/frontend/common/components/chips/component.ts
@@ -37,7 +37,7 @@ const URL_REGEXP = new RegExp(
   'i',
 );
 
-const MAX_CHIP_VALUE_LENGHT = 63;
+const MAX_CHIP_VALUE_LENGTH = 63;
 
 @Component({
   selector: 'kd-chips',
@@ -76,7 +76,7 @@ export class ChipsComponent implements OnInit {
   }
 
   isTooLong(value: string): boolean {
-    return value !== undefined && value.length > MAX_CHIP_VALUE_LENGHT;
+    return value !== undefined && value.length > MAX_CHIP_VALUE_LENGTH;
   }
 
   isHref(value: string): boolean {
diff --git a/src/app/frontend/common/components/graph/component.ts b/src/app/frontend/common/components/graph/component.ts
index 8ee6b9ac9..7bbf501f8 100644
--- a/src/app/frontend/common/components/graph/component.ts
+++ b/src/app/frontend/common/components/graph/component.ts
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-import {AfterViewInit, Component, Input, OnInit} from '@angular/core';
+import {AfterViewInit, Component, Input, OnChanges, OnInit, SimpleChanges} from '@angular/core';
 import {Metric} from '@api/backendapi';
 import {generate} from 'c3';
 import {timeFormat} from 'd3';
@@ -21,7 +21,7 @@ import {select} from 'd3-selection';
 import {coresFilter, memoryFilter} from './helper';
 
 @Component({selector: 'kd-graph', templateUrl: './template.html'})
-export class GraphComponent implements OnInit, AfterViewInit {
+export class GraphComponent implements OnInit, AfterViewInit, OnChanges {
   @Input() metric: Metric;
   @Input() id: string;
   private name: string;
@@ -39,6 +39,17 @@ export class GraphComponent implements OnInit, AfterViewInit {
     }
   }
 
+  ngOnChanges(changes: SimpleChanges): void {
+    if (changes['id']) {
+      this.name = changes['id'].currentValue;
+    }
+
+    if (changes['metric']) {
+      this.metric = changes['metric'].currentValue;
+      this.generateGraph();
+    }
+  }
+
   private generateGraph() {
     generate({
       bindto: select(`#${this.id}`),
diff --git a/src/app/frontend/common/components/graphcard/component.spec.ts b/src/app/frontend/common/components/graphcard/component.spec.ts
index da07eb409..c00041ddb 100644
--- a/src/app/frontend/common/components/graphcard/component.spec.ts
+++ b/src/app/frontend/common/components/graphcard/component.spec.ts
@@ -61,27 +61,15 @@ describe('GraphCardComponent', () => {
     expect(component.selectedMetric).toBeUndefined();
   });
 
-  it('should return correct boolean with selectedMetric value', () => {
+  it('should show graph when metrics are provided', () => {
     const component = testHostFixture.componentInstance;
     expect(component.shouldShowGraph()).toBeFalsy();
 
-    component.selectedMetricName = 'sum';
+    component.graphTitle = 'CPU';
+    component.selectedMetricName = 'cpu/usage';
     component.selectedMetric = testMetrics[0];
 
     testHostFixture.detectChanges();
     expect(component.shouldShowGraph()).toBeTruthy();
   });
-
-  it('should select correct metric from input metrics array', () => {
-    const component = testHostFixture.componentInstance;
-    component.ngOnChanges({
-      metrics: new SimpleChange(null, testMetrics, true),
-    });
-
-    testHostFixture.detectChanges();
-
-    component.selectedMetricName = testMetrics[0].metricName;
-    component.selectedMetric = testMetrics[0];
-    expect(component.selectedMetric.metricName).toBe(testMetrics[0].metricName);
-  });
 });
diff --git a/src/app/frontend/common/components/namespace/template.html b/src/app/frontend/common/components/namespace/template.html
index 7cfaaab49..b61315a80 100644
--- a/src/app/frontend/common/components/namespace/template.html
+++ b/src/app/frontend/common/components/namespace/template.html
@@ -26,6 +26,7 @@ limitations under the License.
              [(ngModel)]="selectNamespaceInput"
              name="selectNamespaceInput"
              class="kd-namespace-select-input"
+             autocomplete="off"
              (keydown)="$event.keyCode === 13 ? selectNamespace() : null">
     </div>
     <mat-option *ngIf="namespaces.length"


Test patch:
diff --git a/aio/test-resources/nginx-daemon-daemon-set.yaml b/aio/test-resources/nginx-daemon-daemon-set.yaml
index f2b5f7877..0b22291b4 100644
--- a/aio/test-resources/nginx-daemon-daemon-set.yaml
+++ b/aio/test-resources/nginx-daemon-daemon-set.yaml
@@ -14,7 +14,7 @@
 
 # A manifest that creates a daemon set.
 
-apiVersion: extensions/v1beta1
+apiVersion: apps/v1
 kind: DaemonSet
 metadata:
   name: nginx-daemon
diff --git a/aio/test-resources/plugin-crd.yml b/aio/test-resources/plugin-crd.yml
index cba1ce43f..cd450f037 100644
--- a/aio/test-resources/plugin-crd.yml
+++ b/aio/test-resources/plugin-crd.yml
@@ -1,4 +1,4 @@
-apiVersion: apiextensions.k8s.io/v1beta1
+apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
 metadata:
   name: plugins.dashboard.k8s.io
diff --git a/src/app/backend/client/verber_test.go b/src/app/backend/client/verber_test.go
index 85b785de6..b1acc9fba 100644
--- a/src/app/backend/client/verber_test.go
+++ b/src/app/backend/client/verber_test.go
@@ -77,7 +77,7 @@ func TestDeleteShouldPropagateErrorsAndChoseClient(t *testing.T) {
 
 	err := verber.Delete("replicaset", true, "bar", "baz")
 
-	if !reflect.DeepEqual(err, errors.NewInvalid("err from extensions")) {
+	if !reflect.DeepEqual(err, errors.NewInvalid("err from apps")) {
 		t.Fatalf("Expected error on verber delete but got %#v", err.Error())
 	}
 
@@ -103,7 +103,7 @@ func TestGetShouldPropagateErrorsAndChoseClient(t *testing.T) {
 
 	_, err := verber.Get("replicaset", true, "bar", "baz")
 
-	if !reflect.DeepEqual(err, errors.NewInvalid("err from extensions")) {
+	if !reflect.DeepEqual(err, errors.NewInvalid("err from apps")) {
 		t.Fatalf("Expected error on verber delete but got %#v", err)
 	}