k8s使用自定义证书将客户端认证接入到API Server

网友投稿 280 2022-09-12

k8s使用自定义证书将客户端认证接入到API Server

自定义证书使用kubectl认证接入API Serverkubeconfig是API Server的客户端连入API Server时使用的认证格式的客户端配置文件。使用kubectl config view查看其配置 1 kubectl config view 2 apiVersion: v1 3 clusters: #集群列表 4 - cluster: 5 certificate-authority-data: DATA+OMITTED 6 server: https://192.168.1.100:6443 7 name: kubernetes 8 contexts: #上下文列表(使用哪个账号访问哪个集群) 9 - context: 10 cluster: kubernetes 11 user: kubernetes-admin 12 name: kubernetes-admin@kubernetes 13 current-context: kubernetes-admin@kubernetes #当前使用的账号 14 kind: Config 15 preferences: {} 16 users: #用户列表 17 - name: kubernetes-admin 18 user: 19 client-certificate-data: REDACTED 20 client-key-data: REDACTED 创建、删除集群\用户\上下文列表kubectl config (set-cluster\delete-cluster)\(set-credentials)\(set-context\delete-context)创建账号前需要创建账号用于服务器端的认证的证书及密钥切换用户:kubectl config use-context使用kubeadm创建的集群,集群的证书及密钥在/etc/kubernetes/pki下。里面的证书和私钥都有各自的功能;如:apiserver-kubectl-client.crt和apiserver-kubectl-client.key就可以用来给创建的账户所使用。示例:使用openssl创建用于自己创建账号所使用的证书及密钥(自签)使用带有自签证书的用户在集群中创建用户,切换用户查看权限:1.创建一个smbands的用户私钥:  (umask 077; openssl genrsa -out smbands.key 2048)   注意:证书持有者名称就是用户名,所以用户名必须与证书持有者名称一致;  如:用户名为smbands,那么持有者也应该为smbands。创建完成后会生成一个smbands.key的文件。2.基于刚生成的私钥去生成一个证书生成请求smbands.csr   openssl req -new -key smbands.key -out smbands.csr -subj "/CN=smbands"   会生成一个生成证书请求文件smbands.csr3.使用ca.crt签署证书   openssl x509 -req -in smbands.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out smbands.crt -days 365   生成smbands的用户证书smbands.crt使用:openssl x509 -in smbands.crt -text -noout查看生成的证书信息使用创建的用户在集群中创建账户和上下文:1.在集群中创建用户:  kubectl config set-credentials smbands --client-certficate=URL/smbands.crt --client-key=URL/smbands.key --embed-certs=true2.在集群中为新建的用户定义上下文,使用户可以切换至创建的用户:  kubectl config set-context smbands@kubernetes(用户名@集群名) --cluster=kubernetes --user=smbands3.切换集群账户:  kubectl config use-context smbands@kubernetes此时集群账户就切换为smbands了,不过这样默认的用户是没有管理员权限的。下一篇将会写到如何使用RBAC将自定义用户绑定到自定义角色分配自定义权限。此时的kubeconfig如下显示: 1 kubectl config view 2 apiVersion: v1 3 clusters: 4 - cluster: 5 certificate-authority-data: DATA+OMITTED 6 server: https://192.168.1.100:6443 7 name: kubernetes 8 contexts: 9 - context: 10 cluster: kubernetes 11 user: kubernetes-admin 12 name: kubernetes-admin@kubernetes 13 - context: 14 cluster: kubernetes 15 user: smbands 16 name: smbands@kubernetes 17 current-context: smbands@kubernetes 18 kind: Config 19 preferences: {} 20 users: 21 - name: kubernetes-admin 22 user: 23 client-certificate-data: REDACTED 24 client-key-data: REDACTED 25 - name: smbands 26 user: 27 client-certificate-data: REDACTED 28 client-key-data: REDACTED

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:k8s基于canel的网络策略
下一篇:k8s的flannel网络插件配置
相关文章

 发表评论

暂时没有评论,来抢沙发吧~