k8s签署CFSSL创建证书

一、证书结构图

  • kubernetes提供一个CA根证书平台
  • apiserver、kubelet等服务等证书均由kubernetes的CA根证书机构颁发
  • 由于是同一CA机构颁发的证书,apiserver和kubelet之间也能自由进行访问

  • etcd在集群外,etcd相关的证书均由etcd的CA机构颁发

二、kubeadm部署集群中证书

  • 证书都位于/etc/kubernetes/pki目录下:
  • 其中ca.crt、ca.key为kubernetes的ca机构,其他证书均由该证书机构颁发

三、集群相关证书类型

  • client certifcate:用于服务端认证客户端,例如etcdctl、etcd proxy、fleetctl、docker客户端
  • server certificate:服务端使用,客户端以此验证服务端身份,例如docker服务端、kube-apiserver
  • peer certfiicate:双向证书、用于etcd集群成员间通信

根据认证对象可以将证书分成三类:

  • 服务器证书 server cert、
  • 客户端证书client cert、
  • 对等证书peer cert(表示即是server cert又是client cert)

在kubernetes集群中需要的证书种类如下:

  • etcd节点需要标识自己服务的server cert、也需要client cert与etcd集群其他节点交互,当然可以分别指定2个证书、也可以使用一个对等证书
  • master节点需要标识apiserver服务的server cert、也需要client cert连接etcd集群、这里也使用一个对等证书
  • kubectl calico kube-proxy只需要client cert、因此证书请求中hosts字段可以为空
  • kubelet的证书比较特殊、不是手动生成、他由node节点TLS bootstrap向apiserver请求、由master节点的controller-manager自动签发、包含一个client cert和一个server cer

四、cfssl的使用(自签证书)

  所有的证书颁发出来都需要两个步骤:1、有一个证书颁发机构  2、提交证书申请,根据申请CA机构颁发证书给我们、cfssl也一样,使用如下

  • 初始化一个证书颁发机构      -- cfssl gencert -initca ca-csr.json | cfssljson -bare ca
  • 使用证书机构颁发证书给别人  --initca 传入ca机构颁发证书

1、创建证书颁发机构如下:

 以上,CA颁发机构根证书生成成功:ca-key.pem和ca.pem,其中csr可以忽略,不用关注

posted @ 2020-12-03 22:32  南昌拌粉的成长  阅读(898)  评论(0编辑  收藏  举报