引言

一、K8s用户证书简介

K8s用户证书是指K8s集群中用于认证用户身份的数字证书。用户证书包括客户端证书和客户端密钥,客户端证书用于用户身份的验证,客户端密钥用于加密客户端与API Server之间的通信。

二、用户证书的配置与管理

1. 环境准备

在配置用户证书之前,需要确保以下环境已经搭建完成:

  • K8s集群
  • 证书颁发机构(CA)
  • kubectl命令行工具

2. 生成CA证书

首先,需要生成CA证书和私钥,用于签发用户证书。以下使用OpenSSL生成CA证书的示例代码:

# 生成CA私钥
openssl genpkey -algorithm RSA -out ca.key -pkeyopt rsa_keygen_bits:4096

# 生成CA证书
openssl req -x509 -new -key ca.key -out ca.crt -days 3650

3. 生成用户证书

使用CA证书和私钥为用户生成客户端证书和客户端密钥。以下使用OpenSSL生成用户证书的示例代码:

# 生成客户端私钥
openssl genpkey -algorithm RSA -out user.key -pkeyopt rsa_keygen_bits:4096

# 生成客户端证书请求
openssl req -new -key user.key -out user.csr

# 签发客户端证书
openssl x509 -req -in user.csr -CA ca.crt -CAkey ca.key -CAserial ca.srl -days 365 -out user.crt

4. 配置kubectl

将生成的客户端证书和客户端密钥配置到kubectl中,以便kubectl使用证书进行认证。以下配置kubectl的示例代码:

# 配置kubectl
kubectl config set-credentials <username> --client-certificate=/path/to/user.crt --client-key=/path/to/user.key --embed-certs=true

# 配置kubeconfig
kubectl config set-context <context> --cluster=<cluster-name> --user=<username> --namespace=<namespace>

5. 验证用户证书

使用kubectl访问K8s API Server,验证用户证书是否配置成功。以下验证用户证书的示例代码:

# 查看集群信息
kubectl cluster-info

如果输出信息中包含认证成功的提示,则说明用户证书配置成功。

三、用户证书的吊销与管理

当用户离职或不再需要访问K8s集群时,应及时吊销其用户证书,避免潜在的安全风险。以下吊销用户证书的示例代码:

# 吊销客户端证书
openssl ca -revoke user.crt -CAfile ca.crt -CAkey ca.key -CAserial ca.srl

四、总结

K8s用户证书的配置与管理是保障K8s集群安全性的重要环节。通过本文的解析,用户可以掌握K8s用户证书的配置与管理方法,构建一个安全可靠的K8s集群。