K8S Dashboard登录Token过期问题处理
整体思路
用户访问一个页面,在该页面中设置一个超链接,点击跳转至K8S Dashboard;跳转后,使用剪贴板上已复制的Token粘贴到Dashboard页面中的输入框登录即可。
写个定时任务将Token复制到页面上,过期了重新再登录;
如果要对这个页面做权限控制,可考虑借助nginx。
使用nodejs搭建一个web容器用于展示该跳转页面
参考:https://www.jianshu.com/p/15971d243186
创建server.js,定义一个Web服务
vi server.jsvar url = require("url"),fs = require("fs"),http = require("http"),path = require("path");
http.createServer(function (req, res) {var pathname = __dirname + url.parse("/dist"+req.url).pathname;//资源指向dist目录if (path.extname(pathname) == "") {pathname += "/";}if (pathname.charAt(pathname.length - 1) == "/") {pathname += "index.html";}fs.exists(pathname, function (exists) {if (exists) {switch(path.extname(pathname)){case ".html":res.writeHead(200, {"Content-Type": "text/html"});break;default:res.writeHead(200, {"Content-Type": "application/octet-stream"});}fs.readFile(pathname, function (err, data) {res.end(data);});} else {res.writeHead(404, {"Content-Type": "text/html"});res.end("<h1>404 Not Found</h1>");}});
}).listen(3003);
console.log("监听3003端口");
创建Dockerfile
vi Dockerfile# Pull base image
FROM docker.io/node:latest# Expose ports.
EXPOSE 3003# Usage: USER [UID]
USER root# Usage: WORKDIR /path
WORKDIR /http-server# add js
ADD server.js /http-server/RUN mkdir dist# modify conf
ENTRYPOINT ["node","/http-server/server.js"]
创建镜像,并推送致仓库
- docker build -t yourharboraddr/lib/dashboard-token:v0.0.1 .
- docker push yourharboraddr/lib/dashboard-token:v0.0.1
定义Deployment和SVC,部署到kubernetes-dashboard空间,避免其它用户骚操作
vi deployment-token.yamlapiVersion: apps/v1
kind: Deployment
metadata:labels:app: dashboard-tokenname: dashboard-token-developernamespace: kubernetes-dashboard
spec:replicas: 1selector:matchLabels:app: dashboard-tokentemplate:metadata:labels:app: dashboard-tokenspec:containers:- image: yourharboraddr/lib/dashboard-token:v0.0.1imagePullPolicy: IfNotPresentname: dashboard-token-containersports:- containerPort: 3003protocol: TCP
---
apiVersion: v1
kind: Service
metadata:labels:app: dashboard-tokenname: dashboard-token-developer-svcnamespace: kubernetes-dashboard
spec:ports:- port: 3003protocol: TCPtargetPort: 3003nodePort: 3xxxxselector:app: dashboard-tokentype: NodePort
部署 kubectl apply -f deployment-token.yaml
定义一个用于展示跳转按钮的页面模板
自动复制token后跳转至Dashboard,href直接在URL中选择了develop命名空间,该用户没有授权查看命名空间的权限,只能在界面上选择default命名空间,但可以直接用URL中的命名空间跳转至有权限的命名空间develop
vi index.html.templete<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Go to K8S Dashboard!</title>
</head>
<body><input type="text" value="k8stoken" id="token" style="opacity: 0" readonly/><a title='Token will hidding in your clipboard!!!' href="https://yourDashboardIP:yourPort/#/pod?namespace=develop" onclick="javascript:document.getElementById('token').select();document.execCommand('Copy');">Go to K8S Dashboard!</a>
</body>
</html>
定义一个Shell脚本,复制一个index.html
- 获取普通用户的token,将token存入index.html
- 再将index.html复制到pod中
vi getToken4developer.sh
#! /bin/bashexport POD_NAME=$(kubectl get pods --namespace kubernetes-dashboard -l "app=dashboard-token" -o jsonpath="{.items[0].metadata.name}")
export K8S_DEVELOPER_TOKEN=$(kubectl -n develop create token developer)rm -f /root/dashboard/index.html
cp /root/dashboard/index.html.templete /root/dashboard/index.html
#将token添加到index.html中
sed -i 's/k8stoken/'"$K8S_DEVELOPER_TOKEN"'/g' /root/dashboard/index.html
#复制index.html至pod
kubectl cp /root/dashboard/index.html $POD_NAME:/http-server/dist/ --namespace kubernetes-dashboard
定时任务
- Token不是老过期么,在linux上写个cronjob定时将新的token复制到index.html中
- crontab -e
- 每半个小时或者一个小时什么的更新一下,过期前更新一下就行
- */1 * * * bash /root/dashboard/getToken4developer.sh
测试
- 访问该pod的地址:http://yourk8sIP:3xxxx 自动打开index.html
- 点击Go to K8S Dashboard!按钮,跳转至k8s的dashboard中
- 粘贴Token登录即可
相关文章:
K8S Dashboard登录Token过期问题处理
整体思路 用户访问一个页面,在该页面中设置一个超链接,点击跳转至K8S Dashboard;跳转后,使用剪贴板上已复制的Token粘贴到Dashboard页面中的输入框登录即可。 写个定时任务将Token复制到页面上,过期了重新再登…...
x-cmd pkg | trafilatura - 网络爬虫和搜索引擎优化工具
目录 简介首次用户技术特点竞品和相关作品进一步阅读 简介 trafilatura 是一个用于从网页上提取文本的命令行工具和 python 包: 提供网络爬虫、下载、抓取以及提取主要文本、元数据和评论等功能可帮助网站导航和从站点地图和提要中提取链接无需数据库,输出即可转换…...
前端知识点(面试可看) —— JS
摘要 马上就要毕业啦,没有参加2023年的秋招,准备在最近开始找全职或者实习工作,然后也马上过年了,总结和理一下自己的知识要点,参加2024年的春招。 1. JS的执行流程 浏览器的V8引擎收到到执行的JS代码V8结构化这段代…...
CSRF总结
CSRF 文章目录 CSRF漏洞原理漏洞危害漏洞防护CSRF攻击流程CSRF和XSS的区别CSRF漏洞挖掘及利用 CSRF 跨站点请求伪造(CSRF)攻击者会诱导受害者点击事先伪造好的url或者链接,点击后,攻击者就可以盗用你的身份,以你的身份…...
降维算法的简单介绍
降维算法 降维算法: 通过减少数据的维度,如主成分分析和 t-分布邻域嵌入等。 降维通俗的讲,是通过减少数据的维度来处理高维数据的过程。降维算法有助于消除数据中的冗余信息,减少噪声,并提高计算效率。以下是一些常见…...
k8s的声明式资源管理
在k8s当中支持两种声明资源的方式: 1、 yaml格式:主要用于和管理资源对象 2、 json格式:主要用于在API接口之间进行消息传递 声明式管理方法(yaml)文件 1、 适合对资源的修改操作 2、 声明式管理依赖于yaml文件,所有的内容都…...
Git | tag相关命令
语法命令 git tag -h usage: git tag [-a | -s | -u <key-id>] [-f] [-m <msg> | -F <file>]<tagname> [<head>]or: git tag -d <tagname>...or: git tag -l [-n[<num>]] [--contains <commit>] [--no-contains <commit&g…...
【Java期末】学生成绩管理系统
诚接计算机专业编程任务(C语言、C、Python、Java、HTML、JavaScript、Vue等)10/15R,如有需要请私信我,或者加我的企鹅号:1404293476 本文资源下载地址:https://download.csdn.net/download/weixin_47040861/88697244 —————…...
顶顶通呼叫中心中间件通过队列外呼拨打另一个sip并且放音(mod_cti基于FreeSWITCH)
介绍 顶顶通呼叫中心中间件通过队列外呼拨打另一个sip并且放音 一、添加acl 打开ccadmin->点击配置文件->点击acl.conf->在</list>后面添加一条图中的信息->muqi是我自己设置的名字你们可以修改为自己需要的名字->添加好了点击提交XML->在运维调试点…...
SQL Server从0到1——报错注入
报错注入分为三类:隐式转换,和显示转换,declare函数 隐式转换: 原理:将不同数据类型的数据进行转换或对比 select * from test.dbo.users where (select user)>0 #对比 select * from test.dbo.users where ((sel…...
【python高级用法】线程
前言 Python通过标准库的 threading 模块来管理线程。这个模块提供了很多不错的特性,让线程变得无比简单。实际上,线程模块提供了几种同时运行的机制,实现起来非常简单。 线程模块 线程对象Lock对象RLock对象信号对象条件对象事件对象 简单…...
分布式高级知识点
分布式一致性算法: Paxos Paxos 是一种分布式一致性算法,用于在分布式系统中达成共识。它可以保证,即使在存在节点故障的情况下,系统也能就某个值达成一致。 Paxos 算法的基本思想是,首先选出一个协调者(leader)。协调者负责向其他节点发送提案(proposal)。其他节点收…...
Linux 命令之 dpkg 的简单使用
查询已安装的软件包及其依赖关系 dpkg -s name...
Ubuntu20.04服务器使用教程(安装教程、常用命令、故障排查)持续更新中.....
安装教程(系统、NVIDIA驱动、CUDA、CUDNN、Pytorch、Timeshift、ToDesk) 制作U盘启动盘,并安装系统 在MSDN i tell you下载Ubuntu20.04 Desktop 版本,并使用Rufus制作UEFI启动盘,参考UEFI安装Ubuntu使用GPTUEFI模式安…...
访问学者J1签证的申请流程
访问学者J1签证是许多人前往美国进行学术研究和文化交流的重要途径之一。申请J1签证需要经过一系列步骤和程序,让知识人网小编带大家来了解一下申请流程吧。 首先,申请者需要确认自己符合J1签证的资格要求。这包括被美国的赞助机构或组织接受,…...
51单片机(STC8)-- GPIO输入输出
文章目录 I/O口相关寄存器端口数据寄存器端口模式配置寄存器(PxM0,PxM1)端口上拉电阻控制寄存器(PxPU)关于I/O的注意事项 配置I/O口I/O设置demoI/O端口模式LED控制(I/O输出)按键检测(I/O输入) S…...
【实用安装教程】在win系统下制作Mac OS镜像启动U盘
第一步:制作Mac OS系统引导镜像启动U盘 准备一个8G(或以上)的U盘插入到win系统的电脑上 去下载TransMac(Mac启动盘制作工具)v10.4按照说明安装好 插入准备好的U盘,U盘数据要转移,打开TransMac,右键U盘选…...
职场唠嗑-国家教学
文章目录 职场晋升潜规则:让上司看到自己工作能力职场生存指南:脆弱无罪,眼泪如何变利器关于具备谋取好职位的资格实习生在职场的基本“规矩”比能力更能决定人生的,是你对工作的态度跳槽:看别人家的“饭”端自家的碗职…...
【温故而知新】JavaScript数据结构详解
一、概念 JavaScript是一种弱类型的编程语言,它提供了一些内置的数据结构来存储和组织数据。 在计算机科学中,数据结构是一种特定的方式来组织和存储数据,以便于有效地访问和修改数据。在JavaScript中,数据结构是指相互之间存在…...
matlab如何标定相机内外参和畸变参数
关于内外参矩阵和畸变矩阵可以学习 https://blog.csdn.net/qq_30815237/article/details/87530011?spm1001.2014.3001.5506 在APP中找到 camera Calibrator 点击 Add Images,导入拍照图片。标定20张左右就够了,然后角度变一下,但不需要变太…...
【卫星科普】什么是农业一号卫星和农业二号卫星?
农业一号卫星和农业二号卫星是中国自主研发的两颗重要卫星,主要用于农业领域的监测和研究。 农业一号卫星是中国第一颗具备红边波段传感器的卫星,也是世界上第一颗具备红边波段的宽视场多光谱中高分辨率卫星。这对农业农村遥感监测非常重要,…...
imgaug库指南(一):从入门到精通的【图像增强】之旅
文章目录 引言imgaug简介安装和导入imgaug代码示例imgaug的强大之处和用途小结结尾 引言 在深度学习和计算机视觉的世界里,数据是模型训练的基石,其质量与数量直接影响着模型的性能。然而,获取大量高质量的标注数据往往需要耗费大量的时间和…...
vue封装基础input组件(添加防抖功能)
先看一下效果: // 调用页面 <template><div><!-- v-model:伪双向绑定 --><my-input v-model"inputVal" label"姓名" type"textarea" /></div> </template><script> import…...
小程序一次性订阅消息(消息通知):java服务端实现
文章目录 引言一、消息订阅1.1 小程序订阅消息功能介绍1.2 消息分类1.2.1 新版一次性订阅消息Beta1.2.2 一次性订阅消息(用户通过弹窗订阅)1.2.3 长期订阅消息(用户通过弹窗订阅)1.2.4 设备订阅消息 二、获取模板ID1.登录[微信公众…...
百度自由DIY小程序源码:PHP+MySQL组合开发 带完整的搭建教程
随着移动互联网的快速发展,小程序已成为企业与用户互动的重要平台。然而,对于许多中小企业和开发者来说,从零开始开发一款小程序需要投入大量的时间和资源。 以下是部分代码示例: 系统特色功能一览: 1.高度自定义&…...
Vue中的选项式 API 和组合式 API,两者有什么区别
Vue中的选项式 API(Option API)和组合式 API(Composition API)是两种不同的组件编写方式,它们各有特点和适用场景: 选项式 API(Option API): 传统方法:Vue最初的编程范式…...
Linux下误删除后的恢复操作测试之extundelete工具使用
一、工具介绍 extundelete命令的功能可用于系统删除文件的恢复。在使用前,需要先将要恢复的分区卸载,以防数据被意外覆盖。 语法格式:extundelete [参数] 文件或目录名 常用参数: --after 只恢复指定时间后被删除的文件 --bef…...
table表格中使用el-popover 无效问题解决
实例只针对单个的按钮管用在表格里每一列都有el-popover相当于是v-for遍历了 所以我们在触发按钮的时候并不是单个的触发某一个 主要执行 代码 <el-popover placement"left" :ref"popover-${scope.$index}"> 动态绑定了ref 关闭弹窗 执行deltask…...
c++类全面讲解
文章目录 前言类的基本概念基本结构类与结构体的区别示例代码 类的属性和方法属性(成员变量)方法(成员函数)访问修饰符示例代码 类的构造函数和析构函数构造函数析构函数示例代码 类的构造函数重载重载构造函数示例代码 类中的拷贝…...
使用Python和Pygame库创建简单的的彩球效果
简介 Pygame是一款强大的游戏开发库,可以用于创建各种有趣的图形效果。为了更好地了解Pygame的功能,今天我们将要做的是在屏幕上随机生成一些彩色的小球,并使它们以不同的速度和方向移动。当小球碰到屏幕边缘时,它们将反弹。 功能…...
机械网站建设/花都网络推广seo公司
Exchanger类源于java.util.concurrent包,它可以在两个线程之间传输数据,Exchanger中的public V exchange(V x)方法被调用后等待另一个线程到达交换点(如果当前线程没有被中断),然后将已知的对象传给它,返回…...
山东莱芜疫情最新消息/seo课程培训
数组和链表数组:所谓数组就是相同数据类型的元素按照一定顺序排列的集合。它的存储区间是连续的,占用内存严重,所以空间复杂度很大,为o(n),但是数组的二分查找时间复杂度很小为o(1)。特点是大小固定,不可变,…...
关于怎么做网站/济南seo网站优化公司
对原件,有这几种:1,全中文(含标点,一些英文符号)2,中英文(英文较多,或英文占大多数)3,全英文(这个用finereader8.0) 針對1…...
wordpress 游客留言/怎么自己开网站
前提条件: (1) zabbix服务器端已经成功安装并且运行。 (2) zabbix客户端已经成功建立并且运行。 1 下载并且安装msmtp软件 Wget http://sourceforge.net/projects/msmtp/files/msmtp/1.4.32/msmtp-1.4.32.tar.bz2/download tar jxvf msmtp-1.4.32.tar.bz2 cd ms…...
房屋产权地址备案在那个网站做/企业培训公司有哪些
第一次观看我文章的朋友,可以关注、点赞、转发一下,每天分享各种干货技术和程序猿趣事 前言 职场的金三银四跳槽季又来了,不同的是今年比往年「冷」一些,形式更加严峻一些,大家多多少少可能都听到或看到一些信息&…...
网站怎么添加假备案号/网站优化公司怎么选
今天搭建了CANoe与金溢的obu can连接的环境问题。遇到了一个让人不解的问题。 can0起不来,于是怀疑波特率不匹配,使用调不了。 Linux 设置波特率 ifconfig can0 down /*关闭CAN0*/ ip link set can0 type can bitrate 250000 /*设…...