Kubernetes中CA证书的不同功能是什么?

Kubernetes中CA证书的不同功能是什么?

问题描述:

我是kubernetes的新手。在这里,我对kubernetes集群中使用的CA证书有些疑惑。据我所知在kubernetes中有几个CA证书,但仍不清楚它们的每个功能。这是我对他们的理解,但他们仍然不确定。Kubernetes中CA证书的不同功能是什么?

  1. 根CA还知道作为服务CA,

    • 其签署certwhich在与--tls证书文件和--tls-私钥文件的API服务器配置的API服务器。
    • 此CA证书是在KUBE控制器的管理器被配置为与--root-CA-文件
  2. 客户端CA

    • 此CA证书可以是由根CA签署中间CA证书证书。
    • 它用于签署集群中的各个组件,有助于在启用RBAC和NODE授权时识别其身份。例如,签署kube-controller-manager,kube-scheduler,kube-proxy,kubelet。
    • 可以在API服务器被配置为与--client-CA-文件
  3. requestheader客户CA
    • 此CA证书也可以是由根CA证书签名的中间CA证书。
    • 还不明白这个CA用于什么? CA文件的哪种情况,只是发现如果部署了度量服务器,它将请求请求头相关的证书和关键字
    • ,以便在kube中为--proxy-client-cert-file和--proxy-client-key-file -apiserver,这些参数的值是什么?可以使用Kubelet证书和密钥?

除了这些CA证书,一些其他证书相对混乱也遇到过。

  1. - kube-apiserver和kube-controller-manager中的服务帐户密钥文件参数,可以配置哪个文件?是apiserver密钥文件还是ROOT CA密钥文件?
  2. 可在kube-controller-manager中设置为
    --cluster-signing-cert-file和-cluster-signing-key-file?我们可以使用客户端CA和客户端CA密钥文件吗?

了很好的总结是在https://github.com/kubernetes/kubernetes/issues/54665#issuecomment-340960398

的请求报头CA用于验证由认证代理与请求头设置的用户信息一起呈现一个客户端证书。代理对用户进行身份验证,代理请求,并在标头中设置用户名/组。 API服务器在信任任何标题中的用户信息之前验证客户端证书。