Kubernetes v1.9.7安装部署-Dashboard升级Token

由于dashboard默认是自建的https证书,该证书是不受浏览器信任的,所以我们需要强制跳转就可以了(这里我们建议使用火狐浏览器)。

img

默认dashboard会跳转到登录页面:

img

我们可以看到dashboard提供了Kubeconfig和token两种登录方式,我们可以直接跳过或者使用本地的Kubeconfig文件进行登录,可以看到会跳转到如下页面:

img

这是由于该用户没有对default命名空间的访问权限。

1、身份认证

登录dashboard 的时候支持Kubeconfig 和token 两种认证方式,Kubeconfig 中也依赖token 字段,所以生成token 这一步是必不可少的。

2、生成token

我们创建一个admin用户并授予admin 角色绑定,使用下面的yaml文件创建admin用户并赋予他管理员权限,然后就可以通过token 登陆dashbaord,这种认证方式本质实际上是通过Service Account 的身份认证加上Bearer token请求 API server 的方式实现,参考 Kubernetes 中的认证

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: admin
  annotations:
    rbac.authorization.kubernetes.io/autoupdate: "true"
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
  name: admin
  namespace: kube-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin
  namespace: kube-system
  labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile

上面的admin用户创建完成后我们就可以获取到该用户对应的token了,如下命令:

$ kubectl get secret -n kube-system|grep admin-token
admin-token-d5jsg                  kubernetes.io/service-account-token   3         1d
$ kubectl get secret admin-token-d5jsg -o jsonpath={.data.token} -n kube-system |base64 -d
# 会生成一串很长的base64后的字符串

img

img

然后在dashboard登录页面上直接使用上面得到的token字符串即可登录,这样就可以拥有管理员权限操作整个kubernetes集群的对象,当然你也可以为你的登录用户新建一个指定操作权限的用户。

img

3、关于采用https的方式访问Dashboard

dashboard默认是自建的不受信任的证书,所以这里如果你需要绑定你自己的域名,然后通过https访问的话有两种方式。dashboard采用上面的https 的方式部署,将你的域名证书替换掉自建的证书:

$ ls certs/
dashboard.crt dashboard.key
$ kubectl create secret generic kubernetes-dashboard-certs --from-file=certs -n kube-system

然后将域名绑定到任意一个节点IP 和对应的NodePort 上面即可。上面的这种方式不能通过我们的traefik了,如果需要通过traefik来转发我们的dashboard的话,目前需要使用http 的方式部署dashboard,也直接使用官方提供的yaml 文件即可:

$ wget https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/alternative/kubernetes-dashboard.yaml
$ kubectl create -f kubernetes-dashboard.yaml

然后直接配置我们的traefik ingress转发规则即可,这样就形成了访问我们的dashboard使用basic auth和dashboard login两层认证了。上面的traefik 转发的方式访问dashboard 默认不会自动跳转到登录页面,这是因为不是使用的https 的方式部署的,但是如果使用https 的方式部署dashboard,然后再通过traefik 进行转发的话则会一直报错:tls: bad certificate,不能正常使用dashboard、暂时还未解决。

推荐文章