# 创建用户【chz】跟【ClusterRole:cluster-admin】的绑定文件【ClusterRoleBinding-cluster-admin-chz.yaml】
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: cluster-admin-chz-binding
namespace: default
subjects:
- kind: User
name: chz
apiGroup: ""
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: ""
执行【kubectl apply -f ClusterRoleBinding-cluster-admin-chz.yaml】
# 创建用户【chz】的key
openssl genrsa -out chz.key 2048
# 创建用户【chz】的csr
openssl req -new \
-key chz.key \
-out chz.csr \
-subj "/CN=chz/O=chz"
注意上面的【-subj “/CN=chz/O=chz”】中的CN非常重要,它表明这是用户chz的csr
# 创建用户【chz】的crt
openssl x509 -req \
-in chz.csr \
-CA /etc/kubernetes/pki/ca.crt \
-CAkey /etc/kubernetes/pki/ca.key \
-CAcreateserial \
-out chz.crt \
-days 3650
# 访问api-server的时候带上用户chz的key和crt
使用用户chz的语言访问api-server
curl -k \
--cert /chz/install/k8s/api-server/chz.crt \
--key /chz/install/k8s/api-server/chz.key \
https://192.168.44.228:6443/api
结果能正常显示:
使用非用户chz的证书访问api-server,结果不能正常显示:
# 个人理解
如果您是想开发一套管理k8s的系统的话,没必要为每一个用户都创建证书,创建一个管理员证书就够了。用户的认证放在管理系统里面做就可以。