首页 > kubernetes(k8s) > k8s HTTPS安全机制CA认证
2020
02-23

k8s HTTPS安全机制CA认证

基于CA签名的双向数字证书的生成过程如下(二进制安装):

  • 为kube-apiserver生成一个数字证书, 并用CA证书签名
  • 为kube-apiserver进程配置证书相关的启动参数, 包括CA证书(用于验证客户端证书的签名真伪) 、 自己的经过CA签名后的证书及私钥。
  • 为每个访问Kubernetes API Server的客户端(如kubecontroller-manager、 kube-scheduler、 kubelet、 kube-proxy及调用APIServer的客户端程序kubectl等) 进程都生成自己的数字证书, 也都用CA证书签名, 在相关程序的启动参数里增加CA证书、 自己的证书等相关参数。

1.设置kube-apiserver的CA证书相关的文件和启动参数使用OpenSSL工具在Master服务器上创建CA证书和私钥相关的文件:(注意: 在生成ca.crt时, -subj参数中”/CN”的值为Master主机名)

2.准备master_ssl.cnf文件, 该文件用于x509 v3版本的证书。 在该文件中主要需要设置Master服务器的hostname(k8s-master) 、 IP地址(192.168.66.20) , 以及Kubernetes Master Service的虚拟服务名称(kubernetes.default等) 和该虚拟服务的ClusterIP地址(10.96.0.1)

master_ssl.cnf:

基于master_ssl.cnf创建server.csr和server.crt 在生成server.csr时,-subj参数中”/CN”的值需为Master的主机名:

在全部执行完后会生成6个文件:

将这些文件复制到一个目录下(例如/var/run/kubernetes/ 没有可以新建) , 然后设置kube-apiserver的三个启动参数“–client-ca-file”“–tls-cert-file”和“–tlsprivate-key-file”, 分别代表CA根证书文件、 服务端证书文件和服务端私
钥文件:

然后重启kube-apiserver服务,如果是kubeadmin容器安装的 重启下kubelet

2.设置kube-controller-manager的客户端证书、 私钥和启动参数

其中, 在生成cs_client.crt时, -CA参数和-CAkey参数使用的是API
Server的ca.crt和ca.key文件。(保持和上面生成在同一目录,即可,否则自行指定ca.crt 和 ca.key 目录也可以)

接下来创建/etc/kubernetes/kubeconfig文件(kube-controller-manager与kube-scheduler共用) , 配置客户端证书等相关参数, 内容如下:

vim /etc/kubernetes/kubeconfig

然后设置kube-controller-manager服务的启动参数:

最后重启kube-controller-manager服务

3.设置kube-scheduler启动参数

重启kube-scheduler服务。

4.设置每个Node上kubelet的客户端证书、 私钥和启动参数

接下来创建/etc/kubernetes/kubeconfig文件(kubelet和kube-proxy进程共用) , 配置客户端证书等相关参数, 内容如下:

然后设置kubelet服务的启动参

5.设置kube-proxy的启动参数

后续节点依照第4步 第5步 操作即可

至此, 一个基于CA的双向数字证书认证的Kubernetes集群环境就搭
建完成了。

6.设置kubectl客户端使用安全方式访问API Server

最后编辑:
作者:shooter
这个作者貌似有点懒,什么都没有留下。