限制不同的用户操作k8s的资源

一、生成证书

1.1 生成一个私钥

$ cd /etc/kubernetes/pki/
$ (umask 077; openssl genrsa -out lvzhenjiang.key 2048)

1.2 生成一个证书请求

$ openssl req -new -key lvzhenjiang.key -out lvzhenjiang.csr -subj "/CN=lvzhenjiang"

1.3 生成一个证书

$ openssl x509 -req -in lvzhenjiang.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out lvzhenjiang.crt -days 3650

二、在kubeconfig下新增加一个lvzhenjiang这个用户

2.1 把lvzhenjiang这个用户添加到kubernetes集群中,可以用来认证apiserver的连接

$ kubectl config set-credentials lvzhenjiang --client-certificate=./lvzhenjiang.crt --client-key=./lvzhenjiang.key --embed-certs=true

2.2 在kubeconfig下新增加一个lvzhenjiang这个账号

$ kubectl config set-context lvzhenjiang@kubernetes --cluster=kubernetes --user=lvzhenjiang

2.3 切换账号到lvzhenjiang,默认没有任何权限

$ kubectl config use-context lvzhenjiang@kubernetes
$ kubectl config use-context kubernetes-admin@kubernetes
# 注意:这个用户是k8s管理员用户

三、把user这个用户通过rolebinding绑定到clusterrole上,授予权限,权限只是在lvzhenjiang这个名称空间有效

3.1 把lvzhenjiang这个用户通过rolebinding绑定到clusterrole上

$ kubectl create rolebinding lvzhenjiang -n lvzhenjiang --clusterrole=cluster-admin --user=lvzhenjiang

3.2 切换到lvzhenjiang这个用户

$ kubectl config use-context lvzhenjiang@kubernetes

3.3 测试是否有权限

$ kubectl get pods -n lvzhenjiang
# 有权限操作这个名称空间
$ kubectl get pods
# 没有权限操作这个名称空间

3.4 添加一个lvzhenjiang的普通用户

$ useradd lvzhenjiang
$ cp -ar /root/.kube/ /home/lvzhenjiang/
$ chown -R lvzhenjiang.lvzhenjiang /home/lvzhenjiang/
$ su - lvzhenjiang
$ kubectl get pods -n lvzhenjiang
# 通过上面可以发现lvzhenjiang这个用户只能操作lvzhenjiang名称空间
*************** 当你发现自己的才华撑不起野心时,就请安静下来学习吧!***************
原文地址:https://www.cnblogs.com/lvzhenjiang/p/14417203.html