前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TKE集群开启RBAC控制后如何获取集群token

TKE集群开启RBAC控制后如何获取集群token

原创
作者头像
聂伟星
修改2021-11-16 14:09:54
3.4K0
修改2021-11-16 14:09:54
举报

最近TKE集群的RBAC对象级权限控制功能已经全量上线了,新的RBAC模式下kubeconfig不再提供集群的token,都是通过证书进行认证,具体变化和使用可以参考文档https://cloud.tencent.com/document/product/457/46104,但是今天的重点不是RBAC的介绍和使用。

我们很多时候我们还是会需要用到集群的token,比如jekins的kubernetes插件就需要用到集群的token进行认证,那么现在集群不像以前提供admin用户token怎么办呢,难道就不能快乐玩耍jenkins了?其实我们还是有其他方法来解决这个问题。

我们仔细想想为啥jenkins要用集群的admin这个user的token才能认证成功,说白了就是admin的权限足够大,能够对集群执行所有操作。既然admin远离我们了,那我们就创建一个新的admin来为我们提供服务。今天我们来说说如何创建一个serviceAccount用来进行jenkins的k8s插件认证。

1. 创建serviceAccount

代码语言:javascript
复制
kubectl create sa tke-admin

2. 为serviceAccount绑定集群角色

我们新版的rbac权限控制有4个如下预设角色,既然我们的新的admin需要足够的权限,那就给他管理员权限。

  • 管理员(tke:admin):对所有命名空间下资源的读写权限,具备集群节点、存储卷、命名空间、配额的读写权限,可配置子账号的读写权限。
  • 运维人员(tke:ops):对所有命名空间下控制台可见资源的读写权限,具备集群节点、存储卷、命名空间、配额的读写权限。
  • 开发人员(tke:dev):对所有命名空间下控制台可见资源的读写权限。
  • 受限人员(tke:ro):对所有命名空间下控制台可见资源的只读权限。
代码语言:javascript
复制
kubectl create clusterrolebinding tke-admin-binding --clusterrole=tke:admin --serviceaccount=default:tke-admin

3.获取serviceAccount对应的token

新的admin用户已经创建好了,下面我们来获取下这个账号的token用于jenkins里面认证

代码语言:javascript
复制
[root@VM-0-13-centos ~]# kubectl get sa tke-admin -o=jsonpath='{.secrets[0].name}'
tke-admin-token-hwqw2
[root@VM-0-13-centos ~]# kubectl get secret tke-admin-token-hwqw2 -o=jsonpath='{.data.token}' | base64 -d    
eyJhbGciOiJSUzI1NiIsImtpZCI6ImphQ0RWTFBlNTJ0aXNDSUNkTUJzdHBlbTBLSFVGTmd0UF9JWGMwOFNqM2Mi

通过上命令获取sa的token,然后进行base64解密就是你可以使用的token了(注意防止token泄露,上面token已进行删减)

4.jenkins中进行认证

现在我们集群的token有了,那么可以到jenkisn进行认证了,看看能不能用这个token来连接tke集群

首先需要在jenkisn中安装Kubernetes plugin

插件安装好之后,可以在系统配置中,拉到最下面找到cloud配置进行k8s配置

点击配置集群,需要进行如下配置

Kubernetes 地址 :tke集群的公网访问地址,可以在集群基本信息中获取

在Kubernetes 服务证书 key中配置集群的ca证书,这个随便登录一个节点,执行命令获取

代码语言:javascript
复制
[root@VM-0-3-centos ~]# sudo cat /etc/kubernetes/cluster-ca.crt 
-----BEGIN CERTIFICATE-----
MIICyDCCAbCgAwIBAgIBADANBgkqhkiG9w0BAQsFADAVMRMwEQYDVQQDEwprdWJl
cm5ldGVzMB4XDTIwMTExOTAzNDQxMVoXDTMwMTExNzAzNDQxMVowFTETMBEGA1UE
AxMKa3ViZXJuZXRlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbN
0nC5jmQdCvC1waT0avcMPmg29AXlOwRcWJgPWktzu2J3ZhYgDWZQlRMUH1Vl9nNm
iH617/3TPzVmzGGIATgeaq9iyG4PqKXLZf2SnR5LJj3wlrD1q9GjT+ZkNhVsD6fo
9ZUNk2mXVg/f53E9rSfCeGPoNxkyebOkwBYeRZ7ttUhc+HlF6ruMiG3OMM+xeZg7
FACtiWj3JajFLFhaCTjxW6i3RCm9vG0qPDTT1z+AkAULl3u3uKmFoM2ROv2I317o
WtalEKrlXR9qqxEDzjOk5MbF252/mUi4OAxsXh9O8e5JDh/EZz0k7n3vDld2cIL5
fBPe9elH54vucruPdn8CAwEAAaMjMCEwDgYDVR0PAQH/BAQDAgKUMA8GA1UdEwEB
/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAJjrX5eYokUlJmlwknYKtmvHcKUF
pHvcbARaOOX43qcUPokd/L0TzIFOZ/ZT4zx1s/yCpvYZL9mhd5B7n7s0LbrB4etS
YwnfoFWoj7gwuKDIPNXZE4NG6IOWQs1NiwM4/UyKF5gA4yJ6eWmuO43sZC0=
-----END CERTIFICATE-----

凭据:这个把上面获取的token配置成一个凭证即可,类型选择secret text,secret填入token,id填写凭证名称

最终完整配置如下,配置完之后,点击连接测试,如果出现 Connected to Kubernetes XXXXXX 则表示连接集群成功 。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 创建serviceAccount
  • 2. 为serviceAccount绑定集群角色
  • 3.获取serviceAccount对应的token
  • 4.jenkins中进行认证
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档