肅寧縣做網(wǎng)站網(wǎng)推渠道
Kubernetes - Dashboard 配置用戶名密碼方式登錄
前言:
為了 K8s 集群安全,默認(rèn)情況下 Dashboard 以 Token的形式登錄的,那如果我們想以用戶名/密碼的方式登錄該怎么操作呢?其實(shí)只需要我們創(chuàng)建用戶并進(jìn)行 ClusterRoleBinding綁定即可,接下來是具體的操作流程。
K8s的dashboard默認(rèn)是通過Token去登錄的,有時(shí)候也會(huì)不太方便,我們也可以通過賬號密碼的形式去登錄dashboard,不過賬號密碼登錄dashboard的方式僅在K8s v1.19以前的版本支持。
相關(guān)環(huán)境:
以下操作需要在master節(jié)點(diǎn)進(jìn)行操作
1、創(chuàng)建用戶密碼存放文件
cat << EOF | sudo tee /etc/kubernetes/pki/basic_auth_file
admin,admin,1
EOF# 說明:
# 用戶名:admin
# 密碼:admin
# 用戶ID:1
或腳本
echo "admin,admin,1" > /etc/kubernetes/pki/basic_auth_file
2、修改 kube-apiserver 配置文件
# 先提前做個(gè)備份
cp /etc/kubernetes/manifests/kube-apiserver.yaml /etc/kubernetes/manifests/kube-apiserver.yaml.back
# 修改配置文件,配置增加密碼文件路徑
vim /etc/kubernetes/manifests/kube-apiserver.yaml
---------------------------------------------------------------
apiVersion: v1
kind: Pod
metadata:creationTimestamp: nulllabels:component: kube-apiservertier: control-planename: kube-apiservernamespace: kube-system
······- --secure-port=6443- --service-account-key-file=/etc/kubernetes/pki/sa.pub- --service-cluster-ip-range=10.96.0.0/12- --tls-cert-file=/etc/kubernetes/pki/apiserver.crt- --tls-private-key-file=/etc/kubernetes/pki/apiserver.key- --basic-auth-file=/etc/kubernetes/pki/basic_auth_file #增加這一行
·····
# 保存退出后 kube-apiserver 會(huì)自動(dòng)重啟(大約10s左右,無需 kubectl apply -f ***)
3、查看 kube-apiserver 是否重啟
kubectl get pod -n kube-system
4、將admin用戶與集群角色權(quán)限進(jìn)行綁定
[root@k8s-master ~]# kubectl create clusterrolebinding DashBoardLogin --clusterrole=cluster-admin --user=admin
clusterrolebinding.rbac.authorization.k8s.io/DashBoardLogin created# DashBoardLogin:自定義集群角色綁定name
# 將admin用戶綁定到集群角色cluster-admin
# cluster-admin是一個(gè)內(nèi)置的ClusterRole(集群角色),它具有最高級別的權(quán)限
# cluster-admin允許持有該角色的用戶或服務(wù)賬戶對整個(gè)Kubernetes集群進(jìn)行廣泛的控制
具體來說,cluster-admin ClusterRole 具有以下特征和權(quán)限:
全局權(quán)限:cluster-admin 具有對整個(gè)集群的權(quán)限,而不僅僅限于某個(gè)命名空間。這意味著擁有 cluster-admin角色的用戶可以管理整個(gè)集群的資源,包括節(jié)點(diǎn)、命名空間、服務(wù)、Pod 等。
權(quán)限廣泛:cluster-admin 具有廣泛的權(quán)限,包括創(chuàng)建、刪除和修改各種資源,以及查看集群中的所有資源的權(quán)限。這包括對ConfigMaps、Secrets、Deployments、Services等的完全控制權(quán)。
角色的高度特權(quán):由于cluster-admin 角色的特權(quán)級別非常高,因此授予它的用戶或服務(wù)賬戶將具有執(zhí)行集群中任何操作的能力,包括破壞性操作。因此,應(yīng)小心授予cluster-admin權(quán)限,確保只授予受信任的用戶或服務(wù)賬戶。
通常情況下,cluster-admin 角色應(yīng)該被保留用于緊急情況、集群管理和維護(hù)操作。該權(quán)限不應(yīng)該隨意授予普通用戶,以防止誤操作或?yàn)E用權(quán)限。對于普通應(yīng)用程序和開發(fā)人員,通常會(huì)創(chuàng)建更嚴(yán)格的RBAC 角色,以限制其對資源的訪問權(quán)限,從而提高集群的安全性。
5、查看集群角色綁定情況
[root@k8s-master ~]# kubectl get clusterrolebinding DashBoardLogin
NAME ROLE AGE
DashBoardLogin ClusterRole/cluster-admin 8s
6、修改 kubernetes-dashboard 認(rèn)證方式
# 先提前做個(gè)備份
cp /root/recommended.yaml /root/recommended.yaml.back
# 修改配置文件支持用戶密碼登錄[root@k8s-master ~]# vim recommended.yaml---......args:- --auto-generate-certificates- --namespace=kubernetes-dashboard- --token-ttl=21600 #新增內(nèi)容1- --authentication-mode=basic #新增內(nèi)容2......
---
7、啟動(dòng) Dashboard
kubectl apply -f recommended.yaml
8、Dashboard 訪問驗(yàn)證
# 已經(jīng)可以通過用戶名密碼的方式登錄dashboard了 admin/admin
在Kubernetes Dashboard中,默認(rèn)情況下,賬戶和密碼的方式已經(jīng)被廢棄,取而代之的是使用Token進(jìn)行登錄。
以上,感謝!