本文介绍 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 登录,进而可以操作集群。



评论