【Kubernetes运维篇】RBAC之创建集群用户管理K8S

news2024/11/16 18:26:42

文章目录

    • 一、创建zhangsan集群用户赋予uat名称空间管理员权限
    • 二、创建lisi集群用户赋予查看所有名称Pod权限

需求:公司新入职两位运维同事,分别是zhangsan、lisi,刚入职肯定不能给K8S管理员权限,所以需要创建两个系统账号,分别对应不同的权限:

  • zhangsan用户:对uat名称空间拥有管理员权限
  • lisi用户:对所有命名空间拥有查看Pod的权限

一、创建zhangsan集群用户赋予uat名称空间管理员权限

第一步:生成一个私钥

cd /etc/kubernetes/pki/
(umask 077; openssl genrsa -out zhangsan.key 2048) 

第二步:生成一个证书请求

openssl req -new -key zhangsan.key -out zhangsan.csr -subj "/CN=zhangsan"

第三步:生产一个证书

openssl x509 -req -in zhangsan.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out zhangsan.crt -days 3650

第四步:将zhangsan用户加入集群用户中,用来认证apiserver的连接

kubectl config set-credentials zhangsan --client-certificate=./zhangsan.crt --client-key=./zhangsan.key --embed-certs=true

验证:

kubectl config view

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rWU4RgDj-1689421099456)(D:\MD归档文档\IMG\image-20230715184722464.png)]

第五步:添加zhagnsan用户上下文

kubectl config set-context zhangsan@kubernetes --cluster=kubernetes --user=zhangsan

验证:

kubectl config view

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HPE4Bfwu-1689421099457)(D:\MD归档文档\IMG\image-20230715185003530.png)]

第六步:切换到zhangsan用户,默认没有任何权限

kubectl config use-context zhangsan@kubernetes

可以切换后,先切换回来管理用户

kubectl config use-context kubernetes-admin@kubernetes

第七步:创建uat名称空间 绑定zhangsan用户在uat名称空间拥有管理员权限

kubectl create namespace uat
kubectl create rolebinding zhangsan -n uat --clusterrole=cluster-admin --user=zhangsan

第八步:切换zhangsan用户,测试是否有权限

kubectl config use-context zhangsan@kubernetes
kubectl get pods -n uat

第九步:在Linux中添加一个zhagnsan系统用户,并赋予密码

useradd zhangsan
passwd zhangsan

第十步:将/root/.kube/目录复制到zhangsan用户家目录,并赋权

cp -rp /root/.kube /home/zhangsan
chown -R  zhangsan:zhangsan /home/zhangsan

第十一步:切换zhangsan用户修改/home/zhangsan/.kube/config只保留张三用户信息

su - zhangsan
vim .kube/config

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fSKFtQvY-1689421099458)(D:\MD归档文档\IMG\image-20230715191343109.png)]

测试使用zhangsan用户访问集群

kubectl get pods -n uat

OK,测试没问题后就可以吧Linux的zhangsan系统用户提交给新来的运维同事等,让新来的同事只有在uat命名空间操作的权限。

二、创建lisi集群用户赋予查看所有名称Pod权限

第一步:生成一个私钥

cd /etc/kubernetes/pki/
(umask 077; openssl genrsa -out lisi.key 2048) 

第二步:生成一个证书请求

openssl req -new -key lisi.key -out lisi.csr -subj "/CN=lisi"

第三步:生产一个证书

openssl x509 -req -in lisi.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out lisi.crt -days 3650

第四步:将lisi用户加入集群用户中,用来认证apiserver的连接

kubectl config set-credentials lisi --client-certificate=./lisi.crt --client-key=./lisi.key --embed-certs=true

验证:

kubectl config view

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ptqlJ7Yy-1689421099458)(D:\MD归档文档\IMG\image-20230715191959112.png)]

第五步:添加lisi用户上下文

kubectl config set-context lisi@kubernetes --cluster=kubernetes --user=lisi

验证:

kubectl config view

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xfKLJPus-1689421099459)(D:\MD归档文档\IMG\image-20230715192102269.png)]

第六步:切换到lisi用户,默认没有任何权限

kubectl config use-context lisi@kubernetes

可以切换后,先切换回来管理用户

kubectl config use-context kubernetes-admin@kubernetes

第七步:创建clusterrole赋予查看Pod的权限,因为是查看所有命名空间Pod,所以这里使用clusterrole

cat clusterrole.yaml 
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: clusterrole-lisi
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "watch" ,"list"]
kubectl apply -f clusterrole.yaml

第八步:创建clusterrolebinding绑定lisi用户

kubectl create clusterrolebinding  lisi --clusterrole=clusterrole-lisi --user=lisi

第九步:切换lisi用户测试权限

kubectl config use-context lisi@kubernetes
kubectl get pods

第十步:在Linux中添加一个lisi系统用户,并赋予密码

useradd lisi
passwd lisi

第十步:将/root/.kube/目录复制到lisi用户家目录,并赋权

cp -rp /root/.kube /home/lisi
chown -R  lisi:lisi /home/lisi

第十一步:切换zhangsan用户修改/home/lisi/.kube/config只保留张三用户信息

su - lisi
vim .kube/config

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DTXWER3n-1689421099459)(D:\MD归档文档\IMG\image-20230715193213838.png)]

测试使用lisi用户访问集群

kubectl get pods

OK,至此结束!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【电路原理学习笔记】第3章:欧姆定律:3.2 电流的计算

第3章:欧姆定律 3.2 电流的计算 电流相关欧姆定律公式: I V R I\frac{V}{R} IRV​ 【例3-3】图3-6所示电路中有多少安培的电流? 【解】 I V R 100 V 220 Ω 0.455 A I\frac{V}{R}\frac{100\rm V}{220\rm Ω}0.455\rm A IRV​220Ω100V…

常用API学习02(Java)

Object 在java中,Object是类层次中的根类&#xff0c;即Object是所有类的父类-任何类都是 object的子类。任何一个类的对象都可以使用object来声明。 类<?> getClass() 返回此object的运行 int hashCode() 返回对象的哈希码 protected Object clone() 创…

Day53| 1143.最长公共子序列、1035.不相交的线 、 53. 最大子序和 动态规划

1143.最长公共子序列 1.题目&#xff1a; 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &#xff0c;返回 0 。 一个字符串的 子序列 是指这样一个新的字符串&#xff1a;它是由原字符串在不改变字符的相对顺…

SEED实验复现

SEED 项目由雪城大学教授杜文亮于 2002 年启动雪城大学。它由美国总共1万美元资助 美国国家科学基金会。现在&#xff0c;SEED 实验室正在被超过 全球数千个研究所。SEED 代表 &#xff08;SEcurity EDucaton&#xff09;。 https://github.com/seed-labs/seed-labs 该项目使用…

深度学习实战42-基于大模型开发MathGPT的原理介绍,让数学问题智能解答变为可能

大家好,我是微学AI,今天给大家介绍一下深度学习实战42-基于大模型开发MathGPT的原理介绍,让数学问题智能解答变为可能。在去年ChatGPT的发布后,各种国内外的大语言模型层出不穷涌现,但是大家都知道现在的模型的诟病的数学能力不足,就算是简单的数学题都可能算错,今天我就…

spring boot面向切面编程aop

一、什么是AOP AOP&#xff0c;Aspect Oriented Programming&#xff0c;面向切面编程 举个例子来理解 如果我们的业务需要额外做三件事情&#xff0c;判断是否已经登录&#xff0c;记录日志&#xff0c;统计业务执行时长 传统的做法是这样子的&#xff1a; 而apo的实现是这…

vue2的数据数据双向绑定

遍历data里面的属性&#xff0c;通过Object.defineProperty的set方法监听属性值的变化&#xff0c;最后通知视图更新 先问自己两个问题&#xff1a; 1.app.message修改数据的时候&#xff0c;Vue内部是如何监听message数据发生改变的 使用Object.defineProperty ->监听对…

概率论的学习和整理17:EXCEL里直接对应的分布公式计算概率(未完成)

1EXCEL计算这些特殊分布的方差 1.1 用原始的概率&#xff0c;期望和方差的方法 虽然计算概率&#xff0c;需要用对应分布的公式P(xn) 想了解的随机变量是总次数n&#xff0c;需要对应几何分布&#xff0c;负二项分布P(xk) 想了解的随机变量是成功次数k&#xff0c;需要对应超几…

算法竞赛,机器学习,深度学习ai学习方向如何规划,搭建环境等答疑

目录 1了解人工智能的背景知识 2 补充数学或编程知识 3 熟悉机器学习工具库 4 系统的学习人工智能 5 动手去做一些AI应用 1了解人工智能的背景知识 本文可以让你避免踩坑走弯路&#xff0c;一些虽然存在但是在研究或者工业上不常用的知识&#xff0c;为自己腾出更多的时间…

Ubuntu软件包安装失败:代码 bionic 和 focal的区别

问题 我在Ubuntu上使用apt安装软件时总是报一些错误&#xff0c;不是版本不对&#xff0c;就是依赖关系不对。尝试了各种方法&#xff0c;突然想到是不是软件源有问题。 查看/etc/apt/sources.list文件&#xff0c;发现使用了阿里云的软件源&#xff1a; deb http://mirrors…

FreeRTOS实时操作系统(十六)内存管理

系列文章 FreeRTOS实时操作系统&#xff08;一&#xff09;RTOS的基本概念 FreeRTOS实时操作系统&#xff08;二&#xff09;任务创建与任务删除&#xff08;HAL库&#xff09; FreeRTOS实时操作系统&#xff08;三&#xff09;任务挂起与恢复 FreeRTOS实时操作系统&#x…

Android调用google原生裁剪,兼容三方相册裁剪功能

Android调用google原生裁剪&#xff0c;兼容三方相册裁剪功能 效果图实现功能编写CropImage类继承 ActivityResultContract调用 效果图 实现功能 本篇文章裁剪功能实现兼容Android6&#xff0c;解决部分google手机&#xff08;有部分Android10的Google手机无法使用google自带裁…

“遇见0和1”小程序正式开源

开源地址 https://gitee.com/lingstudy/meet0and1-applets-share 纯云开发&#xff1a;微信小程序 —“遇见0和1”开源发布 关于小程序 小程序前端使用 ColorUI 组件库&#xff0c;并且参考了大佬“爱敲代码的猫” 的开源项目 WeHalo 的页面设计&#xff0c;后端使用小程序纯云…

stm32读写nand flash

文章目录 1.简介2.频率设置3.FSMC参数设置4.修改宏定义 NAND_DEVICE5.程序测试5.1.简单测试5.2.擦除、写入、读取测试 注意 1.简介 目前我在使用stm32f407ZGT6来读写三星的nand flash【K9F1G08U0E】。 板子我是在这里买的 【STM32F407ZGT6最小系统板/核心板/转接板/开发板/加1…

Python应用实例(二)数据可视化(一)

数据可视化&#xff08;一&#xff09; 1.安装Matplotlib2.绘制简单的折线图2.1 修改标签文字和线条粗细2.2 矫正图形2.3 使用内置样式2.4 使用scatter()绘制散点图并设置样式2.5 使用scatter()绘制一系列点2.6 自动计算数据2.7 自定义颜色2.8 使用颜色映射2.9 自动保存图表 数…

QT实现雷达扫描

参考链接&#xff1a;https://www.jb51.net/article/279998.htm 在此基础上做了优化。 效果图&#xff1a; 鼠标左键点击显示当前点相对于圆心的距离和方位 // 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPainter> #include <Q…

Java并发编程(11) —— CountDownLatch原理详解

一、CountDownLatch介绍 在日常开发中经常会遇到需要在主线程中开启多个线程去并行执行任务&#xff0c;并且主线程需要等待所有子线程执行完毕后再进行汇总的场景。在 CountDownLatch 出现之前一般都使用线程的join()方法来实现这一点&#xff0c;但是 join 方法不够灵活&…

jq实现网站-点击标签,添加到一个盒子中,再次点击去掉该标签

实现效果&#xff1a; 代码逻辑&#xff1a; 首先使用hasClass()方法判断点击的标签是否已经存在于盒子中。如果标签已经存在于盒子中&#xff0c;则使用removeClass()方法移除标签的’active’类名&#xff0c;并使用filter()方法找到盒子中与点击的标签文本相同的元素&#…

CAN总线(三)CAN总线链路层的三个标准

1、高速CAN总线 ISO 11898-2中定义了通信速率为125Kbps~1Mbps的高速闭环CAN通信标准,当通信总线长度≤40米,最大通信速率可达到1Mbps,高速闭环CAN(高速CAN)通信如下图所示: 1.1、电气特性 高速CAN总线上为显性电平(逻辑0)时,CAN_H为3.5V、CAN_L为1.5V,此时电压差是…

Qt应用开发——下载安装和HelloWorld

目录 1、下载和安装 2、HelloWorld 1、下载和安装 工欲善其事&#xff0c;必先利其器。第一步环境安装好是必要的过程。Qt 在23年4月份已经更新到了6.5.0&#xff0c;相对于其他的工具&#xff0c;Qt不断在维护升级这一点就非常的友好&#xff0c;这里对版本的迭代更新内容不…