k8s RBAC授权普通系统用户对namespace访问权限

背景:最近遇到一个问题,那就是需要给别人共享一下 Kubernetes 的某个资源的使用和访问权限,这个仅仅存在于某个 namespace 下,但是我又不能把管理员权限全都给它,我想只给他授予这一个 Namespace 下的权限,那应该怎么办呢?

比如我这边是需要只想授予 ads这个用户 对 data 这个 Namespace 的权限,这里我就需要利用到 Kubernetes 里面的 RBAC 机制来实现了,下面记录了我的操作流程。

一、创建ads用户的key

cd /etc/kubernetes/ssl/penssl req -new -key ads.key -out ads.csr -subj "/CN=ads"openssl x509 -req -in ads.csr -CA /etc/kubernetes/ssl/ca.pem -CAkey /etc/kubernetes/ssl/ca-key.pem -CAcreateserial -out ads.crt -days 365openssl x509 -in ads.crt -text -noout注:使用https://github.com/easzlab/kubeasz创建的k8s,其密钥等默认位置为/etc/kubernetes/ssl

二、更改集群ads配置和用户上下文环境

## 为ads用户项设置基础认证选项
kubectl config set-credentials ads --client-certificate=/etc/kubernetes/ssl/ads.crt --client-key=/etc/kubernetes/ssl/ads.key --embed-certs=true
## 设置上下文
kubectl config set-context ads --cluster=ads-cluster --user=ads --namespace=data

三、编辑以下文件进行授权

################## cat ads.yaml 
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:namespace: dataname: data
rules:
- apiGroups: ["*"]resources: ["*"]verbs: ["*"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: datanamespace: data
subjects:
- kind: Username: adsapiGroup: rbac.authorization.k8s.io
roleRef:kind: Rolename: dataapiGroup: rbac.authorization.k8s.io

执行 kubectl apply -f  ads.yaml 

四、导出 ads文件的config配置文件

################# cat ads.sh 
server=https://10.2.33.80:6443
namespace=data
cluster_ca=$(cat /etc/kubernetes/ssl/ca.pem |base64 -w 0)
user_ca=$(cat /etc/kubernetes/ssl/ads.crt | base64 -w 0)
token=$(cat /etc/kubernetes/ssl/ads.key | base64 -w 0)echo "apiVersion: v1
kind: Config
clusters:- name: ads-clustercluster:certificate-authority-data: ${cluster_ca}server: ${server}
contexts:- name: adscontext:cluster: ads-clusternamespace: ${namespace}user: ads
current-context: ads
users:- name: adsuser:client-certificate-data: ${user_ca}client-key-data: ${token}
"> config

注:server为k8s的地址,可以从 ~/.kube/config 里查看

输出为 config文件

五、传输配置文件至ads系统用户主目录的kube下

/home/ads/.kube/

六、给这个用户配置多个namespace权限

1、需要为ads用户配置第二个ns的上下文,为确保简单将--cluster设置成一个

例如:为ads用户配置第二ns(monitor)权限

kubectl config set-context ads --cluster=ads-cluster --user=ads --namespace=monitor

2、编辑执行步骤三中的配置文件并执行赋权

####################### cat ads-monitor.yaml 
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:namespace: monitorname: monitor
rules:
- apiGroups: ["*"]resources: ["*"]verbs: ["*"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: monitornamespace: monitor
subjects:
- kind: Username: adsapiGroup: rbac.authorization.k8s.io
roleRef:kind: Rolename: monitorapiGroup: rbac.authorization.k8s.io#####执行赋权
######kubectl apply -f ads-monitor.yaml

3、在ads的.kube下的config文件中添加monitor这个namespace名称即可

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/69344.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20、stm32使用FMC驱动SDRAM(IS42S32800G-6BLI)

本文将使用安富莱的STM32H743XIH板子驱动SDRAM 引脚连接情况 一、CubeMx配置工程 1、开启调试口 2、开启外部高速时钟 配置时钟树 3、开启串口1 4、配置MPU 按照安富莱的例程配置: /* ********************************************************************…

c语言每日一练(8)

前言:每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情…

定义行业新标准?谷歌:折叠屏手机可承受20万次折叠

根据Patreon账户上的消息,Android专家Mishaal Rahman透露,谷歌计划推出新的硬件质量标准,以满足可折叠手机市场的需求。Android原始设备制造商(OEM)将需要完成谷歌提供的问卷调查,并提交样品设备进行严格审…

图像去雨、去雪、去雾论文学习记录

All_in_One_Bad_Weather_Removal_Using_Architectural_Search 这篇论文发表于CVPR2020,提出一种可以应对多种恶劣天气的去噪模型,可以同时进行去雨、去雪、去雾操作。但该部分代码似乎没有开源。 提出的问题: 当下的模型只能针对一种恶劣天气…

DIP: NAS(Neural Architecture Search)论文阅读与总结(双份快乐)

文章地址: NAS-DIP: Learning Deep Image Prior with Neural Architecture SearchNeural Architecture Search for Deep Image Prior 参考博客:https://zhuanlan.zhihu.com/p/599390720 文章目录 NAS-DIP: Learning Deep Image Prior with Neural Architecture Search1. 方法…

【开发笔记】在Python中调用Docker,并运行SDK任务

目录 1 背景2 环境准备3 实现流程3.1 连接远程Docker3.1 创建容器3.2 解压SDK3.3 挂载容器卷3.4 运行任务3.5 判断任务状态3.6 容器的停止与销毁 4 可能遇到的问题 1 背景 使用Python,在远程Docker中创建一个容器,并在该容器中运行SDK任务 2 环境准备 …

Python中使用隧道爬虫ip提升数据爬取效率

作为专业爬虫程序员,我们经常面临需要爬取大量数据的任务。然而,有些网站可能会对频繁的请求进行限制,这就需要我们使用隧道爬虫ip来绕过这些限制,提高数据爬取效率。本文将分享如何在Python中使用隧道爬虫ip实现API请求与响应的技…

Oracle和MySQL有哪些区别?从基本特性、技术选型、字段类型、事务、语句等角度详细对比Oracle和MySQL

导航: 【Java笔记踩坑汇总】Java基础进阶JavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线MySQL高级篇设计模式面试题汇总源码_vincewm的博客-CSDN博客 目录 一、基本区别 1.1 基本特性 1.2 Oracle和MySQL如何做技术选型? 1.3 RDBM…

MQTT协议--技术文档--搭建mqtt服务器--《EMQX单体服务器部署》

产品概览 | EMQX 5.1 文档 什么是EMQX? EMQX 是一款开源 (opens new window)的大规模分布式 MQTT 消息服务器,功能丰富,专为物联网和实时通信应用而设计。EMQX 5.0 单集群支持 MQTT 并发连接数高达 1 亿条,单服务器的传输与处理…

读书笔记 |【项目思维与管理】➾ 顺势而动

读书笔记 |【项目思维与管理】➾ 顺势而动 一、企业步入“终结者时代”二、过去成功的经验也许是最可怕的三、做好非重复性的事四、适应客户是出发点五、向知识型企业转变六、速度是决胜条件 💖The Begin💖点点关注,收藏不迷路💖 …

React 之 Suspense和lazy

一. Suspense 参考链接&#xff1a;https://react.docschina.org/reference/react/Suspense suspense&#xff1a;n. 焦虑、悬念 <Suspense> 允许你显示一个退路方案&#xff08;fallback&#xff09;直到它的所有子组件完成加载。 <Suspense fallback{<Loadin…

在Centos环境中搭建Nginx环境

一、Nginx概念简介 Nginx是一个轻量级的高性能HTTP反向代理服务器&#xff0c;同时它也是一个通用类型的代理服务器&#xff0c;支持绝大部分协议&#xff0c;如TCP、UDP、SMTP、HTTPS等。 Nginx与redis相同&#xff0c;都是基于多路复用模型构建出的产物&#xff0c;因此它与R…