Helm部署Dashboard UI
1. 前提条件
本次安装基于Helm v3版本的chart包安装的,,所以有以下前提:
- 已安装好kubernetes集群
- 已安装好Helm v3版本
如未安装helm,可以参照:Helm安装。
2. dashboard安装
2.1 helm拉取dashboard的chart
添加helmhub上的dashboard官方repo仓库:
1 | helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/ |
查看添加完成后的仓库:
1 | [root@lemonlzy helm]# helm repo list |
查询dashboard的chart:
1 | [root@lemonlzy helm]# helm search repo kubernetes-dashboard |
拉取官方库的chart文件,便于修改或者查阅:
1 | [root@lemonlzy helm] |
解压拉取下来的chart压缩包:
1 | [root@lemonlzy helm] |
2.2 dashboard的chart包配置
详细配置可查看values.yaml
文件,里面有自定义的各种配置,这里我们采取新建配置文件的方式来自定义配置(也可以直接修改values.yaml
文件),这种方式就是将我们想修改的内容独立出来一个文件,无需修改的内容则会自动使用values.yaml
文件里面的默认配置:
1 | [ ] |
新建一个my-values.yaml文件,内容如下(如果镜像下载不下来,可访问xxx):
1 | [root@lemonlzy kubernetes-dashboard]# cat my-values.yaml |
2.3 helm执行创建dashboard的release
执行路径在my-values.yaml目录:
1 | [root@lemonlzy kubernetes-dashboard]# helm install -f my-values.yaml --namespace kube-system kubernetes-dashboard . |
如果后续调整过配置后,使用以下命令进行更新:
1 | [root@lemonlzy kubernetes-dashboard]# helm upgrade dashboard -f my-values.yaml . --namespace kube-system |
查看pod状态,如果是running仍无法访问,请查看以下两个pod的日志进行排查:
1 | [root@lemonlzy kubernetes-dashboard]# kubectl get pod -n kube-system | grep dashboard |
部署成功后,查看svc对外暴露的端口:
1 | [root@lemonlzy helm]# kubectl get svc -n kube-system | grep dashboard |
直接使用https://服务ip+nodeport
访问即可,即访问https://192.168.235.20:30020
。
同时,由于开启了metrics部署的关系,也可使用kubectl top
命令了,方便后续的Prometheus部署:
1 | [root@lemonlzy kubernetes-dashboard]# kubectl top node |
3. 查看token并使用token登陆
查看内容含有token的secret:
1 | [root@lemonlzy helm]# kubectl get secret -n kube-system | grep dashboard-admin |
describe一下获取token值:
1 | [root@lemonlzy helm]# kubectl describe secret dashboard-admin-token-xlg6s -n kube-system |
使用此token登录即可,如下图所示:
默认Dashboard为最小RBAC权限,使用默认配置文件创建的dashboard-admin
用户登录Dashboard UI,会发现无法加载出pod等权限不够的信息。所以创建一个集群管理员,以便从Dashboard中操作集群资源:
创建
serviceaccount
资源(如果已有则无需重新创建):1
2[root@node-0 yaml]# kubectl create serviceaccount dashboard-admin -n kube-system
serviceaccount/dashboard-admin created此处的sa为serviceaccount的缩写,即查看serviceaccount是否创建成功:
1
2
3[root@node-0 yaml]# kubectl get sa/dashboard-admin -n kube-system
NAME SECRETS AGE
dashboard-admin 1 15s创建
clusterrolebinding
,将角色cluster-admin
与serviceaccount
资源(dashboard-admin
)进行绑定,简单理解,就是给新创建的用于赋予集群管理员权限:1
2[root@node-0 yaml]# kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
clusterrolebinding.rbac.authorization.k8s.io/dashboard-admin created查看绑定信息,可以发现新创建的用户已经拥有了集群管理员权限:
1
2
3
4
5
6
7
8
9
10
11[root@node-0 yaml]
Name: dashboard-admin
Labels: <none>
Annotations: <none>
Role:
Kind: ClusterRole
Name: cluster-admin
Subjects:
Kind Name Namespace
---- ---- ---------
ServiceAccount dashboard-admin kube-system此时刷新页面或者重新登录,则会发现所有资源信息已经能成功加载:
如果觉得使用token方式登录太过繁琐,可参考kubernetes的Dashboard部署中的kubeconfig配置部分。