概述
最近在公司推行新版本的 Kubernetes 集群,因为需要管理多个集群,虽然公司有平台化的管理工具,但对于接入一些新版本集群,还是需要做各种适配的工作的,但为了提高工作效率,还是需要一个轻量级的 Kubernetes Web UI 来管理集群,之前也有使用过 Rancher 和 Lens 等等,但是这些工具都比较重,而且功能也比较复杂,所以就找到了 Headlamp 这个工具。Headlamp 是一个开源的 Kubernetes Web UI,旨在提供一个现代化的用户界面来管理 Kubernetes 集群。它是一个轻量级的替代品,适用于那些需要一个简单易用的界面的用户。
安装
官网提供了多种方式安装,可以根据实际的场景选择方便的方式来安装。
1
|
kubectl apply -f https://raw.githubusercontent.com/kinvolk/headlamp/main/kubernetes-headlamp.yaml
|
登录需要通过 token,因此安装官网提示创建。
1
2
3
|
kubectl -n kube-system create serviceaccount headlamp-admin
kubectl create clusterrolebinding headlamp-admin --serviceaccount=kube-system:headlamp-admin --clusterrole=cluster-admin
kubectl create token headlamp-admin -n kube-system
|
另外 Headlamp 还有一个亮点,就是支持多集群管理,如果你有多个集群,可以通过 Headlamp 来管理多个集群。假设本地有一个包含多个集群信息的 kubeconfig,可以通过下面的方式创建 Secret,然后给 Headlamp 的 Deployment 进行挂载。
1
2
3
|
kubectl create secret generic kubeconfig-secret \
--from-file=config=/root/.kube/config \
-n kube-system
|
具体的 Deployment 如下,注意 args 部分使用 -kubeconfig=/headlamp/kubeconfig
,因为在非 in-cluster 模式的情况下,需要指定 kubeconfig 文件的位置。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
kind: Deployment
apiVersion: apps/v1
metadata:
name: headlamp
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
k8s-app: headlamp
template:
metadata:
labels:
k8s-app: headlamp
spec:
containers:
- name: headlamp
image: noah-registry.vip.vip.com/vip/headlamp:latest
args:
- "-kubeconfig=/headlamp/kubeconfig"
- "-plugins-dir=/headlamp/plugins"
ports:
- containerPort: 4466
volumeMounts:
- name: kubeconfig-volume
mountPath: /headlamp/kubeconfig
subPath: config
nodeSelector:
'kubernetes.io/os': linux
volumes:
- name: kubeconfig-volume
secret:
secretName: multikubeconfig-secret
|
参考资料
- headlamp