HAOJX

创建k8s用户账号

字数统计: 305阅读时长: 1 min
2020/10/22 Share

创建客户端证书

1
2
3
4
5
6
7
8
//这一步是生成客户端私钥
openssl genrsa -out client.key 2048

//根据私钥生成csr, /CN指定了用户名shenyi
openssl req -new -key client.key -out client.csr -subj "/CN=test"

//根据k8s的CA证书生成我们用户的客户端证书
sudo openssl x509 -req -in client.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out client.crt -days 365

用客户端证书去请求

1
2
3
4
5
6
7
8
//查看下endpoint
kubectl get endpoints

//其中 可以用 --insecure 代替 --cacert /etc/kubernetes/pki/ca.crt 从而忽略服务端证书验证
curl --cert ./client.crt --key ./client.key --cacert /etc/kubernetes/pki/ca.crt -s <https://192.168.0.53:6443/api>

//如果你忘了证书设置的CN(Common name)是啥 可以用下面的命令搞定
openssl x509 -noout -subject -in client.crt

把用户设置到config里面去

1
2
3
4
kubectl config --kubeconfig=/home/test/.kube/config \\
set-credentials test
--client-certificate=/home/test/ua/test/client.crt \\
--client-key=/home/test/ua/test/client.key

创建上下文

1
kubectl config --kubeconfig=/home/test/.kube/config set-context user_context --cluster=kubernetes  --user=test

指定上下文

1
kubectl config --kubeconfig=/home/test/.kube/config use-context user_context

之后进行设置role 和roleBinding 或者是ClusterRole和ClusterRoleBinding

role只能管理单个namespace 如果要管理多个namespace就用ClusterRole

这样这个用户就可以按照权限来查看了

CATALOG
  1. 1. 创建客户端证书
    1. 1.1. 用客户端证书去请求
    2. 1.2. 把用户设置到config里面去
    3. 1.3. 创建上下文
    4. 1.4. 指定上下文