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

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.lryc.cn/news/386886.html

相关文章:

  • 无人机的弱点和限制
  • ElementUI的基本搭建
  • Modbus TCP与TCP/IP协议间的差异与应用场景
  • Linux Doxygen快速生成文档
  • MobPush REST API的推送 API之批量推送
  • Arthas快速入门
  • python系列30:各种爬虫技术总结
  • PHP和phpSpider:如何应对反爬虫机制的封锁?
  • 学生宿舍管理系统
  • 一分钟彻底掌握Java迭代器Iterator
  • 第三十七篇——麦克斯韦的妖:为什么要保持系统的开放性?
  • 青岛网站建设一般多少钱
  • Linux 进程状态:TASK_INTERRUPTIBLE 和 TASK_UNINTERRUPTIBLE
  • vue3使用vant4的列表vant-list点击进入详情自动滚动到对应位置,踩坑日记(一天半的踩坑经历)
  • Linux的fwrite函数
  • python udsoncan 详解
  • 基于自组织长短期记忆神经网络的时间序列预测(MATLAB)
  • 240629_昇思学习打卡-Day11-Vision Transformer中的self-Attention
  • 代码随想录-Day43
  • C++——探索智能指针的设计原理
  • 办公效率新高度:利用办公软件实现文件夹编号批量复制与移动,轻松管理文件
  • Windows kubectl终端日志聚合(wsl+ubuntu+cmder+kubetail)
  • 【MySQL】数据库——事务
  • python代码缩进规范(2空格或4空格)
  • 前后端分离的后台管理系统开发模板(带你从零开发一套自己的若依框架)上
  • 【C++ | 委托构造函数】委托构造函数 详解 及 例子源码
  • iCloud邮件全攻略:设置与使用终极指南
  • 【计算机毕业设计】基于微信小程序的电子购物系统的设计与实现【源码+lw+部署文档】
  • CSS实现动画
  • Python+Pytest+Allure+Yaml+Jenkins+GitLab接口自动化测试框架详解