(1)用户创建了key
(2)然后使用该key,生成证书签名请求,附带上自己的名字
(3)然后,发送该请求到管理员
(4)管理员使用一个key,创建证书签名请求对象
(5)证书签名请求对象,像创建其他kubernetes对象那样,使用mainfest文件:
spec.groups指定了用户应属的组,request 字段指定证书签名请求,不过证书签名请求并不是直接填充到该字段上,而是应经过编码
(6)一旦对象被创建,所有的证书签名请求都能够管理员看到。通过运行kubectl get csr命令
(7)授权请求使用kubectl certificate approve命令
(8)查看生成的证书,可以使用YAML的形式,生成的证书如下
如之前所说,它是基于base64编码后的,需要进行解码
让我们来看下,它是如何工作的,这些工作是由谁来完成的?
如果你查看kubernetes controll plane,你将会看到kube-api server、scheduler、controller-manager等,哪个组件负责证书相关的操作呢?
所有的证书相关操作,被controller manage所执行。如果你仔细查看controller manager,你将会看到其中有一些controllers,作为CSR Approving,CSR Signing等,它们负责执行这些具体的认证细节。
我们知道,若想要签名证书,则需要相应的certificate和private key。而controller manager服务有两个选项,就是用来指定它的