K8S相关小技巧《四》
需求:
我作为Kubernetes的集群管理员,前一段时间有收到一个需求,需要我创建一个受限访问的用户kubeconfig,提供给跳板机的某用户。
该kubeconfig需要在非Kubernetes节点的某跳板机上由指定的非root用户使用,该用户仅能访问kubernetes集群中的某一个namespace下的资源,仅对该namespace下的资源有完整的权限。
实现:
前置条件:登录到kubernetes的主节点上,在主节点上做以下步骤。
第一步,准备kubeconfig的模板文件命名为"config-template",以下有一些占位符等,请注意:
apiVersion: v1
clusters:
- cluster:certificate-authority-data: LS0tLS1CRUdJTiBDRVJ....server: http://<your-addr-or-delegate-ip>:6443name: kubernetes
contexts:
- context:cluster: kubernetesuser: $USERnamespace: $NAMESPACEname: $USER@kubernetes
current-context: $USER@kubernetes
kind: Config
preferences: {}
users:
- name: $USERuser:client-certificate-data: $USER_CERT client-key-data: $USER_KEY
注意:关于certificate-authority-data这部分,此处为集群使用的CA证书,不用做修改,保持不变。
第二步,准备用于限制权限的RBAC模板文件,命名为"rb-template",同样有占位符,请注意:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:name: $USER_NAME-adminnamespace: $NAMESPACE
subjects:- kind: Username: $USER_NAMEapiGroup: rbac.authorization.k8s.io
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: admin
第三步,准备用于生成kubeconfig的脚本,该脚本会使用openssl结合主节点的CA证书和key生成签发kubeconfig所需的certificate和key,替换第一步中的占位符等,请仔细阅读后,用root权限执行:
#! /bin/bash
USER_NAME=<your_jumpserver_username> #请手动更改此处
NAMESPACE=<your_namespace> #请手动更改此处openssl genrsa -out $USER_NAME.key 2048 &&
openssl req -new -key $USER_NAME.key -out $USER_NAME.csr -subj "/CN=$USER_NAME" &&
openssl x509 -req -in $USER_NAME.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out $USER_NAME.crt -days 3650yes | cp config-template config-$USER_NAME
yes | cp rb-template rb-$USER_NAME.yaml
USER_CERT=`openssl base64 -A -in $USER_NAME.crt`
USER_KEY=`openssl base64 -A -in $USER_NAME.key`#USER_CERT=$(echo $USER_CERT)
#USER_KEY=$(echo $USER_KEY)echo $USER_CERT | base64 -d
echo $USER_KEY | base64 -dsed -i "s/\$USER_CERT/$USER_CERT/g" config-$USER_NAME
sed -i "s/\$USER_KEY/$USER_KEY/g" config-$USER_NAME
sed -i "s/\$USER/$USER_NAME/g" config-$USER_NAME
sed -i "s/\$NAMESPACE/$NAMESPACE/g" config-$USER_NAME
sed -i "s/\$USER/$USER_NAME/g" rb-$USER_NAME.yaml
sed -i "s/\$NAMESPACE/$NAMESPACE/g" rb-$USER_NAME.yaml
第四步,经过以上三步,会得到rb-xxx.yaml和config-xxx两个文件,执行以下命令,用于添加rolebinding的权限:
kubectl apply -f rb-xxx.yaml
第五步,将config-xxx的文件拷贝到跳板机的指定用户的家目录下,并放在.kube目录下改名为config,以上四步均在kubernetes的主节点上执行,该步骤需要在跳板机执行,举例如下:
mkdir -p /home/$USER_NAME/.kube
cp config-$USER_NAME /home/$USER_NAME/.kube/config
上一篇:K8S相关小技巧《三》
下一篇:K8S相关小技巧《五》
相关文章:
K8S相关小技巧《四》
需求: 我作为Kubernetes的集群管理员,前一段时间有收到一个需求,需要我创建一个受限访问的用户kubeconfig,提供给跳板机的某用户。 该kubeconfig需要在非Kubernetes节点的某跳板机上由指定的非root用户使用,该用户仅能…...
Delphi 报错 Type androidx.collection.ArraySet is defined multiple times
Delphi 11 建立一个新的 Multi-Device Application 编译成app的时候报错 报错信息 [PAClient Error] Error: E7688 Unable to execute "E:\Program\Java\jdk1.8.0_301\bin\java.exe" -cp "e:\program\embarcadero\studio\22.0\bin\Android\r8-3.3.28.jar"…...
Post请求中文乱码问题
url*************************************这里填写自己请求的网址 response requests.post(url, datajson.dumps(body),headersheader) r response.text print 打印乱码长这样: data:{“code”:0,“data”:{“end”:false,“message”:“{\n “ˆ—¡A”: [“…...
LeetCode -- 79.单词搜索
1. 问题描述 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水…...
单元测试、集成测试、系统测试有什么不同?
单元测试、集成测试和系统测试是软件测试开发中不可或缺的部分。 单元测试: 范围:单元测试是对软件中最小的可测试单元的测试,通常是函数、方法或类。 目的:它的目标是验证每个单独的单元是否按照预期工作,以增加代码…...
数据迁移DTS | 云上MySQL 数据库迁移至达梦数据库
引入 云上 MySQL 数据库 —> 向达梦国产化数据库迁移 下载&安装 达梦客户端工具 DM->可参考之前国产化专栏达梦文章 创建模式 在客户端分别依次执行以下命令脚本(这里没有通过客户端管理工具去创建达梦数据库的模式,当然也可以通过图形化界…...
Linux进程管理:(二)进程调度原语
文章说明: Linux内核版本:5.0 架构:ARM64 参考资料及图片来源:《奔跑吧Linux内核》 Linux 5.0内核源码注释仓库地址: zhangzihengya/LinuxSourceCode_v5.0_study (github.com) 进程调度的概念比较简单,…...
Compose 介绍
Compose 介绍 Android Compose 是 Google 官方推出的用于构建原生 Android UI 的现代工具包。它使用 Kotlin 语言编写,可以帮助开发人员更轻松、更快速地创建精美、响应式和高性能的 Android 应用。 Compose 的优势 声明式 UI: Compose 使用声明式 UI…...
5分钟搞定Python中函数的参数
函数的灵活性非常高,除了常规定义的位置参数以外,还支持默认参数、关键字参数、以及可变参数 ... 这样以来,不但能应对各种复杂的情况,甚至还可以简化调用者的代码。 位置参数 在调用函数时,一般会根据函数定义的参数…...
Gitlab: 私有化部署
目录 1. 说明 2. 资源要求 3. 安装 4. 配置实践 4.1 服务器 4.2 人员与项目 4.2 部署准备 4.2.1 访问变量及用户账号设置 4.2.2 Runner设置 4.2.3 要点 5. 应用项目 CI/CD 6. 参考 1. 说明 gitlab是一个强大且免费的代码管理/部署工具,能统一集成代码仓…...
深入理解Linux线程(LWP):概念、结构与实现机制(2)
🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:会いたい—Naomile 1:12━━━━━━️💟──────── 4:59 🔄 ◀️ ⏸ ▶️ ☰ &a…...
VBS脚本搞定,快速批量提取一堆Excel文件中的数据
1.需求诞生 小王就职于一家国有大型企业,工作业务十分繁忙,在处理企业某业务数据时,需要从上千个Excel文件中提取某一单元格位置的数据,并整理到另一个Excel文件。要说是这样的Excel文件仅有几个或者十几个也还好,手动…...
大数据分析案例-基于SVM支持向量机算法构建手机价格分类预测模型
🤵♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞Ǵ…...
WPF 滑动条样式
效果图: 浅色: 深色: 滑动条部分代码: <Style x:Key"RepeatButtonTransparent" TargetType"{x:Type RepeatButton}"><Setter Property"OverridesDefaultStyle" Value"true"/&g…...
论文设计任务书学习文档|基于Web的个性化简历职位推荐系统的设计与实现
文章目录 论文(设计)题目:基于Web的个性化简历职位推荐系统的设计与实现1、论文(设计)的主要任务及目标2、论文(设计)的主要内容3、论文(设计)的基本要求4、进度安排论文(设计)题目:基于Web的个性化简历职位推荐系统的设计与实现 1、论文(设计)的主要任务及目标…...
Win11系统安装安卓子系统教程
随着Win11系统的不断普及,以及硬件设备的更新换代,我相信很多同学都已经更新并使用到了最新的Win11系统。那么,Win11系统最受期待的功能“Windows Subsystem for Android”(简称WSA),即《安卓子系统》。他可…...
Python实现双向链表:从基础到应用
一、引言 双向链表是一种比单向链表更复杂的数据结构,每个节点除了包含数据和指向下一个节点的指针外,还包含一个指向前一个节点的指针。这种结构使得我们可以从链表的任何节点开始,向前或向后遍历链表。 目录 一、引言 二、节点定义 三、…...
c# 读取DataGridView中的数据
/// <summary> /// 读取DataGridView中的数据 /// </summary> /// <param name"dgv">DataGridView对象</param> /// <returns>DataTable对象</returns> private DataTable GetDgvToTab…...
Stable Diffusion中的Clip模型
基础介绍 Stable Diffusion 是一个文本到图像的生成模型,它能够根据用户输入的文本提示(prompt)生成相应的图像。在这个模型中,CLIP(Contrastive Language-Image Pre-training)模型扮演了一个关键的角色&a…...
Python批量提取文件夹中图片的名称及路径到指定的.txt文件中
目录 一、代码二、提取效果 一、代码 import os# 定义要保存的文件名 file_name "TestImage/Image_Visible_Gray.txt"# 读取文件夹路径 folder_path "TestImage/Image_Visible_Gray"# 遍历文件夹中的所有文件 with open(file_name, "w") as f…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道
文/法律实务观察组 在债务重组领域,专业机构的核心价值不仅在于减轻债务数字,更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明,合法债务优化需同步实现三重平衡: 法律刚性(债…...
