使用kubeadm部署Kubernetes集群时,证书与安全配置需遵循以下核心原则:
-
证书管理:
- 默认使用kubeadm生成自签名CA证书,但建议替换为企业内部CA签发的证书以增强信任链。通过修改
ClusterConfiguration中certificatesDir路径,并预置自定义CA文件(如ca.crt、ca.key)。 - 通过
apiserver-cert-extra-sans添加API Server的SAN扩展(如负载均衡IP/DNS),避免证书验证错误。
- 默认使用kubeadm生成自签名CA证书,但建议替换为企业内部CA签发的证书以增强信任链。通过修改
-
安全加固:
- 启用RBAC并限制
cluster-admin权限,使用最小权限原则分配ServiceAccount。 - 配置
kube-apiserver的--enable-admission-plugins参数,启用NodeRestriction、PodSecurityPolicy(或替代方案如Gatekeeper)等插件。 - 加密etcd存储(通过
--encryption-provider-config配置AES或KMS加密),确保静态数据安全。
- 启用RBAC并限制
-
网络策略:
- 部署CNI插件(如Calico/Cilium)并启用NetworkPolicy,隔离Pod间通信。
- 配置API Server的
--authorization-mode=Node,RBAC及--anonymous-auth=false,禁用匿名访问。
-
证书轮换:
- 使用
kubeadm alpha certs renew或配置ClusterConfiguration中的certificatesExpiration字段(v1.19+)实现自动轮换。
- 使用
-
审计与监控:
- 启用API Server审计日志(
--audit-log-path),记录关键操作。 - 集成Prometheus与Grafana监控集群证书过期时间及异常行为。
- 启用API Server审计日志(
完整方案需结合kubeadm-config.yaml自定义参数,并在初始化后通过kubectl apply -f部署网络策略及安全上下文约束(如Pod Security Standards)。