k8s的ca以及相关证书签发流程
对于网站类的应用,网站管理员需要向权威证书签发机构(CA)申请证书,这通常需要花费一定的费用,也有非营利的证书签发机构,比如”Let’s Encrypt“可以为用户免费签发证书。但对于Kubernetes这类应用来讲,它通常部署在企业内部,其管理面组件不需要暴露到公网,所以就不需要向外部的证书签发机构申请证书,系统管理员就可以自已签发证书供内部使用。
本文通过介绍部分内部组件的ca证书签发流程,引导相关的证书签发过程。
1. kube-apiserver相关证书说明
本节我们使用简单的例子,介绍一下如何使用openssl签发证书,侧重介绍签发证书流程,具体证书配置还需要管理员根据实际情况填写。以kube-apiserver为例,它的启动参数有3处需要配置证书:
--client-ca-file=/yourdirectory/ca.crt
--tls-cert-file=/yourdirectory/server.crt
--tls-private-key-file=/yourdirectory/server.key
其中
- ca.crt即CA的证书,通常Kubernetes各个组件都配置相同的CA证书,
- server.crt即kube-apiserver的证书,它将在与客户端建立连接时发送给客户端,由客户端进行验证
- server.key即kube-apiserver的私钥,它不会发送给客户端,仅用于解密客户端发送的数据。
为了便于理解,我们假设有两位管理员参与证书签发流程,一位CA管理员负责管理CA的凭证并为他人提供签发证书的服务,一位管理员负责为kube-apiserver申请证书。
整体生成证书的流程如下