Kubernetes Dashboard does not accept service account's token over HTTP: Authentication failed. Please try again

3/27/2019

I have installed Kubernetes Dashboard on a Kubernetes 1.13 cluster as described here:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

I've also configured the dashboard to serve its content insecurely because I want to expose it via an Ingress at https://my-cluster/dashboard where the TLS connection will be terminated at the ingress controller.

  • I have edited service/kubernetes-dashboard in namespace kube-system and changed ports from {port:443, targetPort:8443} to {port:80, protocol:TCP, targetPort:9090}.
  • I have edited deployment/kubernetes-dashboard in namespace kube-system and changed ports from {containerPort: 8443, protocol:TCP} to {containerPort: 9090, protocol:TCP} (and livenessProbe analagously). I have also changed args from [ --auto-generate-certificates ] to [ --enable-insecure-login ].

This allows me to contact the dashboard from a cluster node via HTTP at the service's cluster IP address and port 80 (no Ingress is configured yet).

I have also created a sample user as explained here and extracted its token. The token works e.g. in kubectl --token $token get pod --all-namespaces, so it apparently possesses cluster-admin privileges. However, if I enter the same token into the dashboards' login screen I get "Authentication failed. Please try again.".

What could be the reason why? How can I further diagnose and solve the issue? (The dashboard's log does not provide any help at this point.)

UPDATE If I keep the dashboard's standard configuration (i.e. for secure access over HTTPS) the same token is accepted.

-- rookie099
kubernetes
kubernetes-dashboard

0 Answers