【Kubernetes运维篇】RBAC之创建集群用户管理K8S


需求:公司新入职两位运维同事,分别是zhangsan、lisi,刚入职肯定不能给K8S管理员权限,所以需要创建两个系统账号,分别对应不同的权限:

  • zhangsan用户:对uat名称空间拥有管理员权限
  • lisi用户:对所有命名空间拥有查看Pod的权限

一、创建zhangsan集群用户赋予uat名称空间管理员权限

第一步:生成一个私钥

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

第二步:生成一个证书请求

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

第三步:生产一个证书

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

第四步:将zhangsan用户加入集群用户中,用来认证apiserver的连接

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

验证:

kubectl config view

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rWU4RgDj-1689421099456)(D:\MD归档文档\IMG\image-20230715184722464.png)]

第五步:添加zhagnsan用户上下文

kubectl config set-context zhangsan@kubernetes --cluster=kubernetes --user=zhangsan

验证:

kubectl config view

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HPE4Bfwu-1689421099457)(D:\MD归档文档\IMG\image-20230715185003530.png)]

第六步:切换到zhangsan用户,默认没有任何权限

kubectl config use-context zhangsan@kubernetes

可以切换后,先切换回来管理用户

kubectl config use-context kubernetes-admin@kubernetes

第七步:创建uat名称空间 绑定zhangsan用户在uat名称空间拥有管理员权限

kubectl create namespace uat
kubectl create rolebinding zhangsan -n uat --clusterrole=cluster-admin --user=zhangsan

第八步:切换zhangsan用户,测试是否有权限

kubectl config use-context zhangsan@kubernetes
kubectl get pods -n uat

第九步:在Linux中添加一个zhagnsan系统用户,并赋予密码

useradd zhangsan
passwd zhangsan

第十步:将/root/.kube/目录复制到zhangsan用户家目录,并赋权

cp -rp /root/.kube /home/zhangsan
chown -R  zhangsan:zhangsan /home/zhangsan

第十一步:切换zhangsan用户修改/home/zhangsan/.kube/config只保留张三用户信息

su - zhangsan
vim .kube/config

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fSKFtQvY-1689421099458)(D:\MD归档文档\IMG\image-20230715191343109.png)]

测试使用zhangsan用户访问集群

kubectl get pods -n uat

OK,测试没问题后就可以吧Linux的zhangsan系统用户提交给新来的运维同事等,让新来的同事只有在uat命名空间操作的权限。

二、创建lisi集群用户赋予查看所有名称Pod权限

第一步:生成一个私钥

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

第二步:生成一个证书请求

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

第三步:生产一个证书

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

第四步:将lisi用户加入集群用户中,用来认证apiserver的连接

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

验证:

kubectl config view

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ptqlJ7Yy-1689421099458)(D:\MD归档文档\IMG\image-20230715191959112.png)]

第五步:添加lisi用户上下文

kubectl config set-context lisi@kubernetes --cluster=kubernetes --user=lisi

验证:

kubectl config view

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xfKLJPus-1689421099459)(D:\MD归档文档\IMG\image-20230715192102269.png)]

第六步:切换到lisi用户,默认没有任何权限

kubectl config use-context lisi@kubernetes

可以切换后,先切换回来管理用户

kubectl config use-context kubernetes-admin@kubernetes

第七步:创建clusterrole赋予查看Pod的权限,因为是查看所有命名空间Pod,所以这里使用clusterrole

cat clusterrole.yaml 
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: clusterrole-lisi
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "watch" ,"list"]
kubectl apply -f clusterrole.yaml

第八步:创建clusterrolebinding绑定lisi用户

kubectl create clusterrolebinding  lisi --clusterrole=clusterrole-lisi --user=lisi

第九步:切换lisi用户测试权限

kubectl config use-context lisi@kubernetes
kubectl get pods

第十步:在Linux中添加一个lisi系统用户,并赋予密码

useradd lisi
passwd lisi

第十步:将/root/.kube/目录复制到lisi用户家目录,并赋权

cp -rp /root/.kube /home/lisi
chown -R  lisi:lisi /home/lisi

第十一步:切换zhangsan用户修改/home/lisi/.kube/config只保留张三用户信息

su - lisi
vim .kube/config

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DTXWER3n-1689421099459)(D:\MD归档文档\IMG\image-20230715193213838.png)]

测试使用lisi用户访问集群

kubectl get pods

OK,至此结束!

猜你喜欢

转载自blog.csdn.net/weixin_45310323/article/details/131743295