K8S1.24版本后获取用户Token
使用TokenRequest API获取token
k8s 1.24版本开始使用kubectl获取不到用户token
需要通过调用TokenRequest API获取
开启代理
Kubernetes API 的端口是6443 但是这个是Kubernetes内部ip的端口,我们本地是无法访问的,所以需要使用代理:
# 使用kubectl 开启代理并且设置代理端口为8001
kubectl proxy --port=8001
# 检查是否开启成功
curl http://localhost:8001/api/
# 成功会返回
{
"kind": "APIVersions",
"versions": [
"v1"
],
"serverAddressByClientCIDRs": [
{
"clientCIDR": "0.0.0.0/0",
"serverAddress": "192.168.65.4:6443"
}
]
}
检查用户是否存在
# 根据工作空间获取所有serviceaccount信息的接口
# GET /api/v1/namespaces/{namespace}/serviceaccounts
# 根据工作空间获取单个serviceaccount信息的接口
# GET /api/v1/namespaces/{namespace}/serviceaccounts/{name}
# 获取所有的serviceaccount信息 不分工作空间
# GET /api/v1/serviceaccounts 获取所有
# 获取kube-system工作空间下名为duzhaosongyue的serviceaccount信息
curl 127.0.0.1:8001/api/v1/namespaces/kube-system/serviceaccounts/dashboard-admin
获取token
# 获取token接口地址
# POST /api/v1/namespaces/{namespace}/serviceaccounts/{name}/token
# 获取token带有参数
curl 'http://127.0.0.1:8001/api/v1/namespaces/kube-system/serviceaccounts/dashboard-admin/token' -H "Content-Type:application/json" -X POST -d '{"kind":"TokenRequest","apiVersion":"authentication.k8s.io/v1","metadata":{"name":"dashboard-admin","namespace":"kube-system"},"spec":{"audiences":["https://kubernetes.default.svc.cluster.local"],"expirationSeconds":7600}}'
# 获取token不带参数
curl 'http://127.0.0.1:8001/api/v1/namespaces/kube-system/serviceaccounts/dashboard-admin/token' -H "Content-Type:application/json" -X POST -d '{}'