使用Kubernetes的Service Account
创建一个新用户,授予该用户admin权限,并使用与该用户绑定的Token来登录Dashboard。
重要提示:在继续之前,请确保你知道自己在做什么。给Dashboard的服务账户授予admin权限可能会有安全风险。
创建一个Service Account
首先在命名空间 kubernetes-dashboard 中创建名称为 admin-user 的 Service Account。
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
创建一个ClusterRoleBinding
在大多数情况下,使用 kops、kubeadm 或任何其他流行工具部署集群后,集群中已经存在 ClusterRole cluster-admin。 我们可以使用它并仅为我们的 ServiceAccount 创建一个 ClusterRoleBinding。 如果它不存在,那么需要先创建此角色并手动授予所需的权限。
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
执行
你需要创建以上2个文件ServiceAccount
和ClusterRoleBinding
,你可以把它们复制到新的清单文件中,命名为dashboard-adminuser.yaml
,并使用kubectl apply -f dashboard-adminuser.yaml
来创建它们。
kuebiz上已经做好了,可以直接来创建:
kubectl apply -f https://www.kubebiz.com/raw/KubeBiz/Kubernetes%20Dashboard/v2.7.0/admin-user.yaml
最后,获得令牌
现在我们需要找到我们可以用来登录的token,执行以下命令:
kubectl -n kubernetes-dashboard create token admin-user
输入类似如下:
eyJhbGciOiJSUzI1NiIsImtpZCI6Im5oT0VFUzVpdzROTkhGVUVZb0ZfUnpBYW5YWXRRWU9ydXFJaHFkMlkxRjAifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNzU2NTM0Nzc0LCJpYXQiOjE3MjQ5OTg3NzQsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJhZG1pbi11c2VyIiwidWlkIjoiYWE4YzE3MjMtZjQ1ZS00MTcyLThmMzEtZjRjNTM2NDY3NjE0In19LCJuYmYiOjE3MjQ5OTg3NzQsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDphZG1pbi11c2VyIn0.HvTOarjXqE40L9HxXvq9ReOLSEiTHPMgZCunUNS5-oGw5eV3PzpvAew_x7fs61za5UABMnR1B54-gAng19DoTD4jnZrMMbVfzf6EsBbqI0X2LbmAiQ4ebNsO1wS0OvaiMotBe8TpqrDe5VeOx4iXm_Eu2z3Ao5lLtxda3fRkCO8HuBsAseH2Thz67Uy3dF5jUERunncD6MrTrGs48JqTTp5upxHMJRPFOiP440_yzls12kvv9LETEimdYU6Ci7htTXZazr7PdDXAiK-THK6rmeHj4wCf5Hkjjz8-QZW9Z-1oA87PPXKkoAIXzQkZkxAQ4D5aQVNeJ2uIz9Q89cbABw
现在,就可以通过Token登录了。
清理
移除 admin 的 ServiceAccount
和 ClusterRoleBinding
kubectl -n kubernetes-dashboard delete serviceaccount admin-user
kubectl -n kubernetes-dashboard delete clusterrolebinding admin-user
可以创建不会过期的token吗
可以用kubeconfig的方式登录。
设置一年过期吧,够用了。
kubectl -n kubernetes-dashboard create token admin-user --duration=8760h