手把手教你给 Kubernetes Dashboard 增加用户名密码认证功能

Posted by Mike on 2021-05-20

仪表板是基于 WebKubernetes 用户界面。您可以使用仪表板将容器化应用程序部署到 Kubernetes 集群,对容器化应用程序进行故障排除,并管理集群本身及其伴随资源。您可以使用仪表板来概述群集上运行的应用程序,以及创建或修改单个 Kubernetes 资源。

Dashboard开启用户名密码登录

通过 yaml 文件默认安装完 k8s 集群和 Dashboard 服务之后,都是使用 token 或者 Kubeconfig 文件 来登录的,这样使用起来比较安全。但是如果我们部署的是测试或者实验环境的话,每次都要输入一长串的 token 还是很方便的。所以,这里我们介绍如何使用 用户名和密码 的方式来登录 Dashboard 服务。

集群环境 集群版本 搭建方式 dashboard 的版本
master v1.20.4 kubeadm dashboard:v2.0.4
node01 v1.20.4 kubeadm dashboard:v2.0.4
node02 v1.20.4 kubeadm dashboard:v2.0.4
  • 创建用户文件
    • 格式:userpassworduserID"group1,group2"
    • 注意:userID 不可重复
1
2
3
# 创建用户名密码配置文件
# 在所有的master节点配置用户名密码
$ echo 'admin,admin,1' | sudo tee /etc/kubernetes/pki/basic_auth_file
  • 修改配置文件
    • 将上述创建好的用户名密码文件添加到下述文件中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 配置修改
$ sudo vim /etc/kubernetes/manifests/kube-apiserver.yaml
spec:
containers:
- command:
- kube-apiserver
- --advertise-address=192.168.30.30
- --basic-auth-file=/etc/kubernetes/pki/basic_auth_file
......
volumeMounts:
– mountPath: /etc/kubernetes/basic_auth_file
name: basic-auth-file
readOnly: true
volumes:
– hostPath:
name: basic-auth-file
path: /etc/kubernetes/basic_auth_file
  • 重启 apiserver 服务
    • 使刚才的修改生效
1
2
3
4
5
6
7
8
# 重启
$ kubectl apply -f /etc/kubernetes/manifests/kube-apiserver.yaml

# 查看
$ kubectl get pod -n kube-system | grep apiserver
kube-apiserver-k8s-01 1/1 Running 0 24s
kube-apiserver-k8s-02 1/1 Running 0 44s
kube-apiserver-k8s-03 1/1 Running 0 50s
  • 将用户与权限绑定
    • 创建集群 admin 角色绑定
1
2
3
4
5
6
7
8
9
# 权限绑定
$ kubectl create clusterrolebinding \
login-on-dashboard-with-cluster-admin \
--clusterrole=cluster-admin --user=admin

# 查看绑定
$ kubectl get clusterrolebinding login-on-dashboard-with-cluster-admin
NAME ROLE AGE
login-on-dashboard-with-cluster-admin ClusterRole/cluster-admin 2m23s
  • 开启 basic 配置
    • 修改 kubernetes-dashboard.yaml 配置文件
1
2
3
4
5
6
7
8
9
$ sudo vim kubernetes-dashboard.yaml
args:
- --auto-generate-certificates
- --namespace=kubernetes-dashboard
- --token-ttl=43200 # 过期秒数
- --authentication-mode=basic # 启用basic登录

# 更新
$ kubectl apply -f kubernetes-dashboard.yaml
  • 登录验证
    • 使用用户名和密码登录 Dashboard 服务

Dashboard开启用户名密码登录

本文转载自:「 Ecsape 的博客 」,原文:http://t.cn/A6c6nQfG ,版权归原作者所有。欢迎投稿,投稿邮箱: editor@hi-linux.com