kubernetes给指定用户分配调用k8s的api权限

文章目录

    • 概要
    • 利用RBAC添加角色权限
      • 使用shell命令创建角色权限
      • 使用配置文件创建角色权限
    • 调用k8s的api
      • 获取k8s账户的token
    • 小结

概要

使用kubernetes部署项目时,有些特殊场景,我们需要在自己创建的pod里面调用k8s的api来管理k8s,但是需要使用指定用户权限,该用户证使用当前命名空间的资源,不能使用其他命名空间的api和资源。

利用RBAC添加角色权限

创建命名空间,创建后会默认新建一个service_account

kubectl create namespace demo

使用shell命令创建角色权限

创建role和rolebinding

kubectl create role demo_admin_role --resource=* --verb=* --namespace=demo
kubectl create rolebinding demo_admin_role_binding --role=demo_admin_role --serviceaccount=demo:default --namespace demo

使用配置文件创建角色权限

kubectl create -n xijia -f rbac.yaml

配置文件如下:

  • 定义了role和rolebinding,role名称为创建的role名称为【admin_role】,以及rolebinding名称为【admin_role_binding】。
  • rolebinding的作用就是把role和account关联起来,这样我们的account就能拿到相应的权限。
  • role包括了deployments,pods,services,configmaps四个资源的get,list,watch,create,update,delete。如果想给所有权限,也可以用*
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:name: admin_rolenamespace: demo
rules:
- apiGroups:- "apps"resources:- "deployments"verbs:- "get"- "list"- "watch"- "create"- "update"- "delete"
- apiGroups:- ""resources:- "pods"- "services"- "configmaps"verbs:- "get"- "list"- "watch"- "create"- "update"- "delete"---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:name: admin_role_bindingnamespace: demo
roleRef:apiGroup: rbac.authorization.k8s.iokind: Rolename: admin_role
subjects:
- kind: ServiceAccountname: defaultnamespace: demo

调用k8s的api

默认调用k8s的api是会返回401认证失败的错误的,所以我们需要先拿到demo:default账户的token才能调用k8s的api接口

获取k8s账户的token

kubectl describe secret --namespace demo default-token-frn4q

可以看到返回的token非常长,这个是正常的,后面这个就是认证的token。
在这里插入图片描述
先进入pod,我们在pod里面测试调用k8s的api。下面的命令就是获取demo命名空间下的所有pod。

curl -k --header "Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6Ik1zZ3BGcTNoam9FakxjOW93QTVyY3JhOWY5Z1RibkhCOENkSkNST0Uzc1kifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJ4aWppYSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJ0ZXN0MTIzLXRva2VuLTV3NTQ5Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6InRlc3QxMjMiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI1ZmRkN2IxYy02YTcxLTQ2ODQtYTM2ZC1lZTNkMGQzN2Y3YmMiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6eGlqaWE6dGVzdDEyMyJ9.AANC-2tRA17cvsqrAQM3_3JnE1BeMhg1tnSU_SThayj_0FqKOcZXecq3biQAPKPmHEBtNI9CFZnsihBDKV7o9I8OPl_8-urBIk9IrhlaYx7iu8OefA-zqNTofL331bbTuwJriE6qInFdKQH8YpJgJbpSyJLYptiu6Uqm_O2KVOASH0P5msZ_caMv7KvTsV-oYGM3XhrlL_eVIX10ENKNaF13nvglUH6mRcu4s2PB6E9KKMvsO7c7QSj9iJPj6semxTUEOf2iQJXlWIE2p6lReYGnNavh471kytwopt5GzG_8l4cH8XKX5v_tj1UroIPGqVGqHKUfPL3C3hucdUe4Gw" https://kubernetes.default.svc:443/api/v1/namespaces/demo/pods

如果获取default命名空间下的pod,就会返回403权限不足的错误

curl -k --header "Authorization: Bearer YOUR_TOKEN" https://kubernetes.default.svc:443/api/v1/namespaces/default/pods

小结

k8s的api十分丰富,平时用到的deployment,pod,service都可以使用api来操作。官方文档如下:https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/rbac/#api-overview

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

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

相关文章

Spring Boot中的动态数据源切换

Spring Boot中的动态数据源切换 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,我们将探讨如何在Spring Boot中实现动态数据源切换的技术。动态…

某山词霸翻译js逆向分析

一、基础知识 1、post的几种发包的方式 2、query string和form data的区别 Query String Parameters: GET请求时,参数会以url string 的形式进行传递,即?后的字符串则为其请求参数,并以&作为分隔符。(有时候pos…

修改 app id - 鸿蒙 HarmonyOS Next

修改项目 app id 后通过真机 build run 的时候抛出了如下异常; 项目中更改后的配置与真机的不匹配; {app: {bundleName: "com.xxxxxx.xxx_harmony",vendor: "xxxxxx",versionCode: 1,versionName: "3.5.00",icon: "$media:app_icon",…

有什么简单易上手的CRM系统推荐?五款CRM软件评测

在数字化时代,企业急需一个能全面展示客户、销售和分析数据的CRM系统。当然,简单易用的CRM系统成了企业首选。选择系统时,同时要关注它的实际功能是否满足需求,是否容易上手,能否根据企业需求灵活定制,能否…

一种自定义SPI通信协议

本文介绍一种自定义SPI通信协议。 项目开发过程中,有时候会涉及到主处理器或FPGA和MCU之间的SPI通信,涉及到通信就需要考虑通信协议,本文给出一种简单的通信协议。 1.协议格式 协议格式如下图。 其中,将40 bit划分为2大部分&am…

【uniapp】上传附件+Java后端

一、背景 移动端项目使用uniapp开发,项目有上传附件的需求。现在分享给大家,一起进步 二、前端 关键代码: uni.chooseFile({type: "all",count: this.count,success: res > {let len 0;res.tempFiles.forEach((item, index…

【HDFS】关于Hadoop的IPC.Client类的一些整理

org.apache.hadoop.ipc.Client 类是IPC服务的一个客户端。 IPC请求把一个Writable对象当做参数,返回一个Writable对象当做结果value。 一个IPC服务运行在某个端口上,并且由参数class和value class定义。 Router里的IPC.Client对象就两个 有这样一个类:ClientCache 看名字就…

springboot加载注入bean的方式

在SpringBoot的大环境下,基本上很少使用之前的xml配置Bean,主要是因为这种方式不好维护而且也不够方便。 springboto注入bean主要采用下图几种方式,分为本地服务工程注解声明的bean和外部依赖包中的bean。 一、 springboot装配本地服务工程…

Maven deploy上传远程私服失败

Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy (default-deploy) on project 你的项目: Cannot deploy artifacts when Maven is in offline mode 解决方案&#xff1a; 1.IDEA把这个钩子去掉 2. settings.xml里把 <offline>标…

云计算【第一阶段(23)】Linux系统安全及应用

一、账号安全控制 1.1、账号安全基本措施 1.1.1、系统账号清理 将非登录用户的shell设为/sbin/nologin锁定长期不使用的账号删除无用的账号 1.1.1.1、实验1 用于匹配以/sbin/nologin结尾的字符串&#xff0c;$ 表示行的末尾。 &#xff08;一般是程序用户改为nologin&…

[英语单词] standpoint

The way cancellation works, from an application standpoint, is that when thread A no longer needs the work that thread B is performing, thread A calls pthread_cancel on thread B. 驻足点 from an application standpoint&#xff1b;从应用的驻足点来说。 这个和…

c/c++语言MCU学习笔记

程序数据结构算法 算法&#xff1a;解决问题的方法的步骤 算法的分类&#xff1a; 数值运算法和非数值运算法 算法的表示方法&#xff1b; 自然语言表示法、流程图 N/S NS流程图&#xff0c;又被称为N-S图&#xff0c;或者是盒图&#xff0c;它是一种可视化建模…

SAMformer创新点

SAMformer 提供了一种新的方法来改进变换器&#xff08;Transformer&#xff09;在时间序列预测任务中的性能&#xff0c;特别是针对泛化能力和训练稳定性问题。具体来说&#xff0c;SAMformer结合了两个关键技术&#xff1a;锐度感知最小化&#xff08;Sharpness-Aware Minimi…

鸿蒙登录页面及页面跳转的设计

目录 任务目标任务分析任务实施1.新建工程项目HMLogin2.设计登录页面Index.visual3.设计第二个页面SecondPage4.修改Index.ets代码5.修改SecondPage.ets代码6.运行工程 任务目标 设计一个简单的登录页面&#xff0c;要求可以将第一页的登录信息&#xff0c;传递到第二个页面&a…

Cesium 在加载 3dTiles 如何如何获取ID

文章目录 问题分析问题 加载的 3dTiles 打印content.getFeature(i)出来后如图所示,想获取到id值 分析 var tileset = mapLayer.init3dTileLayer({url:it.url,maximumMemoryUsage: it.maximumMemoryUsage,

一起学Hugging Face Transformers(7) - 使用Transformers 库进行机器翻译(Machine Translation)

文章目录 前言一、 环境准备二、 导入库并加载预训练模型三、 进行翻译四、 支持多语言对五、 调整翻译参数六、 使用具体任务的模型总结 前言 机器翻译&#xff08;Machine Translation&#xff09;是自然语言处理&#xff08;NLP&#xff09;中的一个重要任务&#xff0c;它…

关于RAG优化的几个小技巧

一、背景说明 RAG技术为大型语言模型&#xff08;LLMs&#xff09;提供了从数据源检索到的信息&#xff0c;以支撑其生成的答案。简而言之&#xff0c;RAG就是搜索加上LLM提示&#xff0c;你让模型在提供的信息上下文中回答问题。查询和检索到的上下文都被注入到发送给LLM的提…

Spring Boot 启动流程是怎么样的

引言 SpringBoot是一个广泛使用的Java框架&#xff0c;旨在简化基于Spring框架的应用程序的开发过程。在这篇文章中&#xff0c;我们将深入探讨SpringBoot应用程序的启动流程&#xff0c;了解其背后的机制。 Spring Boot 启动概览 SpringBoot应用程序的启动通常从一个包含 m…

求生之路史低入手 教你怎么使用求生之路创意工坊提高体验性

求生之路是一款抵御丧尸的第一人称射击游戏&#xff0c;四名幸存者联机配合&#xff0c;在现代的城市中&#xff0c;击败各种丧尸还有强大的变种人BOSS&#xff0c;虽然是十几年前的游戏&#xff0c;但是毫不夸张的说&#xff0c;游戏丝毫不过时&#xff0c;目前steam夏促&…

理解SurfaceFlinger在Android中的作用

理解SurfaceFlinger在Android中的作用 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们来探讨Android系统中一个关键的组件——SurfaceFlinger&#xff…