本文档基于 dashboard 1.6.3版本,从 1.7.x 版本以后,dashboard 默认开启自带的登录验证界面,登录流程差异详见新版本。
- 注意:实际测试k8s版本<=1.9.1支持dashboard 1.6.3, 建议k8s 1.9 以后使用 dashboard 新版本。
# 部署dashboard 主yaml配置文件
$ kubectl create -f /etc/kubeasz/manifests/dashboard/1.6.3/kubernetes-dashboard.yaml
# 部署基本密码认证配置[可选],密码文件位于 /etc/kubernetes/ssl/basic-auth.csv
$ kubectl create -f /etc/kubeasz/manifests/dashboard/1.6.3/ui-admin-rbac.yaml
$ kubectl create -f /etc/kubeasz/manifests/dashboard/1.6.3/ui-read-rbac.yaml
请在另外窗口打开 kubernetes-dashboard.yaml
- 由于 kube-apiserver 启用了 RBAC授权,dashboard使用的 ServiceAccount
kubernetes-dashboard
必须有相应的权限去访问apiserver(在新版本1.8.0中,该访问权限已按最小化方式授权),在1.6.3 版本,先粗放一点,把kubernetes-dashboard
与 集群角色cluster-admin
绑定,这样dashboard就拥有了所有访问apiserver的权限。 - 开发测试环境为了方便配置dashboard-service时候,指定
NodePort
方式暴露服务,这样集群外部可以使用http://NodeIP:NodePort
方式直接访问 dashboard,生产环境建议关闭该访问途径。
# 查看pod 运行状态
kubectl get pod -n kube-system | grep dashboard
kubernetes-dashboard-86bd8778bf-w4974 1/1 Running 0 12h
# 查看dashboard service
kubectl get svc -n kube-system|grep dashboard
kubernetes-dashboard NodePort 10.68.7.67 <none> 80:5452/TCP 12h
# 查看集群服务
kubectl cluster-info|grep dashboard
kubernetes-dashboard is running at https://192.168.1.10:6443/api/v1/namespaces/kube-system/services/kubernetes-dashboard/proxy
# 查看pod 运行日志,关注有没有错误
kubectl logs kubernetes-dashboard-86bd8778bf-w4974 -n kube-system
因为dashboard 作为k8s 原生UI,能够展示各种资源信息,甚至可以有修改、增加、删除权限,所以有必要对访问进行认证和控制,本项目预置部署的集群有以下安全设置:详见 apiserver配置模板
- 启用
TLS认证
RBAC授权
等安全特性 - 关闭 apiserver非安全端口8080的外部访问
--insecure-bind-address=127.0.0.1
- 关闭匿名认证
--anonymous-auth=false
- 补充启用基本密码认证
--token-auth-file=/etc/kubernetes/ssl/basic-auth.csv
,密码文件模板中按照每行(密码,用户名,序号)的格式,可以定义多个用户