背景:預設安裝完k8s叢集和Dashboard之後都是使用token登入的,這樣使用起來不是很友善,每次登入還要找到token才能登入。
本片文章使用使用者和密碼方式進行登入!
環境介紹
叢集環境 叢集版本 搭建方式 dashboard的版本
master v1.16.8 kubeadm kubernetesui_dashboard:v2.0.0-rc6
node1 v1.16.8 kubeadm kubernetesui_dashboard:v2.0.0-rc6
node2 v1.16.8 kubeadm kubernetesui_dashboard:v2.0.0-rc6
注意事項:
如果你的環境内不止一個master,那basic-auth-file這個檔案要在每一個master上生成,并保證路徑及内容和其他master一緻!并且每個master都要修改kube-apiserver.yaml檔案!
建立使用者檔案
解析:
user,password,userID
userID不可重複
echo ‘admin,admin,1’ > /etc/kubernetes/pki/basic_auth_file
修改配置
vim /etc/kubernetes/manifests/kube-apiserver.yaml
# 增加如下參數
– –basic-auth-file=/etc/kubernetes/pki/basic_auth_file
重新開機api-server
[root@master manifests]# pwd
/etc/kubernetes/manifests
[root@master manifests]# mv ./kube-apiserver.yaml ../
[root@master manifests]# mv ../kube-apiserver.yaml ./
更新配置
kubectl apply -f /etc/kubernetes/manifests/kube-apiserver.yaml
将使用者與權限綁定
kubectl create clusterrolebinding login-on-dashboard-with-cluster-admin –clusterrole=cluster-admin –user=admin
檢視綁定
kubectl get clusterrolebinding login-on-dashboard-with-cluster-admin
修改kubernetes-dashboard.yaml
開啟authentication-mode=basic配置
args:
– –auto-generate-certificates
– –namespace=kubernetes-dashboard
– –token-ttl=43200
– –authentication-mode=basic
更新kubernetes-dashboard
kubectl apply -f kubernetes-dashboard.yaml
驗證
結束語
以上均為kubeadm方式部署的叢集。如果是二進制方式部署的叢集,則不用在kubernetes-dashboard.yaml檔案中開啟authentication-mode=basic
basic驗證方式存在一個問題,就是使用者名和密碼要保持一緻,如果使用者名和密碼不一緻,登陸驗證的時候會提示Unauthorized (401): Invalid credentials provided(不要問我為什麼,這個問題我也不知道咋解決)
另外/etc/kubernetes/pki/basic_auth_file檔案不會熱更新,每次添加新使用者之後都需要手動重新開機一下api-server一般來說,隻有一個使用者就夠了