Kubernetes集群的CA签名双向数字证书图示
Kubernetes 提供了基于 CA 签名的双向数字证书的认证方式,一般对于一个安全性要求比较高的集群,一般会选择双向数字证书的认证方式,而不采用 HTTP Base 或 Token 的认证方式的,所以对于搭建集群的安全设置,这种认证方式是需要掌握的。
api-server 作为 Master 节点的进程,像 Kubernetes 的其他组件都需要与之通信,所以这些证书的前提都是先在 Master 为 api-server 生成一个由 CA 证书签名的数字证书 server.crt,留意图一的过程。ca.key 是 CA 私钥,ca.crt 是 CA 证书,通过他们可以生成 api-server 的服务私钥。
然后配置一个 master_ssl.conf(此处不展开了,里面的内容主要是 Master 服务器的 hostname,IP 等信息),然后配合上述部署生成的 server.key 生成 server.csr。
最后通过 server.csr 和 ca.crt 和 ca.key 共同签发服务器的证书 server.crt。
下图展示的主要是 api-server 启动参数需要指定的一些文件。数字证书就是我们的主题,他是基于 CA 签名的数字证书 server.crt,然后就是 CA 证书 ca.crt 和服务私钥 server.key。注意启动参数具体需要的是哪个文件。
由于是基于 CA 签名的,所以客户端比如 kube-proxy/kubelet 这些进程,同样也是通过 ca.key 和 ca.crt 来生成 client.key 和 client.crt,客户端通过这两个文件,就可以跟 api-server 安全通信了。