Repository: kubernetes/dashboard
Pull request #5712 (2020-12-10 07:38:26)

Display the service type
the api return the type of service, but it doesn't display on the ui.
this pr add this feature.
![image](https://user-images.githubusercontent.com/433500/101736024-b99ad100-3afd-11eb-9f6d-32ff45bdc6ad.png)


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

This pull-request has been approved by: *<a href="https://github.com/kubernetes/dashboard/pull/5712#" title="Author self-approved">helight</a>*
To complete the [pull request process](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process), please assign **shu-mutou** after the PR has been reviewed.
You can assign the PR to them by writing `/assign @shu-mutou` in a comment when ready.

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

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

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

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":["shu-mutou"]} -->
floreks: Add it after labels column.
codecov[bot]: # [Codecov](https://codecov.io/gh/kubernetes/dashboard/pull/5712?src=pr&el=h1) Report
> Merging [#5712](https://codecov.io/gh/kubernetes/dashboard/pull/5712?src=pr&el=desc) (b2508bb) into [master](https://codecov.io/gh/kubernetes/dashboard/commit/bed43d0ff72920a19b4efff2b90e74fcae7a09f6?el=desc) (bed43d0) will **not change** coverage.
> The diff coverage is `n/a`.

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

```diff
@@           Coverage Diff           @@
##           master    #5712   +/-   ##
=======================================
  Coverage   44.37%   44.37%           
=======================================
  Files         214      214           
  Lines        9124     9124           
  Branches      113      113           
=======================================
  Hits         4049     4049           
  Misses       4801     4801           
  Partials      274      274           
```



------

[Continue to review full report at Codecov](https://codecov.io/gh/kubernetes/dashboard/pull/5712?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/5712?src=pr&el=footer). Last update [bed43d0...b2508bb](https://codecov.io/gh/kubernetes/dashboard/pull/5712?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

helight: > labels

ok
![image](https://user-images.githubusercontent.com/433500/101739641-c8d04d80-3b02-11eb-9257-072a9212a70f.png)

maciaszczykm: /approve

Code check has failed. I have restated it but if it will fail again then please take a look on it.
k8s-ci-robot: [APPROVALNOTIFIER] This PR is **APPROVED**

This pull-request has been approved by: *<a href="https://github.com/kubernetes/dashboard/pull/5712#" title="Author self-approved">helight</a>*, *<a href="https://github.com/kubernetes/dashboard/pull/5712#issuecomment-742383093" title="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":[]} -->

Patch:
diff --git a/README.md b/README.md
index 67fd11ef0..d1e62ae4f 100644
--- a/README.md
+++ b/README.md
@@ -20,7 +20,7 @@ Kubernetes Dashboard is a general purpose, web-based UI for Kubernetes clusters.
 To deploy Dashboard, execute following command:
 
 ```sh
-$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.5/aio/deploy/recommended.yaml
+$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.1.0/aio/deploy/recommended.yaml
 ```
 
 Alternatively, you can install Dashboard using Helm as described at https://artifacthub.io/packages/helm/k8s-dashboard/kubernetes-dashboard.
diff --git a/aio/deploy/alternative.yaml b/aio/deploy/alternative.yaml
index 2b8beb171..534c3ac29 100644
--- a/aio/deploy/alternative.yaml
+++ b/aio/deploy/alternative.yaml
@@ -176,7 +176,7 @@ spec:
     spec:
       containers:
         - name: kubernetes-dashboard
-          image: kubernetesui/dashboard:v2.0.5
+          image: kubernetesui/dashboard:v2.1.0
           ports:
             - containerPort: 9090
               protocol: TCP
diff --git a/aio/deploy/alternative/06_dashboard-deployment.yaml b/aio/deploy/alternative/06_dashboard-deployment.yaml
index adb010ca7..47055c67b 100644
--- a/aio/deploy/alternative/06_dashboard-deployment.yaml
+++ b/aio/deploy/alternative/06_dashboard-deployment.yaml
@@ -34,7 +34,7 @@ spec:
     spec:
       containers:
         - name: kubernetes-dashboard
-          image: kubernetesui/dashboard:v2.0.5
+          image: kubernetesui/dashboard:v2.1.0
           ports:
             - containerPort: 9090
               protocol: TCP
diff --git a/aio/deploy/helm-chart/kubernetes-dashboard/Chart.yaml b/aio/deploy/helm-chart/kubernetes-dashboard/Chart.yaml
index 2415c9c53..c3649cadd 100644
--- a/aio/deploy/helm-chart/kubernetes-dashboard/Chart.yaml
+++ b/aio/deploy/helm-chart/kubernetes-dashboard/Chart.yaml
@@ -14,8 +14,8 @@
 
 apiVersion: v1
 name: kubernetes-dashboard
-version: 3.0.1
-appVersion: 2.0.5
+version: 3.0.2
+appVersion: 2.1.0
 description: General-purpose web UI for Kubernetes clusters
 keywords:
 - kubernetes
diff --git a/aio/deploy/helm-chart/kubernetes-dashboard/README.md b/aio/deploy/helm-chart/kubernetes-dashboard/README.md
index 8a1474ac8..6fb66d2e1 100644
--- a/aio/deploy/helm-chart/kubernetes-dashboard/README.md
+++ b/aio/deploy/helm-chart/kubernetes-dashboard/README.md
@@ -75,7 +75,7 @@ The following table lists the configurable parameters of the kubernetes-dashboar
 Parameter                                       | Description                                                                                                                      | Default
 ------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------
 `image.repository`                              | Repository for container image                                                                                                   | `kubernetesui/dashboard`
-`image.tag`                                     | Image tag                                                                                                                        | `v2.0.5`
+`image.tag`                                     | Image tag                                                                                                                        | `v2.1.0`
 `image.pullPolicy`                              | Image pull policy                                                                                                                | `IfNotPresent`
 `image.pullSecrets`                             | Image pull secrets                                                                                                               | `[]`
 `replicaCount`                                  | Number of replicas                                                                                                               | `1`
diff --git a/aio/deploy/helm-chart/kubernetes-dashboard/values.yaml b/aio/deploy/helm-chart/kubernetes-dashboard/values.yaml
index f62e61b99..0064db2b5 100644
--- a/aio/deploy/helm-chart/kubernetes-dashboard/values.yaml
+++ b/aio/deploy/helm-chart/kubernetes-dashboard/values.yaml
@@ -19,7 +19,7 @@
 
 image:
   repository: kubernetesui/dashboard
-  tag: v2.0.5
+  tag: v2.1.0
   pullPolicy: IfNotPresent
   pullSecrets: []
 
diff --git a/aio/deploy/recommended.yaml b/aio/deploy/recommended.yaml
index bb885e70c..0422a493e 100644
--- a/aio/deploy/recommended.yaml
+++ b/aio/deploy/recommended.yaml
@@ -187,7 +187,7 @@ spec:
     spec:
       containers:
         - name: kubernetes-dashboard
-          image: kubernetesui/dashboard:v2.0.5
+          image: kubernetesui/dashboard:v2.1.0
           imagePullPolicy: Always
           ports:
             - containerPort: 8443
diff --git a/aio/deploy/recommended/06_dashboard-deployment.yaml b/aio/deploy/recommended/06_dashboard-deployment.yaml
index 3bc6ada44..1fbc2946e 100644
--- a/aio/deploy/recommended/06_dashboard-deployment.yaml
+++ b/aio/deploy/recommended/06_dashboard-deployment.yaml
@@ -34,7 +34,7 @@ spec:
     spec:
       containers:
         - name: kubernetes-dashboard
-          image: kubernetesui/dashboard:v2.0.5
+          image: kubernetesui/dashboard:v2.1.0
           imagePullPolicy: Always
           ports:
             - containerPort: 8443
diff --git a/aio/gulp/conf.js b/aio/gulp/conf.js
index dbde7edd7..e6e9966b8 100644
--- a/aio/gulp/conf.js
+++ b/aio/gulp/conf.js
@@ -53,7 +53,7 @@ const version = {
   /**
    * Current release version of the project.
    */
-  release: 'v2.0.5',
+  release: 'v2.1.0',
   /**
    * Version name of the head release of the project.
    */
diff --git a/docs/user/installation.md b/docs/user/installation.md
index 93602ca40..95687d25c 100644
--- a/docs/user/installation.md
+++ b/docs/user/installation.md
@@ -19,7 +19,7 @@ kubectl create secret generic kubernetes-dashboard-certs --from-file=$HOME/certs
 For Dashboard to pickup the certificates, you must pass arguments `--tls-cert-file=/tls.crt` and `--tls-key-file=/tls.key` to the container. You can edit YAML definition and deploy Dashboard in one go:
 
 ```
-kubectl create --edit -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.5/aio/deploy/recommended.yaml
+kubectl create --edit -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.1.0/aio/deploy/recommended.yaml
 ```
 
 Under Deployment section, add arguments to pod definition, it should look as follows:
diff --git a/i18n/de/messages.de.xlf b/i18n/de/messages.de.xlf
index cfcdcb68b..9adec7bc1 100644
--- a/i18n/de/messages.de.xlf
+++ b/i18n/de/messages.de.xlf
@@ -1689,7 +1689,7 @@
         <target>Cluster-IP</target>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">78</context>
+          <context context-type="linenumber">84</context>
         </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/resource/discovery/service/detail/template.html</context>
@@ -1701,7 +1701,7 @@
         <target>Interne Endpoints</target>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">84</context>
+          <context context-type="linenumber">90</context>
         </context-group>
       </trans-unit>
       <trans-unit id="cfe8c5b521a487c8f2f9d2d4232032bfe2e609ec" datatype="html">
@@ -1709,7 +1709,7 @@
         <target>Externe Endpoints</target>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">92</context>
+          <context context-type="linenumber">98</context>
         </context-group>
       </trans-unit>
       <trans-unit id="78da621b65ff6583de3d5b446cea93aeced674df" datatype="html">
@@ -2113,6 +2113,10 @@
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/secret/template.html</context>
           <context context-type="linenumber">69</context>
         </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
+          <context context-type="linenumber">78</context>
+        </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/resource/cluster/persistentvolume/detail/source/template.html</context>
           <context context-type="linenumber">27</context>
@@ -2399,7 +2403,7 @@
         </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">102</context>
+          <context context-type="linenumber">108</context>
         </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/serviceaccount/template.html</context>
diff --git a/i18n/fr/messages.fr.xlf b/i18n/fr/messages.fr.xlf
index 69993283f..bb09baf24 100644
--- a/i18n/fr/messages.fr.xlf
+++ b/i18n/fr/messages.fr.xlf
@@ -1693,7 +1693,7 @@
         <target>IP cluster</target>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">78</context>
+          <context context-type="linenumber">84</context>
         </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/resource/discovery/service/detail/template.html</context>
@@ -1705,7 +1705,7 @@
         <target>Terminaisons internes</target>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">84</context>
+          <context context-type="linenumber">90</context>
         </context-group>
       </trans-unit>
       <trans-unit id="cfe8c5b521a487c8f2f9d2d4232032bfe2e609ec" datatype="html">
@@ -1713,7 +1713,7 @@
         <target>Terminaisons externes</target>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">92</context>
+          <context context-type="linenumber">98</context>
         </context-group>
       </trans-unit>
       <trans-unit id="78da621b65ff6583de3d5b446cea93aeced674df" datatype="html">
@@ -2117,6 +2117,10 @@
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/secret/template.html</context>
           <context context-type="linenumber">69</context>
         </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
+          <context context-type="linenumber">78</context>
+        </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/resource/cluster/persistentvolume/detail/source/template.html</context>
           <context context-type="linenumber">27</context>
@@ -2403,7 +2407,7 @@
         </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">102</context>
+          <context context-type="linenumber">108</context>
         </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/serviceaccount/template.html</context>
diff --git a/i18n/ja/messages.ja.xlf b/i18n/ja/messages.ja.xlf
index 005a9e5cb..16f0c64ca 100644
--- a/i18n/ja/messages.ja.xlf
+++ b/i18n/ja/messages.ja.xlf
@@ -1159,7 +1159,7 @@
         </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">102</context>
+          <context context-type="linenumber">108</context>
         </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/serviceaccount/template.html</context>
@@ -1313,6 +1313,10 @@
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/secret/template.html</context>
           <context context-type="linenumber">69</context>
         </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
+          <context context-type="linenumber">78</context>
+        </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/resource/cluster/persistentvolume/detail/source/template.html</context>
           <context context-type="linenumber">27</context>
@@ -2474,7 +2478,7 @@
         <target>クラスター IP</target>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">78</context>
+          <context context-type="linenumber">84</context>
         </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/resource/discovery/service/detail/template.html</context>
@@ -2486,7 +2490,7 @@
         <target>内部エンドポイント</target>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">84</context>
+          <context context-type="linenumber">90</context>
         </context-group>
       </trans-unit>
       <trans-unit id="cfe8c5b521a487c8f2f9d2d4232032bfe2e609ec" datatype="html">
@@ -2494,7 +2498,7 @@
         <target>外部エンドポイント</target>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">92</context>
+          <context context-type="linenumber">98</context>
         </context-group>
       </trans-unit>
       <trans-unit id="78da621b65ff6583de3d5b446cea93aeced674df" datatype="html">
diff --git a/i18n/ko/messages.ko.xlf b/i18n/ko/messages.ko.xlf
index 5c176d308..33847641d 100644
--- a/i18n/ko/messages.ko.xlf
+++ b/i18n/ko/messages.ko.xlf
@@ -1371,7 +1371,7 @@
         </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">102</context>
+          <context context-type="linenumber">108</context>
         </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/serviceaccount/template.html</context>
@@ -1525,6 +1525,10 @@
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/secret/template.html</context>
           <context context-type="linenumber">69</context>
         </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
+          <context context-type="linenumber">78</context>
+        </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/resource/cluster/persistentvolume/detail/source/template.html</context>
           <context context-type="linenumber">27</context>
@@ -2509,7 +2513,7 @@
         <target>클러스터 IP</target>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">78</context>
+          <context context-type="linenumber">84</context>
         </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/resource/discovery/service/detail/template.html</context>
@@ -2521,7 +2525,7 @@
         <target>내부 엔드포인트</target>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">84</context>
+          <context context-type="linenumber">90</context>
         </context-group>
       </trans-unit>
       <trans-unit id="cfe8c5b521a487c8f2f9d2d4232032bfe2e609ec" datatype="html">
@@ -2529,7 +2533,7 @@
         <target>외부 엔드포인트</target>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">92</context>
+          <context context-type="linenumber">98</context>
         </context-group>
       </trans-unit>
       <trans-unit id="78da621b65ff6583de3d5b446cea93aeced674df" datatype="html">
diff --git a/i18n/messages.xlf b/i18n/messages.xlf
index 3c4ff3605..75170ab0d 100644
--- a/i18n/messages.xlf
+++ b/i18n/messages.xlf
@@ -1404,7 +1404,7 @@
         </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">102</context>
+          <context context-type="linenumber">108</context>
         </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/serviceaccount/template.html</context>
@@ -1536,6 +1536,10 @@
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/secret/template.html</context>
           <context context-type="linenumber">69</context>
         </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
+          <context context-type="linenumber">78</context>
+        </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/resource/cluster/persistentvolume/detail/source/template.html</context>
           <context context-type="linenumber">27</context>
@@ -2375,7 +2379,7 @@
         <source>Cluster IP</source>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">78</context>
+          <context context-type="linenumber">84</context>
         </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/resource/discovery/service/detail/template.html</context>
@@ -2386,14 +2390,14 @@
         <source>Internal Endpoints</source>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">84</context>
+          <context context-type="linenumber">90</context>
         </context-group>
       </trans-unit>
       <trans-unit id="cfe8c5b521a487c8f2f9d2d4232032bfe2e609ec" datatype="html">
         <source>External Endpoints</source>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">92</context>
+          <context context-type="linenumber">98</context>
         </context-group>
       </trans-unit>
       <trans-unit id="78da621b65ff6583de3d5b446cea93aeced674df" datatype="html">
diff --git a/i18n/zh-Hans/messages.zh-Hans.xlf b/i18n/zh-Hans/messages.zh-Hans.xlf
index b70671c5d..b30a92a55 100644
--- a/i18n/zh-Hans/messages.zh-Hans.xlf
+++ b/i18n/zh-Hans/messages.zh-Hans.xlf
@@ -1371,7 +1371,7 @@
         </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">102</context>
+          <context context-type="linenumber">108</context>
         </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/serviceaccount/template.html</context>
@@ -1525,6 +1525,10 @@
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/secret/template.html</context>
           <context context-type="linenumber">69</context>
         </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
+          <context context-type="linenumber">78</context>
+        </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/resource/cluster/persistentvolume/detail/source/template.html</context>
           <context context-type="linenumber">27</context>
@@ -2509,7 +2513,7 @@
         <target>集群 IP</target>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">78</context>
+          <context context-type="linenumber">84</context>
         </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/resource/discovery/service/detail/template.html</context>
@@ -2521,7 +2525,7 @@
         <target>内部 Endpoints</target>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">84</context>
+          <context context-type="linenumber">90</context>
         </context-group>
       </trans-unit>
       <trans-unit id="cfe8c5b521a487c8f2f9d2d4232032bfe2e609ec" datatype="html">
@@ -2529,7 +2533,7 @@
         <target>外部 Endpoints</target>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">92</context>
+          <context context-type="linenumber">98</context>
         </context-group>
       </trans-unit>
       <trans-unit id="78da621b65ff6583de3d5b446cea93aeced674df" datatype="html">
diff --git a/i18n/zh-Hant-HK/messages.zh-Hant-HK.xlf b/i18n/zh-Hant-HK/messages.zh-Hant-HK.xlf
index 7e22cc842..34b703774 100644
--- a/i18n/zh-Hant-HK/messages.zh-Hant-HK.xlf
+++ b/i18n/zh-Hant-HK/messages.zh-Hant-HK.xlf
@@ -1371,7 +1371,7 @@
         </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">102</context>
+          <context context-type="linenumber">108</context>
         </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/serviceaccount/template.html</context>
@@ -1525,6 +1525,10 @@
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/secret/template.html</context>
           <context context-type="linenumber">69</context>
         </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
+          <context context-type="linenumber">78</context>
+        </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/resource/cluster/persistentvolume/detail/source/template.html</context>
           <context context-type="linenumber">27</context>
@@ -2513,7 +2517,7 @@
         <target>集群 IP</target>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">78</context>
+          <context context-type="linenumber">84</context>
         </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/resource/discovery/service/detail/template.html</context>
@@ -2525,7 +2529,7 @@
         <target>内部 Endpoints</target>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">84</context>
+          <context context-type="linenumber">90</context>
         </context-group>
       </trans-unit>
       <trans-unit id="cfe8c5b521a487c8f2f9d2d4232032bfe2e609ec" datatype="html">
@@ -2533,7 +2537,7 @@
         <target>外部 Endpoints</target>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">92</context>
+          <context context-type="linenumber">98</context>
         </context-group>
       </trans-unit>
       <trans-unit id="78da621b65ff6583de3d5b446cea93aeced674df" datatype="html">
diff --git a/i18n/zh-Hant/messages.zh-Hant.xlf b/i18n/zh-Hant/messages.zh-Hant.xlf
index bd48b3cd2..f09124234 100644
--- a/i18n/zh-Hant/messages.zh-Hant.xlf
+++ b/i18n/zh-Hant/messages.zh-Hant.xlf
@@ -1371,7 +1371,7 @@
         </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">102</context>
+          <context context-type="linenumber">108</context>
         </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/serviceaccount/template.html</context>
@@ -1525,6 +1525,10 @@
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/secret/template.html</context>
           <context context-type="linenumber">69</context>
         </context-group>
+        <context-group purpose="location">
+          <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
+          <context context-type="linenumber">78</context>
+        </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/resource/cluster/persistentvolume/detail/source/template.html</context>
           <context context-type="linenumber">27</context>
@@ -2509,7 +2513,7 @@
         <target>集群 IP</target>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">78</context>
+          <context context-type="linenumber">84</context>
         </context-group>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/resource/discovery/service/detail/template.html</context>
@@ -2521,7 +2525,7 @@
         <target>内部 Endpoints</target>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">84</context>
+          <context context-type="linenumber">90</context>
         </context-group>
       </trans-unit>
       <trans-unit id="cfe8c5b521a487c8f2f9d2d4232032bfe2e609ec" datatype="html">
@@ -2529,7 +2533,7 @@
         <target>外部 Endpoints</target>
         <context-group purpose="location">
           <context context-type="sourcefile">../src/app/frontend/common/components/resourcelist/service/template.html</context>
-          <context context-type="linenumber">92</context>
+          <context context-type="linenumber">98</context>
         </context-group>
       </trans-unit>
       <trans-unit id="78da621b65ff6583de3d5b446cea93aeced674df" datatype="html">
diff --git a/package.json b/package.json
index 97d78c633..2b52a845f 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "kubernetes-dashboard",
-  "version": "2.0.5",
+  "version": "2.1.0",
   "repository": {
     "type": "git",
     "url": "https://github.com/kubernetes/dashboard.git"
diff --git a/src/app/backend/resource/pod/detail.go b/src/app/backend/resource/pod/detail.go
index 374c1b7ab..e5e5c9bcc 100644
--- a/src/app/backend/resource/pod/detail.go
+++ b/src/app/backend/resource/pod/detail.go
@@ -107,7 +107,7 @@ func GetPodDetail(client kubernetes.Interface, metricClient metricapi.MetricClie
 		return nil, err
 	}
 
-	controller, err := getPodController(client, common.NewSameNamespaceQuery(namespace), pod)
+	podController, err := getPodController(client, common.NewSameNamespaceQuery(namespace), pod)
 	nonCriticalErrors, criticalError := errorHandler.HandleError(err)
 	if criticalError != nil {
 		return nil, criticalError
@@ -144,7 +144,7 @@ func GetPodDetail(client kubernetes.Interface, metricClient metricapi.MetricClie
 		return nil, criticalError
 	}
 
-	podDetail := toPodDetail(pod, metrics, configMapList, secretList, controller,
+	podDetail := toPodDetail(pod, metrics, configMapList, secretList, podController,
 		eventList, persistentVolumeClaimList, nonCriticalErrors)
 	return &podDetail, nil
 }
diff --git a/src/app/backend/resource/storageclass/list.go b/src/app/backend/resource/storageclass/list.go
index 9a8dff727..7e0d3c9d6 100644
--- a/src/app/backend/resource/storageclass/list.go
+++ b/src/app/backend/resource/storageclass/list.go
@@ -27,8 +27,8 @@ import (
 
 // StorageClassList holds a list of Storage Class objects in the cluster.
 type StorageClassList struct {
-	ListMeta       api.ListMeta   `json:"listMeta"`
-	StorageClasses []StorageClass `json:"storageClasses"`
+	ListMeta api.ListMeta   `json:"listMeta"`
+	Items    []StorageClass `json:"items"`
 
 	// List of non-critical errors, that occurred during resource retrieval.
 	Errors []error `json:"errors"`
@@ -71,9 +71,9 @@ func toStorageClassList(storageClasses []storage.StorageClass, nonCriticalErrors
 	dsQuery *dataselect.DataSelectQuery) *StorageClassList {
 
 	storageClassList := &StorageClassList{
-		StorageClasses: make([]StorageClass, 0),
-		ListMeta:       api.ListMeta{TotalItems: len(storageClasses)},
-		Errors:         nonCriticalErrors,
+		Items:    make([]StorageClass, 0),
+		ListMeta: api.ListMeta{TotalItems: len(storageClasses)},
+		Errors:   nonCriticalErrors,
 	}
 
 	storageClassCells, filteredTotal := dataselect.GenericDataSelectWithFilter(toCells(storageClasses), dsQuery)
@@ -81,7 +81,7 @@ func toStorageClassList(storageClasses []storage.StorageClass, nonCriticalErrors
 	storageClassList.ListMeta = api.ListMeta{TotalItems: filteredTotal}
 
 	for _, storageClass := range storageClasses {
-		storageClassList.StorageClasses = append(storageClassList.StorageClasses, toStorageClass(&storageClass))
+		storageClassList.Items = append(storageClassList.Items, toStorageClass(&storageClass))
 	}
 
 	return storageClassList
diff --git a/src/app/frontend/common/components/resourcelist/service/component.ts b/src/app/frontend/common/components/resourcelist/service/component.ts
index 9aadaa72e..ede9f22bc 100644
--- a/src/app/frontend/common/components/resourcelist/service/component.ts
+++ b/src/app/frontend/common/components/resourcelist/service/component.ts
@@ -90,7 +90,7 @@ export class ServiceListComponent extends ResourceListWithStatuses<ServiceList,
   }
 
   getDisplayColumns(): string[] {
-    return ['statusicon', 'name', 'labels', 'clusterip', 'internalendp', 'externalendp', 'created'];
+    return ['statusicon', 'name', 'labels', 'type', 'clusterip', 'internalendp', 'externalendp', 'created'];
   }
 
   private shouldShowNamespaceColumn_(): boolean {
diff --git a/src/app/frontend/common/components/resourcelist/service/template.html b/src/app/frontend/common/components/resourcelist/service/template.html
index 398ab7df8..0bf81f35e 100644
--- a/src/app/frontend/common/components/resourcelist/service/template.html
+++ b/src/app/frontend/common/components/resourcelist/service/template.html
@@ -73,6 +73,12 @@ limitations under the License.
         </mat-cell>
       </ng-container>
 
+      <ng-container matColumnDef="type">
+        <mat-header-cell *matHeaderCellDef
+                         i18n>Type</mat-header-cell>
+        <mat-cell *matCellDef="let service">{{service.type}}</mat-cell>
+      </ng-container>
+
       <ng-container matColumnDef="clusterip">
         <mat-header-cell *matHeaderCellDef
                          i18n>Cluster IP</mat-header-cell>
diff --git a/src/app/frontend/common/components/resourcelist/storageclass/component.ts b/src/app/frontend/common/components/resourcelist/storageclass/component.ts
index a52e9405a..f5cb031af 100644
--- a/src/app/frontend/common/components/resourcelist/storageclass/component.ts
+++ b/src/app/frontend/common/components/resourcelist/storageclass/component.ts
@@ -50,7 +50,7 @@ export class StorageClassListComponent extends ResourceListBase<StorageClassList
   }
 
   map(storageClassList: StorageClassList): StorageClass[] {
-    return storageClassList.storageClasses;
+    return storageClassList.items;
   }
 
   getDisplayColumns(): string[] {
diff --git a/src/app/frontend/login/component.ts b/src/app/frontend/login/component.ts
index 0f71a477d..28e459164 100644
--- a/src/app/frontend/login/component.ts
+++ b/src/app/frontend/login/component.ts
@@ -91,7 +91,7 @@ export class LoginComponent implements OnInit {
   }
 
   login(): void {
-    if (!this.hasToken_()) {
+    if (this.hasEmptyToken_()) {
       return;
     }
 
@@ -146,8 +146,8 @@ export class LoginComponent implements OnInit {
     }
   }
 
-  private hasToken_(): boolean {
-    return this.selectedAuthenticationMode === LoginModes.Token && !!this.token_ && !!this.token_.trim();
+  private hasEmptyToken_(): boolean {
+    return this.selectedAuthenticationMode === LoginModes.Token && (!this.token_ || !this.token_.trim());
   }
 
   private saveLastLoginMode_(): void {
diff --git a/src/app/frontend/typings/backendapi.ts b/src/app/frontend/typings/backendapi.ts
index 0b7dcc867..6fd55cbde 100644
--- a/src/app/frontend/typings/backendapi.ts
+++ b/src/app/frontend/typings/backendapi.ts
@@ -207,7 +207,7 @@ export interface StatefulSetList extends ResourceList {
 }
 
 export interface StorageClassList extends ResourceList {
-  storageClasses: StorageClass[];
+  items: StorageClass[];
 }
 
 // Simple detail types


Test patch:
diff --git a/src/app/backend/resource/storageclass/list_test.go b/src/app/backend/resource/storageclass/list_test.go
index 4cdcfa355..2bcdc2497 100644
--- a/src/app/backend/resource/storageclass/list_test.go
+++ b/src/app/backend/resource/storageclass/list_test.go
@@ -44,7 +44,7 @@ func TestGetStorageClassList(t *testing.T) {
 			expectedActions: []string{"list"},
 			expected: &StorageClassList{
 				ListMeta: api.ListMeta{TotalItems: 1},
-				StorageClasses: []StorageClass{
+				Items: []StorageClass{
 					{
 						ObjectMeta: api.ObjectMeta{
 							Name:   "storage-1",