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

k8s 集群给用户生成 kubeconfig 文件

在 k8s 集群的 RBAC 里有用到用户、组的概念,但是它又不直接管理这些资源,而是通过外部身份验证机制(Authentication Mechanisms)来管理和定义的,比如证书进行签名时,将其配置为 Subject: O = system:masters, CN = kubernetes-admin。O 代表用户组,CN 是用户,这些都是通过签署证书管理的。 但是新版本可以直接通过命令去创建,我用的是 1.31
这些在集群管理权限的时候很重要,如何给用户生成相应的 kubeconfig 文件,下面就这个问题说明下,刚接触往往这块会比较懵逼

查看当前的用户组

可以把新建的用户放到这些组下,或者新建组都可以

kubectl get rolebindings <rolebinding-name> -n <namespace> -o json | jq '.subjects[] | select(.kind == "Group") | .name'
kubectl get clusterrolebindings <clusterrolebinding-name> -o json | jq '.subjects[] | select(.kind == "Group") | .name'

创建用户和组并授权

用户授权

  1. k8s 里kubeadm 命令有提供给用户创建 conf 的命令,下面我们来创建用户jane的 conf,所在的组是podreader,这个组也是我们新创建的没有任何权限,生成 conf 文件存在pod-reader-group.conf
kubeadm kubeconfig user --org podreader --client-name jane --validity-period 24h > pod-reader.conf
  1. 我们先通过上面这个 conf 文件查看下 pod,会爆没有权限的错误,属于预期范围,因为咱们的用户jane没有任何权限
# kubectl get pod --kubeconfig pod-reader.conf
Error from server (Forbidden): pods is forbidden: User "janegroup" cannot list resource "pods" in API group "" in the namespace "default"
  1. 这一步我们给jane授权,通过创建 role rolebinding
# cat pod-reader.yaml 
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:namespace: defaultname: pod-reader
rules:
- apiGroups: [""] # "" 标明 core API 组resources: ["pods"]verbs: ["get", "watch", "list"]# cat pod-reader-binding.yaml 
apiVersion: rbac.authorization.k8s.io/v1
# 此角色绑定允许 "jane" 读取 "default" 名字空间中的 Pod
# 你需要在该名字空间中有一个名为 “pod-reader” 的 Role
kind: RoleBinding
metadata:name: read-podsnamespace: default
subjects:
# 你可以指定不止一个“subject(主体)”
- kind: Username: jane # "name" 是区分大小写的apiGroup: rbac.authorization.k8s.io
roleRef:# "roleRef" 指定与某 Role 或 ClusterRole 的绑定关系kind: Role        # 此字段必须是 Role 或 ClusterRolename: pod-reader  # 此字段必须与你要绑定的 Role 或 ClusterRole 的名称匹配apiGroup: rbac.authorization.k8s.io
  1. 现在我们再执行下第二步的命令,会发现可以查看了,已经有查看 default ns 下pod 的权限,但是其他的 ns 仍然没有,因为 role 没有给其他的 ns 授权
kubectl apply -f pod-reader.yaml
kubectl apply -f pod-reader-binding.yaml

上面是给单个用户授权的,但是它所在的组podreader没有任何权限,所以需要再给他授权,方法和上面给用户授权类似

组授权

  1. 创建一个新的用户janegroup,所属组在podreader里,然后执行get pod 命令,是无法查看的,因为所属的组是没有权限的
# kubeadm kubeconfig user --org podreader --client-name janegroup --validity-period 24h > pod-reader-group.conf
# kubectl get pod --kubeconfig pod-reader-group.conf
Error from server (Forbidden): pods is forbidden: User "janegroup" cannot list resource "pods" in API group "" in the namespace "default"
  1. 下面我们给组podreader绑定权限,role 文件和上一步是一样的
cat pod-reader-binding-group.yaml
apiVersion: rbac.authorization.k8s.io/v1
# 此角色绑定允许 "jane" 读取 "default" 名字空间中的 Pod
# 你需要在该名字空间中有一个名为 “pod-reader” 的 Role
kind: RoleBinding
metadata:name: read-podsnamespace: default
subjects:
# 你可以指定不止一个“subject(主体)”
- kind: Groupname: podreader # "name" 是区分大小写的apiGroup: rbac.authorization.k8s.io
roleRef:# "roleRef" 指定与某 Role 或 ClusterRole 的绑定关系kind: Role        # 此字段必须是 Role 或 ClusterRolename: pod-reader  # 此字段必须与你要绑定的 Role 或 ClusterRole 的名称匹配apiGroup: rbac.authorization.k8s.io
  1. 再次执行查看命令就可以查看了,说明权限已生效
# kubectl get pod --kubeconfig pod-reader-group.conf
No resources found in default namespace.
http://www.lryc.cn/news/461809.html

相关文章:

  • (八)Proteus仿真STM32单片机GPIO驱动数码管
  • Python进阶知识1
  • 单片机设计|基于STM32实现具有室内定位功能的智能手环的设计
  • 计算机网络——运输层(可靠传输、超时重传、选择确认、流量控制和拥塞控制、TCP连接和释放)
  • Web安全实践
  • 【算法篇】动态规划类(2)——01背包+完全背包(笔记)
  • 基于SpringBoot的“社区医院管理服务系统”的设计与实现(源码+数据库+文档+PPT)
  • 二进制漏洞利用 | 整数溢出探究
  • 10种经典的螺栓防松设计
  • 开放式蓝牙耳机哪个品牌好用?开放式耳机排行榜测评!
  • 新能源行业必会基础知识---电力现货问答---第5问---何为电力中长期市场?与电力现货市场之间有何关系?国内试点地区如何衔接?国外有哪些经验值得借鉴?
  • 如何将数据从 AWS S3 导入到 Elastic Cloud - 第 2 部分:Elastic Agent
  • DTL698电表数据 转 profinet IO协议项目案例
  • CSS @规则(At-rules)系列详解___@font-face规则使用方法
  • 如何通过CDN优化网站服务器访问速度?
  • JAVA学习-练习试用Java实现“自定义函数之字符反转”
  • 大衍数列——考研408考试科目之数据算法——未来之窗学习通
  • JVM(HotSpot):直接内存及其使用建议
  • centos7安装mysql5.7
  • 如何在JVS逻辑引擎中巧妙运用包含查询功能?
  • Spring Boot视频网站:安全与可扩展性设计
  • 深入理解 Flutter 鸿蒙版的 Stack 布局:适配屏幕与层叠样式布局
  • JavaScript中Number相关特性
  • Redis中String类型数据扩容原理分析
  • 智能码二维码zhinengma.cn在供应链管理中有哪些优势?
  • 代理商培训新策略:利用内部知识库提升培训效果
  • Redis 哨兵模式下DB库操作审计
  • latex公式输入-矩阵
  • NSSCTF-WEB-easy_eval
  • 交通目标识别数据集YOLO 模型 ui界面✓图片数量15000,xml和txt标签都有 11类 交通道路车辆行人红黄绿数据集 红绿灯数据集 交通信号数据集