目录
一、生成证书
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名称空间