外部負載平衡器
當您使用任何主機提供的外部負載平衡器時,您可能會遇到一些組態問題,使其與 cert-manager 一起運作。
本文件旨在幫助您為外部負載平衡器後的實例配置 HTTP-01 挑戰類型。
NAT 回路/髮夾
第一個配置點是 NAT 回送。您可能會遇到檢查問題,因為負載平衡器會阻止其後面的執行個體存取其外部介面。
某些網路負載平衡器由於多種原因而有這種限制。它可以透過名為 NAT 回送
的 iptables
重新路由配置進行設定。
若要檢查您是否遇到此問題
- 請檢查挑戰的端點是否可公開存取:
curl <端點>
- 請檢查挑戰端點是否無法從負載平衡器後面的內部存取:使用 SSH 在位於 LB 後面的節點上開啟工作階段;然後執行與之前相同的命令:
curl <端點>
當 pre-check
失敗時,可以在記錄中找到 HTTP-01
挑戰的端點。如果它沒有出現在記錄中,您可以透過 kubectl
命令檢查挑戰 URL。
<端點>
是用於從憑證 Issuer
測試 HTTP-01 的 URL。例如,對於 Let's Encrypt,URL 的格式為 <網域>/.well-known/acme-challenge/<雜湊值>
負載平衡器 HTTP 端點
如果您使用負載平衡器(在受管理的 Kubernetes 服務之外),您應該能夠將負載平衡器協定配置為 HTTP、HTTPS、TCP、UDP。現在有幾個負載平衡器提供 Let's Encrypt 的免費 TLS 憑證。
當對負載平衡器使用 HTTP(s) 協定時,它可以攔截挑戰 URL 以將回應的驗證雜湊值替換為它們的雜湊值。
在這種情況下,cert-manager 會失敗,並顯示 查詢端點時未收到預期的回應,預期為 'xxxx',但收到:yyyy(已截斷)
。
這種錯誤可能是由於多種原因造成的。這種情況顯示了格式正確的回應,但不是預期的回應。解決方案是使用 TCP 協定配置負載平衡器,以便 HTTP 請求不會被主機攔截。