k8s不求甚解系列:一种在k8s上创建不同权限的kubeconfig实践

场景

多团队在同一个k8s集群上共同开发,为了隔离不同团队对集群资源的操作能力,通过创建并分发具有不同操作权限的kubeconfig文件,隔离不同业务团队对k8s中资源的操作能力。

面向人群

集群运维人员

实验操作设置

  • 业务团队一:占用的namespace是test1
  • 业务团队二:占用的namespace是test2
  • 操作机器是在集群的master节点上

实验过程

# 在集群上创建用户
kubectl create sa user1
# 创建user1依赖的namespace命名空间
kubectl create ns test1
# 创建role,配置user1用户可以在test1的命名空间内检索pod
kubectl create role pod-reader --verb=list --resource=pods -n test1
kubectl create rolebinding pod-reader-binding --role=pod-reader --serviceaccount=default:user1 -n test1
# 获取user1的secrets并保存到本地
kubectl get sa user1 -o=jsonpath='{.secrets[0].name}'|xargs kubectl get secret  -o=jsonpath='{.data.token}' | base64 -d > user1.token
# 创建kubeconfig
# 这一步需要替换apiserver地址,确保是在master节点执行
kubectl config set-cluster kubernetes --server=https://192.168.139.100:6443 --certificate-authority=/etc/kubernetes/pki/ca.crt --embed-certs=true --kubeconfig=user1.kubeconfig

kubectl config set-context user1 --cluster=kubernetes --user=user1 --kubeconfig=user1.kubeconfig
# 这一步依赖前文提到的user1.token文件
kubectl config set-credentials user1 --token=$(cat user1.token) --kubeconfig=user1.kubeconfig
kubectl config use-context user1 --kubeconfig=user1.kubeconfig    

实现效果

不同团队可以通过不同权限的kubeconfig文件操作集群

# 现在可以切换kubeconfig了
export KUBECONFIG=user1.kubeconfig
[root@master home]# kubectl get po                                                                                          
Error from server (Forbidden): pods is forbidden: User "system:serviceaccount:default:user1" cannot list resource "pods" in 
API group "" in the namespace "default"                                                                                     
[root@master home]# kubectl get po -n test1                                                                                 
No resources found in test1 namespace.  

后续

集群的运维人员可以根据k8s原生支持的面向namespace的resourceQuota、LimitRange等技术对不同团队进行资源限制

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值