前戏
为确保安全,
kubernetes
系统各组件需要使用 x509
证书对通信进行加密和认证。CA (Certificate Authority) 是自签名的根证书,用来签名后续创建的其它证书。
CA 证书是集群所有节点共享的,只需要创建一次,后续用它签名其它所有证书。
本文档使用
CloudFlare
的 PKI 工具集 cfssl 创建所有证书
安装 cfssl 工具集
创建配置文件
-
signing
:表示该证书可用于签名其它证书(生成的 ca.pem
证书中 CA=TRUE
); -
server auth
:表示 client 可以用该该证书对 server 提供的证书进行验证; -
client auth
:表示 server 可以用该该证书对 client 提供的证书进行验证; -
"expiry": "876000h"
:证书有效期设置为 100 年;
创建证书签名请求文件
-
CN:Common Name
:kube-apiserver 从证书中提取该字段作为请求的用户名 (User Name),浏览器使用该字段验证网站是否合法; -
O:Organization
:kube-apiserver 从证书中提取该字段作为请求用户所属的组 (Group); - kube-apiserver 将提取的
User、Group
作为 RBAC
授权的用户标识;
注意:
- 不同证书 csr 文件的 CN、C、ST、L、O、OU 组合必须不同,否则可能出现
PEER'S CERTIFICATE HAS AN INVALID SIGNATURE
错误; - 后续创建证书的 csr 文件时,CN 都不相同(C、ST、L、O、OU 相同),以达到区分的目的;