配置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 ...
随机推荐
- 【网络安全】Dos攻击科普文
目录 DOS攻击 什么是DOS攻击 攻击手段分类 具体的攻击方式举例 优秀博客参考 DDOS攻击 DOS攻击 什么是DOS攻击 DOS是Denial of Service的简称,用中文简单翻译就是拒绝 ...
- 不同的phper该如何区别使用swoole和workerman?
那么我们该怎样去区别应用swoole和workerman? workerman workerman纯php写的,swoole是php的c扩展,性能肯定更高,百度.腾 ...
- 推荐一款现代化的脚手架项目《hope-boot》
简介: > 一款现代化的脚手架项目.企业开发?接外包?赚外快?还是学习?这都能满足你,居家必备,值得拥有
- 处理 Could not find a 'KafkaClient' entry in the JAAS configuration. System property 'java.security.auth.login.config' is
场景 某监控进程需要访问多个集群的Kafka INFO - org.apache.kafka.common.KafkaException: Failed to construct kafka cons ...
- Veins(车载通信仿真框架)入门教程(二)——调用第三方库
Veins(车载通信仿真框架)入门教程(二)——调用第三方库 在借助Veins进行自己的研究时我们经常需要实现一些比较复杂的功能,有时就需要借助第三方库的帮助. 博主的研究需要使用神经网络,但是自己编 ...
- 判断是否存在UI被触摸
) || (Input.touchCount > && Input.GetTouch().phase == TouchPhase.Began)) { #if UNITY_ANDR ...
- JS设置和获取盒模型的宽和高
JS设置和获取盒模型的宽和高 dom.style.width/height:只能取出内联样式的宽度和高度 dom.currentStyle.width/height:获取即时的计算的样式,但是只有IE ...
- 设计模式C++描述----15.策略(Strategy)模式
一. 举例说明 以前做了一个程序,程序的功能是评价几种加密算法时间,程序的使用操作不怎么变,变的是选用各种算法. 结构如下: Algorithm:抽象类,提供算法的公共接口. RSA_Algorith ...
- vue 首次加载缓慢/刷新后加载缓慢 原因及解决方案
# vue 首次加载缓慢/刷新后加载缓慢 原因及解决方案 最近做项目发现一个问题,页面每次刷新后加载速度都非常慢,20s左右,在开发环境则非常流畅,几乎感觉不到,本文参考望山的各种方案优化 1,关闭打 ...
- Redis开发与运维:SDS
STRING 我们会经常打交道的string类型,在redis中拥有广泛的使用.也是开启redis数据类型的基础. 在我最最开始接触的redis的时候,总是以为字符串类型就是值的类型是字符串. 比如: ...