kubernetes-认证-X509数字证书认证测试

260 阅读1分钟

X509 数字证书认证

image.png

X509客户端认证依赖于PKI证书体系,kubeadm部署Kubernetes集群时会自动生成所需要的证书,它们位于/etc/kubernetes/pki目录下

依赖到的PKI体系 image.png

另外,对Service Account的token进行签名还需要用到一个可选的密钥对儿

所有的证书

image.png

  • 各kubelet的证书可在Bootstrap过程中自动生成证书签署请求,而后由Kubernetes CA予以签署
  • 各kube-proxy、kube-scheduler和kube-controller-manager也都有相应的数字证书以完成向API Server的身份认证

X509数字证书认证测试

创建客户端私钥和证书签署请求,为了便于说明问题,以下操作在master节点上以/etc/kubernetes/为工作目录

step1 生成私钥

cd /etc/kubernetes/pki;
openssl genrsa -out ./mason.key 4096

image.png

step2 创建证书签署请求

openssl req -new -key /etc/kubernetes/pki/mason.key -out /etc/kubernetes/pki/mason.csr -subj "/CN=mason/O=developers" 

image.png

step3 由Kubernetes CA签署证书

openssl x509 -req -days 365 -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -in /etc/kubernetes/pki/mason.csr -out /etc/kubernetes/pki/mason.crt 

image.png

step4 将pki目录下的mason.crt、mason.key和ca.crt复制到某部署了kubectl的主机上,即可进行测试

root@k8s-node01:/etc/kubernetes/pki# scp -p /etc/kubernetes/pki/mason.key k8s-node02:/etc/kubernetes/pki/
mason.key                                                                                                                              100% 3243     5.6MB/s   00:00    
root@k8s-node01:/etc/kubernetes/pki# scp -p /etc/kubernetes/pki/mason.crt k8s-node02:/etc/kubernetes/pki/
mason.crt 

在k8s-node02测试

kubectl get pods -s "https://kubeapi.magedu.com:6443" --client-certificate=/etc/kubernetes/pki/mason.crt --client-key=/etc/kubernetes/pki/mason.key  --certificate-authority=/etc/kubernetes/pki/ca.crt

image.png