作为技术支持工程师,常用解决方案如下:
- 生成CA证书:使用OpenSSL创建自签名CA。
- 签发服务证书:为每个服务生成TLS证书并由CA签名,确保包含K8s DNS名称(如
<service>.<namespace>.svc.cluster.local
)。 - 创建Kubernetes Secret:将证书和私钥存储为TLS类型Secret。
- 挂载证书到Pod:在Deployment中配置volumeMounts,将Secret挂载到容器指定路径。
- 配置应用TLS:修改服务端和客户端应用配置,加载证书并启用HTTPS/mTLS通信。
- 启用客户端CA验证:将CA证书存入ConfigMap并挂载到客户端Pod,配置应用信任该CA。
- 验证加密:通过
curl -v --cacert /path/to/ca.crt https://<service>
或检查日志确认TLS握手成功。
补充方案:若需简化,可部署服务网格(如Istio),通过Sidecar自动注入实现mTLS:
- 安装Istio并启用自动mTLS。
- 配置命名空间启用
STRICT
模式。 - 应用无需修改代码,Sidecar代理自动处理加密。