Ingress TLS终止核心是Ingress Controller在入口层解密HTTPS流量并转为HTTP转发后端,需将证书存为同命名空间Secret、在Ingress中声明tls规则,默认自动308重定向HTTP至HTTPS。

在 Kubernetes Ingress 中配置 TLS 证书实现 HTTPS 流量终止,核心是让 Ingress Controller 在入口层完成 SSL/TLS 解密,把加密请求转为普通 HTTP 流量转发给后端服务。这个过程不依赖后端应用自己处理 HTTPS,既简化部署又提升安全性。
准备并存储 TLS 证书到 Secret
证书必须以 Kubernetes Secret 形式提供,Ingress 资源通过 tls.secretName 引用它。Secret 需存放在与 Ingress 相同的命名空间中。
- 生成自签名证书(测试/内网适用):
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \<br> -keyout tls.key \<br> -out tls.crt \<br> -subj "/CN=yourdomain.com/O=MyOrg"
- 创建 Secret:
kubectl create secret tls my-tls-secret \<br> --key tls.key \<br> --cert tls.crt \<br> -n default
- 生产环境建议用 cert-manager + Let’s Encrypt 自动签发和续期,避免手动轮换风险
在 Ingress 资源中声明 TLS 规则
Ingress 的 spec.tls 字段指定哪些域名启用 HTTPS,并绑定对应 Secret;rules 部分定义实际路由逻辑。注意:只要配置了 TLS,Ingress Controller 默认会对 HTTP 请求发起 308 重定向到 HTTPS(端口 443),无需额外注解。
- 示例 YAML:
apiVersion: networking.k8s.io/v1<br>kind: Ingress<br>metadata:<br> name: example-ingress<br> annotations:<br> nginx.ingress.kubernetes.io/ssl-redirect: "true" # 显式开启重定向(默认已启用)<br>spec:<br> tls:<br> - hosts:<br> - yourdomain.com<br> secretName: my-tls-secret<br> rules:<br> - host: yourdomain.com<br> http:<br> paths:<br> - path: /<br> pathType: Prefix<br> backend:<br> service:<br> name: my-service<br> port:<br> number: 80
确认 Ingress Controller 支持并启用了 TLS 终止
不是所有 Ingress Controller 都默认启用 HTTPS 支持。以 nginx-ingress 为例,需确保其 Deployment 中挂载了证书目录、监听了 443 端口,且 Service 类型支持外部访问(如 LoadBalancer 或 NodePort 暴露 443)。
- 检查控制器 Pod 日志是否有证书加载成功提示,例如:
"successfully validated certificate for host 'yourdomain.com'" - 验证 Service 是否开放 443 端口:
kubectl get svc -n ingress-nginx(或你部署控制器的命名空间) - 若使用 Gateway API,TLS 终止由
Gateway资源定义,配合HTTPRoute实现路由,机制类似但资源模型更解耦
验证 HTTPS 访问与重定向行为
部署完成后,用浏览器或 curl 测试实际效果:
- 访问
https://yourdomain.com应正常返回后端响应 - 访问
http://yourdomain.com应收到 308 Permanent Redirect 响应,Location 头指向https://... - 用
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com检查证书链是否完整、域名匹配、未过期 - 如遇连接失败,优先排查 DNS 解析、防火墙放行 443、Secret 名称拼写、Ingress 所在命名空间是否一致


















