事情起因:
最近TKE集群的RBAC对象级权限控制功能已经全量上线了,新的RBAC模式下kubeconfig不再提供集群的token,都是通过证书进行认证,具体变化和使用可以参考文档https://cloud.tencent.com/document/product/457/46104。
然后我们公司使用的kubeClient 这个C#的SDK去操作的腾讯云的容器生成删除的,然后就悲剧了。新开的容器它的Config是没有token配置的,而在这个sdk是通过token连接到腾讯云的容器的。包括jenkins等也是通过token连接的。最终联系的腾讯云的人员得到的最终解决方案。
如何解决:
这是原文地址:https://cloud.tencent.com/developer/article/1762567
1.我们首先用kubectl工具连接到腾讯云具体实例,这里就不多做介绍了。不会的可以自行百度此工具。腾讯容器实例详情里面也有详细的连接介绍。
2.通过kubectl连接到集群后 通过此命令 创建一个serviceAccount:
kubectl create sa tke-admin
3. 为serviceAccount绑定集群角色,这里注意角色的权限(clusterrole):
kubectl create clusterrolebinding tke-admin-binding --clusterrole=tke:admin --serviceaccount=default:tke-admin
管理员(tke:admin):对所有命名空间下资源的读写权限,具备集群节点、存储卷、命名空间、配额的读写权限,可配置子账号的读写权限。
运维人员(tke:ops):对所有命名空间下控制台可见资源的读写权限,具备集群节点、存储卷、命名空间、配额的读写权限。
开发人员(tke:dev):对所有命名空间下控制台可见资源的读写权限。
受限人员(tke:ro):对所有命名空间下控制台可见资源的只读权限。
4.绑定了角色权限之后就能查看到tke-admin配置信息
kubectl get sa tke-admin -o yaml
5.能查看到配置信息后执行下面语句就能看到token了,注意grep是linux命令,如果你用的windows ,请将grep 改为findstr
kubectl get secret tke-admin-token-hwqw2 -o yaml | grep token: