k8s dashboard token 生成/獲取

牛奔發表於2024-09-11

建立示例使用者

在本指南中,我們將瞭解如何使用 Kubernetes 的服務帳戶機制建立新使用者、授予該使用者管理員許可權並使用與該使用者繫結的承載令牌登入儀表板。

對於以下每個和的程式碼片段ServiceAccountClusterRoleBinding您都應該將它們複製到新的清單檔案(如)中,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按鈕即可。您現在以管理員身份登入。

概述

清理和後續步驟

刪除管理員ServiceAccountClusterRoleBinding

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

相關文章