TH小破站

  • 首页
  • 容器
    • 认识Docker
    • DockerFile详解
  • k8s
    • 认识Kubernetes
    • Kubernetes部署--(kubeadm方式)
    • kubeasz部署k8s集群
    • Ansible-binary部署k8s集群-1.31.2
  • Ceph
    • 认识分布式存储
    • CPEH部署
  • CI/CD
    • DevOps认识
    • 部署--Gitlab
  • ELK
    • ELK简介
    • Elasticsearch
    • Kibana部署
    • Logstash
    • ELK--收集 tomcat 日志(实战)
  • HD
    • 认识--大数据
    • Hadoop-单机部署
    • Hadoop-伪分布部署
    • Hadoop-完全分布部署
    • Hadoop-(HA)完全分布部署
    • Ambari自动部署--Hadoop
  • Nginx
    • Nginx功能介绍
    • Nginx安全选项
    • Nginx配置文件简单介绍
    • 网站服务器部署
  • 监控
    • ZABBIX-部署(yum)
    • ZABBIX-编译安装
  • 云计算
    • KVM 概述
    • OpenStack企业级部署(T版)
    • OpenStack之dashboard部署
    • OpenStack-controller的高可用
    • openstack(Caracal版_ubuntu版本)部署
  • 数据库
    • mariadb与mysql
    • mysql主从
    • MySQL--冷备(实战)
    • MySQL--热备(dump表)
    • MySQL--热备(dump库)
    • 数据恢复实战案例
    • Xtrabackup实现MySql8.x全量备份
    • MyCat实现数据库读写分离
    • MHA实现数据库高可用
    • Percona XtraDB(PXC)实现数据库集群高可用
    • 数据库压力测试
    • PostgreSQL 基操
    • PostgreSQL备份恢复
    • PostgreSQL高可用
    • MongDB安装配置基础使用
    • MongoDB实现复制集
    • MongoDB备份还原
  • 自动化
    • ssh远程服务原理及配置
    • Ansible剧本文件应用
    • Ansible管理服务介绍
    • Ansible自动化部署node_exporter(包含升级,回滚)
    • Saltstack-部署安装
  • 脚本
    • 一键查看服务器资源利用率
    • 一键生成SSL证书
    • 保存指定数量的文件/目录
    • 初始化服务器
    • 扫描可用IP
    • 批量分发SSH密钥
    • 监控多主机磁盘脚本
    • 一键安装MySQL8.x脚本
    • Python脚本监控ES集群
    • 资源巡检脚本
    • 查看各用户使用的cpu占比
热衷于分享
架构师成长之路 !!!
  1. 首页
  2. Kubernetes
  3. 正文

K8s中RBAC实现Role以及Rolebinding

2024年5月1日 885点热度 1人点赞 0条评论

Role/Rolebinding

命令式命令

◼ kubectl create role NAME --verb=verb --resource=resource.group/subresource [--resource-name=resourcename]

     ◆verb:允许在资源上使用的操作(verb)列表

     ◆resources.group/subresource:操作可施加的目标资源类型或子资源列表

     ◆resourcename:特定的资源对象列表,可选

◼ 示例:kubectl create role pods-viewer --verb="get,list,watch" --resource="pods" --namespace=default

role绑定UserAccount

生成的资源对象的资源配置

 ~# kubectl create role pod-veiwer --verb="get,list,watch" --resource="pods" -n demo --dry-run=client -o yaml 
 apiVersion: rbac.authorization.k8s.io/v1
 kind: Role
 metadata:
   creationTimestamp: null
   name: pod-veiwer
   namespace: demo
 rules:
 - apiGroups:
   - ""
   resources:
   - pods
   verbs:
   - get
   - list
   - watch
 ~# kubectl apply -f demo-role.yaml
 ~# kubectl get role -n demo
 NAME         CREATED AT
 pod-veiwer   2024-05-01T11:15:51Z
 ​
 `绑定UserAccount`
 ~# kubectl create rolebinding stjson-pod-veiwer --role=pod-veiwer --user=stjson -n demo --dry-run=client -o yaml 
 apiVersion: rbac.authorization.k8s.io/v1
 kind: RoleBinding
 metadata:
   creationTimestamp: null
   name: stjson-pod-veiwer
   namespace: demo
 roleRef:
   apiGroup: rbac.authorization.k8s.io
   kind: Role
   name: pod-veiwer
 subjects:
 - apiGroup: rbac.authorization.k8s.io
   kind: User
   name: stjson
 ~# kubectl apply -f stjsom-demo-role.yaml
  • 验证

 root@k8s-node01:~# kubectl config current-context
 stjson@mykube
 root@k8s-node01:~# kubectl get pods -n demo
 NAME       READY   STATUS    RESTARTS      AGE
 demodb-0   1/1     Running   1 (10h ago)   3d22h
 demodb-1   1/1     Running   1 (10h ago)   3d22h
 `但是没有查看service权限`
 root@k8s-node01:~# kubectl get svc -n demo
 Error from server (Forbidden): services is forbidden: User "stjson" cannot list resource "services" in API group "" in the namespace "demo"
 ​

及stjson用户可以访问demo这个名称空间的pod资源

  • 增加权限

 root@k8s-master01:~# cat demo-role.yaml
 apiVersion: rbac.authorization.k8s.io/v1
 kind: Role
 metadata:
   creationTimestamp: null
   name: pod-veiwer
   namespace: demo
 rules:
 - apiGroups:
   - ""
   resources:
   - pods
   - services
   verbs:
   - get
   - list
   - watch
   - create
   - delete
 - apiGroups:
   - "apps"
   resources:
   - deplyments
   - daemonsets
   verbs:
   - get
   - list
   - watch
 root@k8s-master01:~# kubectl apply -f demo-role.yaml

增加了services,pods 创建和删除权限,deplyments, daemonsets的查看权限

  • 验证新增权限

 root@k8s-node01:~# kubectl get svc -n demo
 NAME     TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE
 demodb   ClusterIP   None         <none>        9907/TCP   3d22h

role绑定serviceAccount

 root@k8s-master01:~# kubectl create serviceaccount kube-user -n demo --dry-run=client -o yaml
 apiVersion: v1
 kind: ServiceAccount
 metadata:
   creationTimestamp: null
   name: kube-user
   namespace: demo
 ​
 `创建一个`
 root@k8s-master01:~# kubectl create rolebinding kube-user-admin --clusterrole=admin --serviceaccount=demo:kube-user -n demo --dry-run=client -o yaml
 apiVersion: rbac.authorization.k8s.io/v1
 kind: RoleBinding
 metadata:
   creationTimestamp: null
   name: kube-user-admin
   namespace: demo
 roleRef:
   apiGroup: rbac.authorization.k8s.io
   kind: ClusterRole
   name: admin
 subjects:
 - kind: ServiceAccount
   name: kube-user
   namespace: demo
   
 `创建一个测试pod`
 root@k8s-master01:~# cat serviceacconut-pod.yaml
 apiVersion: v1
 kind: Pod
 metadata:
   name: kubeclient
   namespace: demo
 spec:
   containers:
   - name: kubectl
     image: bitnami/kubectl:latest
     command:
     - "/bin/sh"
     - "-c"
     - "sleep 99999"
   serviceAccountName: kube-user
 root@k8s-master01:~# kubectl apply -f serviceacconut-pod.yaml
 root@k8s-master01:~# kubectl get pod -n demo
 NAME         READY   STATUS    RESTARTS      AGE
 demodb-0     1/1     Running   1 (10h ago)   3d23h
 demodb-1     1/1     Running   1 (10h ago)   3d23h
 kubeclient   1/1     Running   0             69s
 root@k8s-master01:~# kubectl exec -it kubeclient -n demo /bin/bash
 ​
 I have no name!@kubeclient:/$ kubectl get pod
 NAME         READY   STATUS    RESTARTS      AGE
 demodb-0     1/1     Running   1 (10h ago)   3d23h
 demodb-1     1/1     Running   1 (10h ago)   3d23h
 kubeclient   1/1     Running   0             106s

可以看到定义测试一个pod,里面有访问当前名称空间的权限,但是没有访问其他名称空间权限

标签: 暂无
最后更新:2024年5月1日

tanghao946

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复
文章目录
  • Role/Rolebinding

COPYRIGHT © 2025 TH小破站. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

渝ICP备2023013789号

渝公网安备50011702500926号