外部负载均衡器
当您使用任何主机提供的外部负载均衡器时,您可能会遇到一些配置问题,以使其与 cert-manager 协同工作。
本文档旨在帮助您为外部负载均衡器后面的实例配置 HTTP-01 挑战类型。
NAT 回环/Hairpin
第一个配置点是 NAT 回环。由于负载均衡器阻止其后面的实例访问其外部接口,您可能会遇到检查问题。
一些网络负载均衡器出于多种原因具有这种限制。它可以通过 iptables
重定向配置(称为 NAT 回环
)进行配置。
要检查您是否遇到了此问题,
- 请检查挑战的端点是否对公众可访问:
curl <endpoint>
- 请检查挑战端点是否无法从负载均衡器后面的内部访问:使用 SSH 在负载均衡器后面的节点上打开一个会话;然后启动与之前相同的命令:
curl <endpoint>
当 pre-check
失败时,可以在日志中找到 HTTP-01
挑战的端点。如果它没有出现在日志中,您可以通过 kubectl
命令检查挑战 URL。
<endpoint>
是用于从证书 颁发者
测试 HTTP-01 的 URL。例如,对于 Let's Encrypt,URL 的格式类似于 <domain>/.well-known/acme-challenge/<hash>
负载均衡器 HTTP 端点
如果您使用的是负载均衡器(在托管的 Kubernetes 服务之外),则应该能够将负载均衡器协议配置为 HTTP、HTTPS、TCP、UDP。现在,多个负载均衡器提供带有 Let's Encrypt 的免费 TLS 证书。
当对负载均衡器使用 HTTP(s) 协议时,它可以拦截挑战 URL,用它们的哈希值替换响应的验证哈希值。
在这种情况下,cert-manager 将失败 在查询端点时未获得预期响应,预期为 'xxxx' 但得到:yyyy(截断)
。
这种错误可能由于多种原因而抛出。这种情况表明响应格式正确,但不是预期的响应。解决方案是使用 TCP 协议配置负载均衡器,这样 HTTP 请求就不会被主机拦截。