一. Cert Manager 的局限性
我们在之前的文章中演示了 Cert Manager 自动签发和管理 TLS 证书的过程,但在实践中会遇到一些问题:
1.HTTP 验证问题
cert-manager 默认使用 HTTP-01 验证时,需要暴露服务器或负载均衡的 80 端口给互联网。如果环境比较敏感,或者不想对外暴露服务,这会带来极大的安全隐患。
2.DNS 验证问题
采用 DNS-01 验证虽然只需要有 DNS 的 API 修改权限,但是对于没有公网 DNS 控制权的用户来说非常麻烦,并且无法保证安全性,需要额外的审计手段。
3.缺乏额外防护
虽然 cert manager 可以完成证书自动化,但它本身不提供 CDN、WAF、流量限制等功能,即便对于个人测试环境也显得很单薄。
所以,如果只需要快速实现 HTTPS 并配合一些流量管理,cert manager 并非最优选择。
二. Cloudflare 免费模式下的优势
针对个人测试环境等,Cloudflare 的免费套餐已经提供了很多的基础实用功能。

1.免费的 CDN 与 DNS
提供最基本的 CDN 缓存与 DNS 服务器功能。
2.免费的 SSL 证书
提供免费通用的 SSL/TLS 证书保护我们的站点(类似 AWS Certificate Manager),并且支持 Cloudflare 站点到我们业务站点之间通过自签名证书做 TLS 加密。
3.免费的 WAF 与流量限制
即使免费模式,也能设置 IP 访问限制、速率限制、防爬虫等规则,弥补了 cert manager 等工具的不足。
三. 解决方案概览
我们通过 Cloudflare + Kubernetes Ingress + 自签名证书构建一个测试环境,实现:
1.域名代理
外部访问经过 Cloudflare,再由 Ingress 转发到后端服务;隐藏我们业务服务器的 IP 地址。
2.HTTPS 加密
由 Cloudflare 提供 SSL/TLS 终端,供给浏览器访问域名使用;Cloudflare 和 Ingress 之间使用自签名证书加密流量。
3.流量控制
通过 Cloudflare 页面设置简单的 IP 访问限制和速率限制。
四.配置示例
1.配置 DNS 和网络安全组
首先我们查看 Cloudflare 名称服务器:

然后把域名的 DNS 服务器修改为 Cloudflare 指定的服务器(这里以阿里云购买的域名为例):

配置生效要等待一段时间,我们可以同时配置 DNS 记录:



















