新:在TwitterMastodon获取项目更新。

外部负载均衡器

当您使用任何主机提供的外部负载均衡器时,您可能会遇到一些配置问题,以使其与 cert-manager 协同工作。

本文档旨在帮助您为外部负载均衡器后面的实例配置 HTTP-01 挑战类型。

NAT 回环/Hairpin

第一个配置点是 NAT 回环。由于负载均衡器阻止其后面的实例访问其外部接口,您可能会遇到检查问题。

一些网络负载均衡器出于多种原因具有这种限制。它可以通过 iptables 重定向配置(称为 NAT 回环)进行配置。

要检查您是否遇到了此问题,

  1. 请检查挑战的端点是否对公众可访问: curl <endpoint>
  2. 请检查挑战端点是否无法从负载均衡器后面的内部访问:使用 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 请求就不会被主机拦截。