k8s使用自定義證書將客戶端認證接入到API Server


自定義證書使用kubectl認證接入API Server
kubeconfig是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.csr
3.使用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=true
2.在集群中為新建的用戶定義上下文,使用戶可以切換至創建的用戶:
  kubectl config set-context smbands@kubernetes(用戶名@集群名) --cluster=kubernetes --user=smbands
3.切換集群賬戶:
  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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM