我想从备份中恢复 kubernetes 服务帐户令牌(这实际上只是相应密钥的导出):
apiVersion: v1
kind: Secret
metadata:
name: my-service-account-token-lqrvp
annotations:
kubernetes.io/service-account.name: my-service-account
type: kubernetes.io/service-account-token
data:
token: bXktc2ltcGxlLXRva2VuCg==
秘密已成功应用并已添加到服务帐户:
# kubectl apply -f my-service-account.yaml
secret/my-service-account-token-lqrvp created
# kubectl describe sa my-service-account
Name: my-service-account
Namespace: my-namespace
Labels: <none>
Annotations: kubernetes.io/service-account.name: my-service-account
Image pull secrets: my-service-account-dockercfg-lv9hp
Mountable secrets: my-service-account-token-lv9hp
Tokens: my-service-account-token-lqrvp
Events: <none>
不幸的是,每次我尝试使用令牌访问 api 时,我总是收到错误“提供的令牌无效或已过期”:
# kubectl login https://api.my-k8s-cluster.mydomain.com:6443 --token=my-simple-token
error: The token provided is invalid or expired
我知道令牌通常是由controller-manager自动生成的,但是恢复kubernetes支持的令牌吗?
您不能这样做,因为令牌具有有关服务帐户 uid 的详细信息,该 uid 是唯一的,甚至在 SA 及其秘密(令牌)恢复后 SA 的名称也相同。通过从 Base64 解码令牌并传递到 JWT 解码器 来查看里面的内容,可以找到更多详细信息。