认证是确定用户或客户端身份的过程。在 K8s 中,当用户或客户端向 API Server 发送哀求时,API Server 需要验证哀求者的身份,确保只有正当的用户或客户端能够访问集群资源。
(二)常见的认证方式
客户端证书认证
客户端证书认证是一种基于公钥基础设施(PKI)的认证方式。K8s 集群的管理员会为每个用户或客户端生成一对公私钥和证书。用户在向 API Server 发送哀求时,需要提供客户端证书,API Server 会使用预先设置的 CA 证书来验证客户端证书的有效性。如果证书有效,则认为哀求者的身份正当。
设置客户端证书认证的步骤如下:
生成 CA 证书和私钥。
为用户生成私钥和证书署名哀求(CSR)。
使用 CA 证书和私钥对用户的 CSR 进行署名,生成用户证书。
在 kubeconfig 文件中设置用户的证书信息。
Token 认证
Token 认证是通过一个预先分配的令牌(Token)来验证用户身份。用户在哀求 API Server 时,需要在哀求头中包含 Token。API Server 会验证 Token 的有效性,如果 Token 有效,则允许哀求继承处理。Token 可以是静态的,也可以是动态生成的。例如,ServiceAccount Token 是 K8s 中为 Pod 主动生成的一种 Token,用于 Pod 与 API Server 之间的认证。
HTTP 基本认证
HTTP 基本认证是一种简单的认证方式,用户在哀求时需要提供用户名和暗码。API Server 会验证用户名和暗码的正确性。但由于 HTTP 基本认证是以明文形式传输用户名和暗码的,存在一定的安全风险,通常需要结合 HTTPS 来使用。