建立示例使用者
在本指南中,我們將瞭解如何使用 Kubernetes 的服務帳戶機制建立新使用者、授予該使用者管理員許可權並使用與該使用者繫結的承載令牌登入儀表板。
對於以下每個和的程式碼片段ServiceAccount
,ClusterRoleBinding
您都應該將它們複製到新的清單檔案(如)中,dashboard-adminuser.yaml
並使用kubectl apply -f dashboard-adminuser.yaml
來建立它們。
建立服務帳號
我們首先admin-user
在名稱空間中建立具有名稱的服務帳戶。kubernetes-dashboard
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
建立 ClusterRoleBinding
kops
在大多數情況下,使用kubeadm
或任何其他流行工具配置叢集后,ClusterRole
cluster-admin
叢集中已經存在。我們可以使用它並ClusterRoleBinding
為我們的建立一個ServiceAccount
。如果它不存在,那麼您需要先建立此角色並手動授予所需的許可權。
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: kubernetes-dashboard
獲取 ServiceAccount 的 Bearer Token
現在我們需要找到可以用來登入的令牌。執行以下命令:
kubectl -n kubernetes-dashboard create token admin-user
它應該列印類似這樣的內容:
eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLXY1N253Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIwMzAzMjQzYy00MDQwLTRhNTgtOGE0Ny04NDllZTliYTc5YzEiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.Z2JrQlitASVwWbc-s6deLRFVk5DWD3P_vjUFXsqVSY10pbjFLG4njoZwh8p3tLxnX_VBsr7_6bwxhWSYChp9hwxznemD5x5HLtjb16kI9Z7yFWLtohzkTwuFbqmQaMoget_nYcQBUC5fDmBHRfFvNKePh_vSSb2h_aYXa8GV5AcfPQpY7r461itme1EXHQJqv-SN-zUnguDguCTjD80pFZ_CmnSE1z9QdMHPB8hoB4V68gtswR1VLa6mSYdgPwCHauuOobojALSaMc3RH7MmFUumAgguhqAkX3Omqd3rJbYOMRuMjhANqd08piDC3aIabINX6gP5-Tuuw2svnV6NYQ
檢視Kubernetes 文件有關 ServiceAccount 的 API 令牌的更多資訊。
獲取 ServiceAccount 的長期 Bearer Token
我們還可以建立一個與服務賬戶繫結的帶有secret的token,該token會儲存在Secret中:
apiVersion: v1
kind: Secret
metadata:
name: admin-user
namespace: kubernetes-dashboard
annotations:
kubernetes.io/service-account.name: "admin-user"
type: kubernetes.io/service-account-token
Secret建立完成後,我們可以執行以下命令來獲取Secret中儲存的Token:
kubectl get secret admin-user -n kubernetes-dashboard -o jsonpath={".data.token"} | base64 -d
檢視Kubernetes 文件有關 ServiceAccount 的長效 API 令牌的更多資訊。
訪問儀表板
現在複製令牌並將其貼上到Enter token
登入螢幕上的欄位中。
單擊Sign in
按鈕即可。您現在以管理員身份登入。
清理和後續步驟
刪除管理員ServiceAccount
和ClusterRoleBinding
。
kubectl -n kubernetes-dashboard delete serviceaccount admin-user
kubectl -n kubernetes-dashboard delete clusterrolebinding admin-user
為了瞭解有關如何在 Kubernetes 中授予/拒絕許可權的更多資訊,請閱讀官方驗證&授權文件。
https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md