由于minikube
问题13841和13872(我认为是相同的),我必须使用minikube
1.23.2。我尝试使用minikube start --kubernetes-version v...
版本1.24+,但没有工作(不知道为什么)。因此,我不能使用方便的命令kubectl -n ... create token ...
。Seba对这个问题的回答显示了如何使用这个较旧的kubectl
版本生成令牌:
$ export secret=$(kubectl get serviceaccount default -o jsonpath='{.secrets[0].name}')
$ kubectl get secret $secret -o jsonpath='{.data.token}' | base64 --decode
显然,该命令只适用于业务帐户default
。我如何重写该脚本,使其可以用于其他用户如下?
$ export my_script=....
$ my_script another_account
如果我猜对了你想问的问题,
#!/bin/sh
secret=$(kubectl get serviceaccount "${1-default}" -o jsonpath='{.secrets[0].name}')
kubectl get secret "$secret" -o jsonpath='{.data.token}' | base64 --decode
默认为serviceaccount default
,但如果您这样做,则使用传入的任何参数作为第一个命令行参数。
如果您将其保存为ktoken
,chmod +x
文件,并确保它所在的目录在PATH
上(可能带有符号链接),您可以运行
ktoken
为default
帐户运行它,
ktoken otheraccount
为otheraccount
运行。
export
一个变量,除非你需要子进程访问它。
检查完这个问题后,我可以看到这样做的一种方法是创建一个get_token.sh
文件,其中包含以下内容:
#!/bin/bash
user_account=$1
function get_token() {
secret=$(kubectl get serviceaccount "$1" -o jsonpath='{.secrets[0].name}')
kubectl get secret "$secret" -o jsonpath='{.data.token}' | base64 --decode
}
get_token $user_account
然后我可以从终端调用:
$ bash get_token.sh another_account
另一种不涉及bash脚本文件的方法是定义get_token
函数然后使用它:
$ function get_token() { secret=$(kubectl get serviceaccount "$1" -o jsonpath='{.secrets[0].name}') && kubectl get secret "$secret" -o jsonpath='{.data.token}' | base64 --decode; }
$ get_token another_account
不确定是否有其他或更好的方法。