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

脚本一键生成管理下游k8s集群的kubeconfig

一、场景

1.1 需要管理下游k8s集群的场景。

1.2 不希望使用默认的cluster-admin权限的config.

二、脚本

**重点参数:

2.1 配置变量。
        1、有单独namespace的权限和集群只读权限。

        2、自签名的CA证书位置要正确。

2.2 如果配置错误,需要重新生成

进入集群删除CertificateSigningRequest对应的请求CSR

2.3 修改其中的Clusterrole可以修改权限。

2.4 注意每个集群的名称和用户名不能一致。

#!/bin/bash# 配置变量
USERNAME="kody"
CLUSTER_NAME="rke2-01"
NAMESPACE="default"
PERMISSION_LEVEL="cluster-readonly"  # 可选 namespace 或 cluster-readonly
API_SERVER="https://172.31.0.32:6443"  # 指定API服务器地址
CA_CERT_PATH="/var/lib/rancher/rke2/server/tls/server-ca.crt"  # 指定CA证书路径# 生成证书
openssl genrsa -out ${USERNAME}.key 2048
openssl req -new -key ${USERNAME}.key -out ${USERNAME}.csr -subj "/CN=${USERNAME}/O=my-group"# 提交并批准 CSR
cat <<EOF | kubectl apply -f -
apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:name: ${USERNAME}-csr
spec:request: $(cat ${USERNAME}.csr | base64 | tr -d '\n')signerName: kubernetes.io/kube-apiserver-clientexpirationSeconds: 86400usages:- client auth
EOF
kubectl certificate approve ${USERNAME}-csr
kubectl get csr ${USERNAME}-csr -o jsonpath='{.status.certificate}' | base64 -d > ${USERNAME}.crt# 创建 RBAC 权限
if [ "$PERMISSION_LEVEL" == "namespace" ]; thencat <<EOF | kubectl apply -f -
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:namespace: ${NAMESPACE}name: ${USERNAME}-role
rules:
- apiGroups: ["", "apps", "batch"]resources: ["pods", "deployments", "jobs", "services"]verbs: ["get", "list", "watch", "create", "update", "delete"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:name: ${USERNAME}-role-bindingnamespace: ${NAMESPACE}
subjects:
- kind: Username: ${USERNAME}apiGroup: rbac.authorization.k8s.io
roleRef:kind: Rolename: ${USERNAME}-roleapiGroup: rbac.authorization.k8s.io
EOF
elsecat <<EOF | kubectl apply -f -
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:name: ${USERNAME}-readonly
rules:
- apiGroups: ["*"]resources: ["*"]verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: ${USERNAME}-readonly-binding
subjects:
- kind: Username: ${USERNAME}apiGroup: rbac.authorization.k8s.io
roleRef:kind: ClusterRolename: ${USERNAME}-readonlyapiGroup: rbac.authorization.k8s.io
EOF
fi# 生成 kubeconfig
kubectl config set-cluster ${CLUSTER_NAME} \--server=${API_SERVER} \--certificate-authority=${CA_CERT_PATH} \--embed-certs=true \--kubeconfig=${USERNAME}.kubeconfigkubectl config set-credentials ${USERNAME} \--client-certificate=${USERNAME}.crt \--client-key=${USERNAME}.key \--embed-certs=true \--kubeconfig=${USERNAME}.kubeconfigkubectl config set-context ${USERNAME}-context \--cluster=${CLUSTER_NAME} \--user=${USERNAME} \--namespace=${NAMESPACE} \--kubeconfig=${USERNAME}.kubeconfigkubectl config use-context ${USERNAME}-context \--kubeconfig=${USERNAME}.kubeconfigecho "完成!用户 ${USERNAME} 的 kubeconfig 文件: ${USERNAME}.kubeconfig"

三、测试

kubectl --kubeconfig=<生成的config> get pods

四、合并Kubeconfig文件

生成了的下游config使用下面的命名合并。

KUBECONFIG=~/.kube/config:/path/to/rke2-01.config:/path/to/rke2-02.config:/path/to/rke2-03.config kubectl config view --merge --flatten > ~/.kube/merged-config

例子:

cat ~/.kube/merged-config

五、切换

六、helm部署

helm install kafka appstore/kafka --set persistence.storageClass=longhorn --set persistence.size=3Gi  --namespace=kafka --set zookeeper.enabled=true --version=23.0.7 --set kraft.enabled=false --create-namespace --kube-context=kody-rke2-03-context 

相关文章:

脚本一键生成管理下游k8s集群的kubeconfig

一、场景 1.1 需要管理下游k8s集群的场景。 1.2 不希望使用默认的cluster-admin权限的config. 二、脚本 **重点参数&#xff1a; 2.1 配置变量。 1、有单独namespace的权限和集群只读权限。 2、自签名的CA证书位置要正确。 2.2 如果配置错误&#xff0c;需要重新…...

数据库系统概念第六版记录 三

外码约束&#xff08;Foreign Key Constraint&#xff09; 外码&#xff08;Foreign Key, FK&#xff09;是关系数据库中的一个约束&#xff0c;它用于保证表之间的引用完整性。外码的值必须&#xff1a; 要么存在于被引用表的主键列中&#xff0c;要么为空&#xff08;NULL&…...

YOLOv11-ultralytics-8.3.67部分代码阅读笔记-files.py

files.py ultralytics\utils\files.py 目录 files.py 1.所需的库和模块 2.class WorkingDirectory(contextlib.ContextDecorator): 3.def spaces_in_path(path): 4.def increment_path(path, exist_okFalse, sep"", mkdirFalse): 5.def file_age(path__fi…...

微信小程序案例1——制作猫眼电影底部标签导航栏

文章目录 一、项目步骤1 新建一个无AppID的movie项目2将准备好的底部标签导航图标拷贝到movie项目下面(将图标文件夹image放到项目文件夹里&#xff09;3 打开App.json配置文件&#xff0c;在pages数组里添加4个页面路径:电影“pages/movie/movie”、影院“pages/cinema/cinema…...

【大数据技术】搭建完全分布式高可用大数据集群(Kafka)

搭建完全分布式高可用大数据集群(Kafka) kafka_2.13-3.9.0.tgz注:请在阅读本篇文章前,将以上资源下载下来。 写在前面 本文主要介绍搭建完全分布式高可用集群 Kafka 的详细步骤。 注意: 统一约定将软件安装包存放于虚拟机的/software目录下,软件安装至/opt目录下。 安…...

【服务器知识】如何在linux系统上搭建一个nfs

文章目录 NFS网络系统搭建**1. 准备工作****2. 服务器端配置****(1) 安装 NFS 服务****(2) 创建共享目录****(3) 配置共享规则****(4) 生效配置并启动服务****(5) 防火墙配置** **3. 客户端配置****(1) 安装 NFS 客户端工具****(2) 创建本地挂载点****(3) 挂载 NFS 共享目录***…...

图片画质增强:轻松提升画质

前言&#xff1a; 今天给大家推荐一款非常实用的图片画质增强软件&#xff0c;它无需联网即可使用&#xff0c;完全离线操作&#xff0c;这款软件基于先进的深度学习技术&#xff0c;能够对模糊图片进行强大的高清处理&#xff0c;效果令人惊艳。 图片画质增强&#xff1a;一…...

vscode快速接入deepseek 实践操作

背景说明 在deepseek快速火爆的情况下&#xff0c;也想自己体验一把。看看在vscode中集成进来&#xff0c;方便平时的脚本开发。对于年纪大的人还是非常方便的。 操作过程 安装continue 打开vscode进入扩展市场&#xff0c;搜索安装 安装完成就是上面的样子&#xff0c;会…...

mapbox进阶,添加绘图扩展插件,绘制圆形

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️MapboxDraw 绘图控件二、🍀添加绘图扩…...

Cursor 与多语言开发:全栈开发的利器

引言 全栈开发要求开发者跨越前端、后端、数据库甚至数据科学等多个技术领域&#xff0c;而不同技术栈往往需要切换工具和思维方式。Cursor 作为一款 AI 驱动的智能编程助手&#xff0c;凭借其对 20 编程语言 和主流框架的深度支持&#xff0c;正在成为全栈开发的“瑞士军刀”…...

2025 CCF BDCI|“基于TPU平台的OCR模型性能优化”一等奖作品

2024年12月&#xff0c;中国计算机学会在海南博鳌成功举办了第十二届CCF大数据与计算智能大赛&#xff08;简称2024 CCF BDCI&#xff09;。本届比赛的算能赛道吸引了1748名选手报名&#xff0c;经过激烈角逐&#xff0c;北京航空航天大学的“常务副SOTA”团队脱颖而出&#xf…...

FPGA的IP核接口引脚含义-快解

疑问 手册繁琐&#xff0c;怎样快速了解IP核各输入输出接口引脚的含义。 答疑 不慌不慌&#xff0c;手册确实比较详细但繁琐&#xff0c;如何快速知晓该部分信息&#xff0c;涛tao道长给你们说&#xff0c;简单得很&#xff0c;一般新入门的道友有所不知&#xff0c;往往后面…...

数据库高安全—审计追踪:传统审计统一审计

书接上文数据库高安全—角色权限&#xff1a;权限管理&权限检查&#xff0c;从权限管理和权限检查方面解读了高斯数据库的角色权限&#xff0c;本篇将从传统审计和统一审计两方面对高斯数据库的审计追踪技术进行解读。 4 审计追踪 4.1 传统审计 审计内容的记录方式通…...

机器学习 - 需要了解的条件概率、高斯分布、似然函数

似然函数是连接数据与参数的桥梁&#xff0c;通过“数据反推参数”的逆向思维&#xff0c;成为统计推断的核心工具。理解它的关键在于区分“参数固定时数据的概率”与“数据固定时参数的合理性”&#xff0c;这种视角转换是掌握现代统计学和机器学习的基础。 一、在学习似然函…...

Spring Boot Web 入门

目录 Spring Boot Web 是 Spring Boot 框架的一个重要模块&#xff0c;它简化了基于 Spring 的 Web 应用程序的开发过程。以下是一个 Spring Boot Web 项目的入门指南&#xff0c;涵盖了项目创建、代码编写、运行等关键步骤。 1. 项目创建 使用 Spring Initializr 使用 IDE …...

神经网络|(八)概率论基础知识-二项分布及python仿真

【1】引言 前序已经学习了古典概型、条件概率、全概率公式和贝叶斯公式&#xff0c;它们作为基础&#xff0c;解释了事件发生及其概率的对应关系&#xff0c;相关文章链接为&#xff1a; 神经网络|(四)概率论基础知识-古典概型-CSDN博客 神经网络|(五)概率论基础知识-条件概…...

【面试场景】MySQL分布式主键选取

文章目录 一. MySQL的自增主键二. UUID三. 雪花ID(推荐) 我的博客地址 一. MySQL的自增主键 适合单表的情况, 在分布式分库分表下可能会有一些问题 主键冲突问题 在分布式系统中&#xff0c;多个数据库节点独立生成自增主键&#xff0c;很容易出现重复的主键值。例如&#xff…...

执行git stash drop stash@{x} 时出现error: unknown switch `e‘ 的解决方式

原因: 在 PowerShell 或某些 Shell 中&#xff0c;{} 是特殊符号&#xff0c;stash{0} 会被解析成 stash 0&#xff0c;而 后的字符可能被误认为选项&#xff08;如 -e&#xff09;&#xff0c;使 Git 收到意外的 -e 参数&#xff0c;导致报错 unknown switch ‘e’。 解决方…...

链表和 list

一、单链表的模拟实现 1.实现方式 链表的实现方式分为动态实现和静态实现两种。 动态实现是通过 new 申请结点&#xff0c;然后通过 delete 释放结点的形式构造链表。这种实现方式最能体 现链表的特性&#xff1b; 静态实现是利用两个数组配合来模拟链表。一个表示数据域&am…...

windows 蓝牙驱动开发-传输总线驱动程序常见问题

以下是驱动程序开发人员在开发总线驱动程序以支持蓝牙功能时可能会遇到的一些常见问题和方案。 我的串行总线驱动程序遇到了一些错误。 它意味着什么&#xff1f; 代码 10-49&#xff1a;设备管理器生成的错误代码。 代码 51&#xff1a;当串行总线驱动程序具有相关的控制器…...

Kronos时间序列预测模型全攻略:从技术原理到工业实践

Kronos时间序列预测模型全攻略&#xff1a;从技术原理到工业实践 【免费下载链接】Kronos Kronos: A Foundation Model for the Language of Financial Markets 项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos 问题&#xff1a;时间序列预测的行业痛点…...

深入解析FOC控制中的Clark/Park变换及其Matplotlib动态仿真实现

1. 从三相交流电到FOC控制的基础认知 第一次接触电机控制时&#xff0c;看到那些复杂的坐标变换公式确实让人头疼。但后来我发现&#xff0c;理解FOC&#xff08;磁场定向控制&#xff09;的核心&#xff0c;关键在于抓住两个关键点&#xff1a;为什么要做坐标变换和变换后能解…...

LangChain实战:从零构建一个联网搜索增强的RAG问答系统

1. 为什么需要联网搜索增强的RAG系统 传统的RAG&#xff08;检索增强生成&#xff09;系统有个致命伤——它只能回答知识库里已有的内容。想象一下&#xff0c;你去年精心构建了一个旅游推荐系统&#xff0c;但今年新开的网红景点它完全不知道&#xff0c;因为数据没更新。这就…...

避坑指南:解决ROS2 Gazebo仿真中机械臂‘散架’或‘弹飞’问题(附惯性矩阵计算与dynamics参数调整)

ROS2 Gazebo仿真中机械臂物理异常问题深度解析与实战解决方案 当你在Gazebo仿真环境中看到精心设计的机械臂模型像积木一样散落一地&#xff0c;或是突然像火箭般腾空而起时&#xff0c;那种挫败感任何机器人开发者都能感同身受。这类物理异常问题不仅影响开发效率&#xff0c;…...

OpenBot开源代码平台:可视化编程与AI模块开发教程

OpenBot开源代码平台&#xff1a;可视化编程与AI模块开发教程 【免费下载链接】OpenBot OpenBot leverages smartphones as brains for low-cost robots. We have designed a small electric vehicle that costs about $50 and serves as a robot body. Our software stack for…...

LiuJuan Z-Image Generator快速上手:生成图批量后处理(锐化/降噪/色彩校正)集成

LiuJuan Z-Image Generator快速上手&#xff1a;生成图批量后处理&#xff08;锐化/降噪/色彩校正&#xff09;集成 1. 引言&#xff1a;从生成到精修&#xff0c;一步到位 你用过AI生成图片吗&#xff1f;是不是经常遇到这样的问题&#xff1a;好不容易生成了一张构图不错的…...

7个维度解锁洛雪音乐音源:从新手到专家的全方位指南

7个维度解锁洛雪音乐音源&#xff1a;从新手到专家的全方位指南 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 洛雪音乐音源作为GitHub加速计划的重要组成&#xff0c;是一款专注于音乐资源聚合的…...

百川2-13B-Chat惊艳效果展示:同一提示词下Temperature=0.3与0.9输出对比

百川2-13B-Chat惊艳效果展示&#xff1a;同一提示词下Temperature0.3与0.9输出对比 你有没有想过&#xff0c;同一个问题问给同一个AI&#xff0c;为什么每次的回答都不太一样&#xff1f;有时候它像个严谨的学者&#xff0c;回答得一丝不苟&#xff1b;有时候又像个天马行空的…...

Qwen3-VL-4B Pro应用案例:如何用它帮学生解答作业里的图片题?

Qwen3-VL-4B Pro应用案例&#xff1a;如何用它帮学生解答作业里的图片题&#xff1f; 1. 为什么学生需要AI作业助手 每天晚上7点到9点&#xff0c;是家长群最活跃的时间段——无数家长正对着孩子的作业题发愁&#xff0c;尤其是那些包含图表、几何图形或实验示意图的题目。传…...

4步掌握AI图像修复新工具:IOPaint从入门到精通指南

4步掌握AI图像修复新工具&#xff1a;IOPaint从入门到精通指南 【免费下载链接】IOPaint 项目地址: https://gitcode.com/GitHub_Trending/io/IOPaint AI图像修复技术正在改变我们处理数字图像的方式&#xff0c;从简单的水印去除到复杂的老照片修复&#xff0c;都可以…...