配置k8s集群context-rbac实践
说明
在openshift环境中,可以通过oc project {project_name}命令来切换project,那么在k8s中式如何切换namespace的呢?(ocp的project即相当于k8s中的ns)
实例
创建ns
#创建dev 和 prod ns
kubectl create ns dev
kubectl create ns prod
查看默认上下文用于访问api的信息
#通过kubectl config view或者cat ~/.kube/config 查看默认上下文使用的cluster和user
kc config view
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: REDACTED
server: https://172.31.2.130:6443
name: kubernetes
contexts:
- context:
cluster: kubernetes //默认上下文使用的cluster
user: kubernetes-admin //默认上下文使用的user
name: kubernetes-admin@kubernetes
current-context: ctx-prod
kind: Config
preferences: {}
users:
- name: kubernetes-admin
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
新增上下文
#定义Context
kubectl config set-context ctx-dev --namespace=dev --cluster=kubernetes --user=kubernetes-admin
kubectl config set-context ctx-prod --namespace=prod --cluster=kubernetes --user=kubernetes-admin
切换上下文
kubectl config use-context ctc-prod
#此时部署应用默认就会到prod ns中
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
上述配置之后可以实现切换ns(类似oc project xxx),但是都是使用的kubernetes-admin这个user,这个用户具有cluster-admin的权限
以下配置实现在prod这个ns中只允许对资源deployment、pod的list等操作,而不允许delete操作
参考链接:https://blog.csdn.net/hy9418/article/details/80268418
创建私钥文件
#使用openssl创建名为view.key的私钥文件
openssl genrsa -out view.key
创建证书签名请求文件
#使用上述的私钥文件创建csr文件
openssl req -new -key view.key -out view.csr -subj "/CN=view/O=mypwd"
生成证书文件
#利用k8s集群证书文件(/etc/kubernetes/pki/下),生成证书view.crt
openssl x509 -req -in view.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out view.crt -days
配置k8s context
#编辑~/.kube/config文件,新增user,name为view,其中client-certificate-data和client-key-data的值如下 client-certificate-data=`cat view.crt | base64 --wrap=` client-key-data=`cat view.key | base64 --wrap=` #在prod这个context中指定user为view
- context:
cluster: kubernetes
namespace: prod
user: view
name: prod
由于未赋权限,报如下错误
[root@node1 manifests]# kc config use-context prod
Switched to context "prod".
[root@node1 manifests]# kc get pod
No resources found.
Error from server (Forbidden): pods is forbidden: User "view" cannot list pods in the namespace "prod"
权限赋值
#新建view_rbac.yaml文件,其中定义了Role对象和RoleBindind对象
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: prod_user_role
namespace: prod
rules:
# ""表示core这个apiGroups, pod就是在core
- apiGroups: ["", "extensions", "apps"]
resources:
- pods
verbs:
- list
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: prod_user_rolebinding
namespace: prod
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: prod_user_role
subjects:
- kind: User
name: view
namespace: prod #通过kubectl create -f view_rbac.yaml,注:需要切回具有cluster-admin权限的context才能执行create动作
verbs 字段的全集:verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
验证
#切换到prod context
kc config use-context prod #kc get pod,命令正常获取pod
NAME READY STATUS RESTARTS AGE
my--game-789f4fb6b5-6nl8n / Running 12d
my--game-789f4fb6b5-j59hq / Running 12d
my--game-789f4fb6b5-xx2vb / Running 12d kc delete pod my--game-789f4fb6b5-6nl8n
Error from server (Forbidden): pods "my-2048-game-789f4fb6b5-6nl8n" is forbidden: User "view" cannot delete pods in the namespace "prod" kc get deployment
No resources found.
Error from server (Forbidden): deployments.extensions is forbidden: User "view" cannot list deployments.extensions in the namespace "prod"
配置k8s集群context-rbac实践的更多相关文章
- 企业运维实践-还不会部署高可用的kubernetes集群?使用kubeadm方式安装高可用k8s集群v1.23.7
关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 文章目录: 0x00 前言简述 ...
- K8S集群集成harbor(1.9.3)服务并配置HTTPS
一.简介 简介请参考:https://www.cnblogs.com/panwenbin-logs/p/10218099.html 二.安装Harbor主机环境及安装要求 主机环境: OS: Cent ...
- [k8s]jenkins配合kubernetes插件实现k8s集群构建的持续集成
另一个结合harbor自动构建镜像的思路: 即code+baseimage一体的方案 - 程序员将代码提交到代码仓库gitlab - 钩子触发jenkins master启动一次构建 - jenkin ...
- Randcher 2.0部署K8s集群(一)
环境准备 1.系统版本 CentOS7.5 + docker ee 2.配置阿里云yum源 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirro ...
- Ansible部署K8s集群
目录 检查网络:k8s-check.yaml 连接配置:k8s-conn-cfg.yaml 配置k8s集群dns解析: k8s-hosts-cfg.yaml 配置yum源:k8s-yum-cfg.ya ...
- K8s集群认证之RBAC
kubernetes认证,授权概括总结: RBAC简明总结摘要:API Server认证授权过程: subject(主体)----->认证----->授权[action(可做什么)]--- ...
- K8S集群Master高可用实践
K8S集群Master高可用实践 https://blog.51cto.com/ylw6006/2164981 本文将在前文基础上介绍k8s集群的高可用实践,一般来讲,k8s集群高可用主要包含以 ...
- 1.还不会部署高可用的kubernetes集群?看我手把手教你使用二进制部署v1.23.6的K8S集群实践(上)
公众号关注「WeiyiGeek」 设为「特别关注」,每天带你玩转网络安全运维.应用开发.物联网IOT学习! 本章目录: 0x00 前言简述 0x01 环境准备 主机规划 软件版本 网络规划 0x02 ...
- 万级K8s集群背后etcd稳定性及性能优化实践
背景与挑战 随着腾讯自研上云及公有云用户的迅速增长,一方面,腾讯云容器服务TKE服务数量和核数大幅增长, 另一方面我们提供的容器服务类型(TKE托管及独立集群.EKS弹性集群.edge边缘计算集群.m ...
随机推荐
- BeetleX服务网关之服务发现与泛域名路由
在新版本的服务网关中提供了服务发现和泛域名路由解决功能,服务发现可以在无须配置的情况下实现服务自动注册到网关中解脱对服务配置的繁琐工作:而泛域名路由则可以针对不同的域名制定不同的负载规则. 使用con ...
- 关于M23内核简介 - 待续
1.定位 M23是基于最新的ARMv8-M构架的主要关注低功耗应用的微控制器,未来会是M0.M0+的替代品. M33是基于最新的ARMv8-M构架的主要关注高能效应用的微控制器,未来会替换M3.M4. ...
- 【RabbitMQ 实战指南】一 延迟队列
1.什么是延迟队列 延迟队列中存储延迟消息,延迟消息是指当消息被发送到队列中不会立即消费,而是等待一段时间后再消费该消息. 延迟队列很多应用场景,一个典型的应用场景是订单未支付超时取消,用户下单之后3 ...
- 百万年薪python之路 -- 模拟三次账号登录锁定功能
用代码实现三次用户登录及锁定(选做,时间充足建议做一做) 项目分析: 一.首先程序启动,显示下面内容供用户选择: 1.注册 2.登录 a.用户选择登录的时候,首先判断用户名在userinfo.txt表 ...
- The usage of Markdown---文字强调:加粗/斜体/文本高亮/删除线/下划线/按键效果
更新时间:2019.09.14 1. 序言 有时候,我们需要对某些文字进行强调,例如粗体和斜体.而Markdown通常可以使用星号*或者下划线_进行文字强调. 2. 加粗 如果想要达到加粗的效果,可以 ...
- C# leetcode 之 096 不同的二叉搜索树
C# leetcode 之 096 不同的二叉搜索树 题目描述 给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 二叉搜索树定义 左子树上所有节点的值小于根节点, 右子树上左右 ...
- Vue躬行记(5)——组件通信
组件之间除了保持独立之外,还需要相互通信,本章将介绍几种通信的方式. 一.直接访问 Vue提供了三个实例属性,可直接访问父组件.子组件和根实例,如下所列. (1)$parent:父组件. (2)$ro ...
- map 与 set的使用
1.map的使用 初始化的两种方式 a. const map = new Map([['name','ouycx'],['age', 20]]); b. const map = new Map(); ...
- CVE-2019-0708复现之旅
CVE-2019-0708 0x00 前言: CVE-2019-0708漏洞已经出来三四个月了对应的poc也出现了很久 ,exp 还是没动静前段时间出了个蓝屏伪exp 不过肯定那些大厂手里早已经了有了 ...
- [考试反思]1016csp-s模拟测试76:自知
要打对拍. 要打对拍. 要打对拍. 要手模数据. 要手模数据. 要手模数据. 不要相信样例. 不要相信样例. 不要相信样例. 不要飘. 不要飘. 不要飘. 跟skyh学坏了.最近不打对拍. 连续十几次 ...