Dashboard

官方链接:
https://github.com/kubernetes/dashboard

Dashboard 的后端使用了 K8S 的 client-go ,前端主要使用了 Angular

安装方法:

1
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

查看是否安装成功:

1
kubectl -n kube-system get all  -l k8s-app=kubernetes-dashboard

以当前的部署方式,Service 使用了 ClusterIP 的类型,所以在集群外不能直接访问。我们先使用 kubectl 提供的 port-forward 功能进行访问:

1
kubectl -n kube-system port-forward pod/kubernetes-dashboard-67896bc598-dhdpz 8443

查看 token 使用令牌登录

1
kubectl -n kube-system get serviceaccount -l k8s-app=kubernetes-dashboard -o yaml

查看 serviceaccount 可以看到其中有配置 secrets, 查看该 secret 详情获得 Token:

1
kubectl -n kube-system describe secrets kubernetes-dashboard-token-6ck2l

权限报错:

1
configmaps is forbidden: User "system:serviceaccount:kube-system:kubernetes-dashboard" cannot list resource "configmaps" in API group "" in the namespace "default" 。

授权:

创建 ServiceAccount:

1
2
3
4
5
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kube-system

创建 RoleBinding: 这里为了方便直接绑定了 cluster-admin 的 ClusterRole:

1
2
3
4
5
6
7
8
9
10
11
12
 apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kube-system

使用以上配置创建用户和绑定,然后还是同样的办法获取 Token