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

  • A+
所属分类:Kubernetes

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

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

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

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

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

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

这是由于该用户没有对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后的字符串

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

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

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

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

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、暂时还未解决。

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: