本文介绍 kubernetes dashboard 的安装和使用。
概述
Kubernetes Dashboard 是一个通用的、基于 Web 的 Kubernetes 集群的用户界面。它允许用户管理集群中运行的应用程序,并对其进行故障排除,以及管理集群本身。
helm 部署
values.yaml 是 Helm 部署需要的配置:
安装:
helm upgrade -f values.yaml --install kubernetes-dashboard kubernetes-dashboard \
--repo https://kubernetes.github.io/dashboard/ \
--namespace kubernetes-dashboard --create-namespace
执行成功后提示如下:
生成配置中需要的 tls:
kubectl -n kubernetes-dashboard create secret tls kubernetes-dashboard-ingress-tls --key example.com.cf.key --cert example.com.cf.pem
确认部署
kubectl -n kubernetes-dashboard get pods,svc,ingress
显示如下:
浏览器打开 https://k3s-dashboard.example.com
也可以看到登录界面。
创建用户
我们知道:
- kubernetes 所有的资源都是通过 API 进行访问。
- 命名空间下的所有资源都是通过 Role 进行授权访问的。
为了保护集群数据,默认情况下,Dashboard 会使用最少的 RBAC 配置进行部署。
kubectl -n kubernetes-dashboard get role
NAME CREATED AT
kubernetes-dashboard 2023-06-27T05:25:31Z
可以看到默认只创建了 kubernetes-dashboard
这一个角色 (role),该角色也只能管理 kubernetes-dashboard 命名空间内的资源。
kubectl -n kubernetes-dashboard describe role kubernetes-dashboard
Name: kubernetes-dashboard
Labels: k8s-app=kubernetes-dashboard
Annotations: <none>
PolicyRule:
Resources Non-Resource URLs Resource Names Verbs
--------- ----------------- -------------- -----
secrets [] [kubernetes-dashboard-certs] [get update delete]
secrets [] [kubernetes-dashboard-csrf] [get update delete]
secrets [] [kubernetes-dashboard-key-holder] [get update delete]
configmaps [] [kubernetes-dashboard-settings] [get update]
services/proxy [] [dashboard-metrics-scraper] [get]
services/proxy [] [heapster] [get]
services/proxy [] [http:dashboard-metrics-scraper] [get]
services/proxy [] [http:heapster:] [get]
services/proxy [] [https:heapster:] [get]
services [] [dashboard-metrics-scraper] [proxy]
services [] [heapster] [proxy]
如果 dashboard 需要通过 apiserver 管理集群就需要满足对应的 身份认证 需求,这就涉及到了 ServiceAccount 相关知识。
按照 创建示例用户 为 dashboard service 以服务账户 (ServiceAccount) 方式创建管理员 (admin-user),该服务账号通过 ClusterRoleBinding 到系统的 cluster-admin role 上,进而有权限可以管理集群所有资源。
创建以下资源清单文件:
部署 admin-user 配置:
kubectl -n kubernetes-dashboard create -f admin-user.yaml -f admin-user-bind.yaml
当前,Dashboard 仅支持使用 Bearer 令牌登录。获取管理员令牌:
kubectl -n kubernetes-dashboard create token admin-user
在浏览器中输入产生的 token ,系统会认为是 admin-user 登录,进而可以操作集群。
评论