Creating a Kubernetes Dashboard Token



我试图按照https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md上的说明创建Kubernetes Dashboard令牌。但是,当我运行指定的命令时,我得到一个错误

% kubectl -n kubernetes-dashboard create token admin-user
Error: must specify one of -f and -k
error: unknown command "token admin-user"
See 'kubectl create -h' for help and examples

如果我跳转回文档历史记录,我会看到一个不同的,更详细的命令,我可以运行

% kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"

这似乎可以正常工作,文档更改的PR提到了"版本1.24";但没有提到版本1.24的哪个软件指的是(kubectl?指示板吗?Kuberenetes本身?kind吗?别的吗?)

那么第一个命令是怎么回事呢?为什么它不起作用?

如果您的版本低于1.24,请执行以下命令。

kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"

这在我的情况下有效。谢谢。

这是kubernetes 1.24中的一个新特性,您的集群和kubectl必须运行<1.24版本的kubernetes,导致这个问题。查看下面的更改日志:

kubectl创建令牌现在可以用于请求服务帐户令牌,并将请求服务帐户令牌的权限添加到编辑和管理RBAC角色(#107880,@liggitt)

显示更多相关信息的另一个片段:

Kubectl变化:

向kubectl添加命令以请求绑定的服务帐户令牌。这将有助于简化从抓取生成服务的过渡使用kubectl get secret "$(kubectl getServiceaccount default -o jsonpath='{.secrets[0].name}')">

服务器和客户端都必须运行1.24或更新版本,如下所示:

kubectl version --output=json
{
"clientVersion": {
"major": "1",
"minor": "24",
"gitVersion": "v1.24.0",
"gitCommit": "4ce5a8954017644c5420bae81d72b09b735c21f0",
"gitTreeState": "clean",
"buildDate": "2022-05-03T13:46:05Z",
"goVersion": "go1.18.1",
"compiler": "gc",
"platform": "linux/amd64"
},
"kustomizeVersion": "v4.5.4",
"serverVersion": {
"major": "1",
"minor": "24",
"gitVersion": "v1.24.2",
"gitCommit": "f66044f4361b9f1f96f0053dd46cb7dce5e990a8",
"gitTreeState": "clean",
"buildDate": "2022-06-15T14:15:38Z",
"goVersion": "go1.18.3",
"compiler": "gc",
"platform": "linux/amd64"
}
}

查看更多信息:https://github.com/kubernetes/kubernetes/pull/107880

最新更新