1.22+版本的k8s集群,创建ServiceAccount,默认不会创建Secret,因为tke版本都是双数版本,因此这个特性在1.24及更高的tke集群版本也是存在的,具体可以参考官网文档管理服务账号 | Kubernetes
tke集群默认都是RBAC 的授权模式,给每个子用户提供的kubeconfig,不再提供token,默认都是用证书进行认证,但是还是会有部分会需要用到集群token的场景,那么如何生成集群的token呢?
如果是1.22及之前的版本可以参考文档获取https://cloud.tencent.com/developer/article/1762567
如果是1.24及更高版本,可以通过下面方式获取。
生成集群token的前提是对应的操作者有集群admin角色权限,这里直接将下面yaml,apply到集群,进行资源的创建,可以通过kubectl或者控制台直接yaml创建
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-token-sa
namespace: default
secrets:
- name: admin-token-secret
---
apiVersion: v1
kind: Secret
type: kubernetes.io/service-account-token
metadata:
name: admin-token-secret
namespace: default
annotations:
kubernetes.io/service-account.name: "admin-token-sa"
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-token-clusterrolebinding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: tke:admin
subjects:
- kind: ServiceAccount
name: admin-token-sa
namespace: default
然后通过如下命令获取下token,并且获取token已经拥有admin的权限,因为这里给sa绑定了tke:admin这个ClusterRole
这个ClusterRole的权限是可以操作集群内任意资源。
kubectl get secret $(kubectl get serviceaccount admin-token-sa -o jsonpath='{.secrets[0].name}') -o jsonpath='{.data.token}' | base64 -d
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。