当前位置: 首页 > news >正文

如何创建自定义权限的kubeconfig

如何创建自定义权限的kubeconfig

  • 有些小伙伴问如何做自定义权限的kubeconfig
    • 首先看下我们怎么了解我们控制的权限的api以及涉及的资源和动作权限从哪里可以轻松查看
    • 了解了上面的,接下来就简单了,和简单的授权流程一致
      • 1、创建一个账户
      • 2、创建想要的角色或集群角色
      • 3、将账户绑定到创建的角色或集群级别角色
      • 4、创建这个账户的kubeconfig

有些小伙伴问如何做自定义权限的kubeconfig

这里就用通俗的语言简单描述下如何做一个符合自己权限需求的kubeconfig方便权限控制等等。

首先看下我们怎么了解我们控制的权限的api以及涉及的资源和动作权限从哪里可以轻松查看

使用命令kubectl api-resources -o wide

# kubectl api-resources -o wide
NAME                                SHORTNAMES       APIVERSION                                       NAMESPACED   KIND                               VERBS                                                        CATEGORIES
bindings                                             v1                                               true         Binding                            create                                                       
componentstatuses                   cs               v1                                               false        ComponentStatus                    get,list                                                     
configmaps                          cm               v1                                               true         ConfigMap                          create,delete,deletecollection,get,list,patch,update,watch

上面的输出中:
NAME字段就是对应的resources,如configmaps,对应权限设置中就是resources:configmaps
APIVERSION字段就对应我们权限设置中apiGroups,如v1对应的就是apiGroups:“”,如果是apps/v1就对应apiGroups:“apps”,v1不写
NAMESPACED字段如果是true,做非全局的权限就需要注意
VERBS字段就对应了相应的动作权限,如输出内容的configmaps的VERBS就对应create,delete,deletecollection,get,list,patch,update,watch这些动作

了解了上面的,接下来就简单了,和简单的授权流程一致

1、创建一个账户
2、创建一个又特定权限集的角色或集群级别角色
3、将账户绑定到创建的角色或集群级别角色
4、创建这个账户的kubeconfig

下面一步一步来实现

1、创建一个账户

在你需要的ns创建你定义的名字的serviceaccounts

kubectl create sa xxxxx -n xxxxx

这里注意1.24后需要自己给sa手动创建token,如果是1.24前的版本会自动生成,这里针对1.24后的给个yaml样例

apiVersion: v1
kind: Secret
type: kubernetes.io/service-account-token
metadata:
  name: my-sa-token
  namespace: xxxxx
  annotations:
    kubernetes.io/service-account.name: "my-sa"

使用kubectl去apply下手动建sa的token

2、创建想要的角色或集群角色

这里给个集群角色的yaml样例

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: myclusterrole
  annotations:
  labels:
rules:
- apiGroups:
  - "*"                           #如果*就是所有
  resources:
  - "*"                           #如果*就是所有
  verbs:
  - list
  - get
  - watch
- apiGroups:
  - apps
  resources:
  - deployments
  verbs:
  - list
  - get
  - watch
  - patch

这个文件apply后就是创建了一个叫myclusterrole的集群角色对所有资源都有list get watch的权限,对deployments还额外拥有patch权限。
其实你这里如果少给了权限,在你使用创建的kubecong去执行相应命令时也会有具体的提示。

3、将账户绑定到创建的角色或集群级别角色

这里也给出一个将sa绑定到集群级别角色的yaml样例

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: myclusterrolebinding
  annotations:
  labels:
subjects:
- kind: ServiceAccount
  name: xxx
  namespace: xxxxx
roleRef:
  kind: ClusterRole
  name: myclusterrole
  apiGroup: rbac.authorization.k8s.io

4、创建这个账户的kubeconfig

#获取集群ca证书
kubectl get secret my-sa-token -n xxxx -oyaml |grep ca.crt: | awk '{print $2}' |base64 -d > ca.crt
#给kubeconfig设置访问集群
kubectl config set-cluster xxxxxx --server=https://xxxxxx:6443  --certificate-authority=ca.crt  --embed-certs=true --kubeconfig=xxxxx.config
#获取所创sa的token,或者用第二条命令直接把值赋给变量token
kubectl describe secret my-sa-token -n xxxxxx | awk '/token:/{print $2}'
token=$(kubectl describe secret my-sa-token -n xxxxx | awk '/token:/{print $2}')
#给kubeconfig设置用户
kubectl config set-credentials sa的名字 --token=$token --kubeconfig=xxxxx.config
#给kubeconfig设置上下文
kubectl config set-context sa的名字@集群名 --cluster=集群名 --user=sa的名字 --kubeconfig=xxxxx.config
#给kubeconfig设置当前上下文
kubectl config use-context sa的名字@集群名 --kubeconfig=xxxxxconfig
#好了可以拿着xxxxxconfig去测试权限是否符合你需求了

相关文章:

  • springboot399-中文社区交流平台(源码+数据库+纯前后端分离+部署讲解等)
  • http状态码503之解决方法(Solution to HTTP Status Code 503)
  • 微信小程序通过http通信控制庐山派
  • [RabbitMQ] 常见面试题汇总 | 工作流程 | 消息可靠性 | 消息顺序性 | 幂等性 | 高级特性 | 延迟队列 | 仲裁队列 | 工作模式 | 消息积压 | 推拉模式
  • 实时图像与视频超分辨率:高效子像素卷积网络(ESPCN)解析
  • CLIP论文学习
  • 985本硕,网络安全方向,走算法还是走开发?
  • 【会议预告】人工智能与材料国际学术会议
  • 沃丰科技大模型标杆案例 | 索尼大模型智能营销机器人建设实践
  • 短视频矩阵碰一碰发视频源码技术开发,支持OEM
  • bypy的依赖库版本问题
  • STL —— 洛谷字符串(string库)入门题(蓝桥杯题目训练)(一)
  • Ubuntu24安装MongoDB(解压版)
  • 使用docker-compose运行服务
  • IM聊天系统架构实现
  • day12_调度和可视化
  • org.mortbay.jetty和org.eclipse.jetty的区别
  • 论文笔记:Scaling LLM Test-Time Compute Optimally can be More Effective than Scaling
  • 罗格科技发布全球首款税务智能合规终端“罗拉DeepTax双引擎AI一体机”
  • Grok 3当前唯一跑分超过1400分的模型,Grok 2 和 Grok 3 如何使用
  • 腾讯一季度营收增长13%,马化腾:战略性的AI投入将带来长期回报
  • 国新办将就2025年4月份国民经济运行情况举行新闻发布会
  • “老中青少”四代同堂,季春艳携锡剧《玲珑女》冲击梅花奖
  • 大英博物馆展歌川广重:他是梵高最钟爱的浮世绘名家
  • 法治日报整版聚焦:儿童能否成为短视频主角?该如何监管?
  • 福建厦门市副市长、市公安局局长陈育煌出任吉林省公安厅厅长