k8s TLS bootstrap解析-k8s TLS bootstrap流程分析
概述
当k8s集群开启了TLS认证后,每个节点的kubelet组件都要使用由kube-apiserver的CA签发的有效证书才能与kube-apiserver通信;当节点非常多的时候,为每个节点都单独签署证书是一件非常繁琐而又耗时的事情。
此时k8s TLS bootstrap功能应运而生。
k8s TLS bootstrap功能就是让kubelet先使用一个预先商定好的低权限的bootstrap token连接到kube-apiserver,向kube-apiserver申请证书,然后kube-controller-manager给kubelet动态签署证书,后续kubelet都将通过动态签署的证书与kube-apiserver通信。
TLS bootstrap涉及组件相关参数
1.kube-apiserver
(1)--client-ca-file
:认证客户端证书的CA证书;
(2)--enable-bootstrap-token-auth
:设置为true则代表开启TLS bootstrap特性;
2.kube-controller-manager
(1)--cluster-signing-cert-file
、--cluster-signing-key-file
:用来签发kubelet证书的CA证书和私钥,这里的kubelet证书指的是用来跟kube-apiserver通信,kube-apiserver认证kubelet身份的证书,所以–cluster-signing-cert-file指定的值与kube-apiserver的–client-ca-file指定值一致,而私钥则也是对应的私钥;
(2)--cluster-signing-duration
:签发给kubelet的证书有效期;
3.kubelet
(1)--bootstrap-kubeconfig
:TLS bootstrap的配置文件,文件中一般包含bootstrap token和master url等信息;
(2)--kubeconfig
:在kubelet的CSR被批复并被kubelet取回时,一个引用所生成的密钥和所获得证书的kubeconfig文件会被写入到通过 --kubeconfig所指定的文件路径下,而证书和密钥文件会被放到–cert-dir所指定的目录中;
(3)--rotate-certificates
:开启证书轮换,kubelet在其现有证书即将过期时通过创建新的CSR来轮换其客户端证书。
详细流程解析
下面以kubeadm使用k8s TLS bootstrap将一个node节点加入已有的ma