一套证书方案(4套即可)
etcd
1、etcd服务端证书
(etcd_server.key、etcd_server.crt):用于作server、peer两种功能,给etcd集群自己做服务端、作peer通信用
ps:etcd配置文件中下列配置用的就是该证书
ETCD_CERT_FILE=etcd_server.crt
ETCD_KEY_FILE=etcd_server.key
ETCD_PEER_CERT_FILE=etcd_server.crt
ETCD_PEER_KEY_FILE=etcd_server.key
ETCD_PEER_TRUSTED_CA_FILE=ca.crt
2、etcd客户端证书(etcd_client.key,etcd_client.crt):用作client,给kube-apiserver连接etcd时使用
在kube-apiserver的配置文件中需要用到
--etcd-cafile=ca.crt
--etcd-certfile=etcd_client.crt
--etcd-keyfile=etcd_client.key
apiserver
1、服务端证书
(apiserver.key,apiserver.crt):用作server,给kube-apiserver自己作为服务端用、还有用作kube-controller-manager为ServiceAccount自动颁发token使用私钥文件
注意:该证书在制作的时候,需要把所有kube-apiserver所在主机的ip地址何负载均衡地址都放进去,还有server网络的clusterIP的第一个ip地址,例如10.96.0.1
在kube-apiserver的配置文件中需要用到
--tls-cert-file=apiserver.crt
--tls-private-key-file=apiserver.key
--client-ca-file=ca.crt
在kube-controller-manager配置文件中用到
--service-account-private-key-file=apiserver.key
2、客户端证书
(client.key,client.crt):给kube-controller-mananger、kube-scheduler、kubelet、kube-proxy、以及kubectl作为客户端连接kube-apiserver
2.1 对于kubectl来说
[root@gzbh-hygon0000005.gzbh ~]# md5sum /root/.kube/config
3974cac839f740cf2fd132d0930b292c /root/.kube/config
[root@gzbh-hygon0000005.gzbh ~]# md5sum /etc/kubernetes/admin.conf
3974cac839f740cf2fd132d0930b292c /etc/kubernetes/admin.conf
看见没有,md5都一模一样,内容完全一致
admin.conf拷贝到了/root/.kube/config,因为kubectl固定去当前用户家目录下找配置
2.2 对于其他组件来说:
新建一个文件/etc/kubernetes/kubeconfig(内容同admin.conf),配置好vip,该文件就给kube-controller-mananger、kube-scheduler、kubelet、kube-proxy用了,大家作为客户端都一样
这些组件kube-controller-mananger、kube-scheduler、kubelet、kube-proxy的配置中都会指定
–kubeconfig=/etc/kubernetes/kubeconfig
二 该博客中的证书方案
该方案需要修正,请参考方案一,然后方案一的基础上加入:TLS bootstrapping 简化kubelet证书制作
1、所有的证书都由一个ca颁发
2、etcd就建一套证书,
用作服务端与peer
3、kube-apiserver一套证书,
用作etcd的客户端,用作apiserver自己的服务端
kube-apiserver开启了简单认证:各组件与API Server之间的通信仍然采用HTTPS,但不采用CA数字证书,这种认证机制与CA证书相比,安全性很低,不建议生产使用
# vim /opt/kubernetes/ssl/basic-auth.csv # 该文件可以考虑删掉试试
admin,admin,1
readonly,readonly,2
cat > /usr/lib/systemd/system/kube-apiserver.service << EOF
--basic-auth-file=/opt/kubernetes/ssl/basic-auth.csv \ # 该配置可以考虑删掉试试
4、kubelet的证书:TLS bootstrapping 简化kubelet证书制作
原理:https://www.cnblogs.com/linhaifeng/articles/15167217.html
配置