本教程将指导您如何为 Kubernetes Ingress 手动绑定 TLS 证书,实现 HTTPS 访问安全加密。
Kubernetes Ingress TLS 证书绑定教程
3 mins
622 words
Loading views
准备工作h2
在开始之前,请确保您已经:
- 拥有 Kubernetes 集群的管理权限
- 准备有效的 TLS 证书和私钥文件
- 了解目标域名的 Ingress 配置信息
操作步骤h2
步骤 1:创建证书文件h3
首先,在集群节点上创建 TLS 证书和私钥文件。
# 创建 TLS 证书文件cat > tls.crt <<EOF-----BEGIN CERTIFICATE-----[您的证书内容]-----END CERTIFICATE-----EOF
# 创建 TLS 私钥文件cat > tls.key <<EOF-----BEGIN RSA PRIVATE KEY-----[您的私钥内容]-----END RSA PRIVATE KEY-----EOF步骤 2:创建 Kubernetes TLS Secreth3
使用 kubectl 命令创建 TLS 类型的 Secret 资源:
kubectl create secret tls tls-a --cert tls.crt --key tls.key执行成功后,系统会返回:
secret/tls- created步骤 3:验证 Ingress 资源h3
在绑定证书前,先查看现有的 Ingress 资源:
kubectl get ingress该命令会列出所有 Ingress 资源,例如:
NAME CLASS HOSTS ADDRESS PORTS AGEnetwork-a nginx example.com 192.168.1.100 80 5d步骤 4:为 Ingress 绑定 TLS 证书h3
使用 kubectl patch 命令为指定的 Ingress 资源添加 TLS 配置:
kubectl patch ingress network-a -p '{"spec":{"tls":[{"hosts":["example.com"],"secretName":"tls-a"}]}}'执行成功后,系统会返回:
ingress.networking.k8s.io/network-a patched验证配置h2
验证 Secret 创建h3
kubectl get secret tls-a验证 Ingress 更新h3
kubectl get ingress network-a -o yaml检查输出中是否包含 TLS 配置部分:
spec: tls: - hosts: - example.com secretName: tls-a测试 HTTPS 访问h2
使用 curl 命令测试 HTTPS 连接:
curl -I https://example.com应该收到类似以下的响应:
HTTP/2 200完整架构示意图h2
清理资源(可选)h2
如果需要删除 TLS Secret:
kubectl delete secret tls-a故障排除h2
常见问题h3
- 证书格式错误
- 确保证书和私钥格式正确
- 检查文件内容是否完整
- Secret 创建失败
- 验证证书和私钥是否匹配
- 检查 Kubernetes 权限
- HTTPS 不生效
- 确认 Ingress Controller 支持 TLS
- 检查域名解析是否正确
诊断命令h3
# 查看 Secret 详情kubectl describe secret tls-a
# 查看 Ingress 事件kubectl describe ingress network-a总结h2
通过以上步骤,您已经成功为 Kubernetes Ingress 配置了 TLS 证书,实现了域名的 HTTPS 加密访问。这种配置方式确保了数据传输的安全性,是生产环境中的标准实践。
整个流程可以总结为:
- 准备阶段:创建证书和私钥文件
- 存储阶段:将证书存储为 Kubernetes Secret
- 配置阶段:将 Secret 绑定到 Ingress 资源
- 验证阶段:测试 HTTPS 连接是否正常工作
这样就完成了整个 TLS 证书的绑定过程,您的应用现在可以通过