说明

在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实践的更多相关文章

  1. 企业运维实践-还不会部署高可用的kubernetes集群?使用kubeadm方式安装高可用k8s集群v1.23.7

    关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 文章目录: 0x00 前言简述 ...

  2. K8S集群集成harbor(1.9.3)服务并配置HTTPS

    一.简介 简介请参考:https://www.cnblogs.com/panwenbin-logs/p/10218099.html 二.安装Harbor主机环境及安装要求 主机环境: OS: Cent ...

  3. [k8s]jenkins配合kubernetes插件实现k8s集群构建的持续集成

    另一个结合harbor自动构建镜像的思路: 即code+baseimage一体的方案 - 程序员将代码提交到代码仓库gitlab - 钩子触发jenkins master启动一次构建 - jenkin ...

  4. Randcher 2.0部署K8s集群(一)

    环境准备 1.系统版本 CentOS7.5 + docker ee 2.配置阿里云yum源 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirro ...

  5. Ansible部署K8s集群

    目录 检查网络:k8s-check.yaml 连接配置:k8s-conn-cfg.yaml 配置k8s集群dns解析: k8s-hosts-cfg.yaml 配置yum源:k8s-yum-cfg.ya ...

  6. K8s集群认证之RBAC

    kubernetes认证,授权概括总结: RBAC简明总结摘要:API Server认证授权过程: subject(主体)----->认证----->授权[action(可做什么)]--- ...

  7. K8S集群Master高可用实践

    K8S集群Master高可用实践    https://blog.51cto.com/ylw6006/2164981 本文将在前文基础上介绍k8s集群的高可用实践,一般来讲,k8s集群高可用主要包含以 ...

  8. 1.还不会部署高可用的kubernetes集群?看我手把手教你使用二进制部署v1.23.6的K8S集群实践(上)

    公众号关注「WeiyiGeek」 设为「特别关注」,每天带你玩转网络安全运维.应用开发.物联网IOT学习! 本章目录: 0x00 前言简述 0x01 环境准备 主机规划 软件版本 网络规划 0x02 ...

  9. 万级K8s集群背后etcd稳定性及性能优化实践

    背景与挑战 随着腾讯自研上云及公有云用户的迅速增长,一方面,腾讯云容器服务TKE服务数量和核数大幅增长, 另一方面我们提供的容器服务类型(TKE托管及独立集群.EKS弹性集群.edge边缘计算集群.m ...

随机推荐

  1. ESP8266开发之旅 网络篇② ESP8266 工作模式与ESP8266WiFi库

        在网络篇①中,博主主要讲解了Arduino上开发ESP8266的插件库 Arduino Core For ESP8266.但是,并没有讲到关于这个模块的工作模式,所以本篇讲着重讲解ESP826 ...

  2. ESP8266开发之旅 网络篇③ Soft-AP——ESP8266WiFiAP库的使用

    1. 前言     在前面的篇章中,博主给大家讲解了ESP8266的软硬件配置以及基本功能使用,目的就是想让大家有个初步认识.并且,博主一直重点强调 ESP8266 WiFi模块有三种工作模式: St ...

  3. ESP8266开发之旅 网络篇⑩ UDP服务

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  4. 面试又被 Java 基础难住了?推荐你看看这篇文章。

    本文已经收录自 JavaGuide (59k+ Star):[Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识. 1. 面向对象和面向过程的区别 面向过程 :面向过程性能比面 ...

  5. C语言文件输入/输出 ACM改进版(用freopen函数方便检验)

    这次用到的文件打开函数不再是fopen,而是stdio.h中包含的另一个函数freopen FILE * freopen ( const char * filename,const char * mo ...

  6. fenby C语言 P26

    指针 地址 类型+“*”+变量名=指针变量 int *p1;//指向整型变量的指针变量p1 float *p2;//指向浮点型变量的指针变量p2 char *p3;//指向字符型变量的指针变量p3 “ ...

  7. 来玩一局CS吗?UE4射击游戏的独立服务器构建

    前言   根据UE4官方文档的介绍,UE4引擎在架构时就已经考虑到了多人游戏的情景,多人游戏基于客户端-服务器模式(CS模式).也就是说,会有一个服务器担当游戏状态的主控者,而连接的客户端将保持近似的 ...

  8. pyEcharts安装及使用指南

    pyEcharts安装及使用指南 ECharts是一个纯Javascript的图表库,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器,底层依赖轻量级的Canvas类库ZRender,提供直观 ...

  9. SVD分解

    首先,有y = AX,将A看作是对X的线性变换 但是,如果有AX = λX,也就是,A对X的线性变换,就是令X的长度为原来的λ倍数. *说起线性变换,A肯定要是方阵,而且各列线性无关.(回想一下,A各 ...

  10. 学习笔记43_T4模板

    新建-文本模板(后缀为.tt) <#@ template debug="false" hostspecific="false"  language=&qu ...