文章目录
- 一、创建zhangsan集群用户赋予uat名称空间管理员权限
- 二、创建lisi集群用户赋予查看所有名称Pod权限
需求:公司新入职两位运维同事,分别是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)]](https://img-blog.csdnimg.cn/efc1b505787e4d138f9d637fab44f77a.png)
第五步:添加zhagnsan用户上下文
kubectl config set-context zhangsan@kubernetes --cluster=kubernetes --user=zhangsan
验证:
kubectl config view
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HPE4Bfwu-1689421099457)(D:\MD归档文档\IMG\image-20230715185003530.png)]](https://img-blog.csdnimg.cn/12f98eb643d541aea9f0ef4ff539ee41.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)]](https://img-blog.csdnimg.cn/70ef8b0432ff47b4ab054ceb48d9348f.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)]](https://img-blog.csdnimg.cn/6dc10db0d84a4213ab931ad265f3c031.png)
第五步:添加lisi用户上下文
kubectl config set-context lisi@kubernetes --cluster=kubernetes --user=lisi
验证:
kubectl config view
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xfKLJPus-1689421099459)(D:\MD归档文档\IMG\image-20230715192102269.png)]](https://img-blog.csdnimg.cn/13c707b77abf4a479ab2f16b33fc81dc.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)]](https://img-blog.csdnimg.cn/2ffad46e85e04627816a021635b39937.png)
测试使用lisi用户访问集群
kubectl get pods
OK,至此结束!