新消息:在TwitterMastodon取得專案更新

外部負載平衡器

當您使用任何主機提供的外部負載平衡器時,您可能會遇到一些組態問題,使其與 cert-manager 一起運作。

本文件旨在幫助您為外部負載平衡器後的實例配置 HTTP-01 挑戰類型。

NAT 回路/髮夾

第一個配置點是 NAT 回送。您可能會遇到檢查問題,因為負載平衡器會阻止其後面的執行個體存取其外部介面。

某些網路負載平衡器由於多種原因而有這種限制。它可以透過名為 NAT 回送iptables 重新路由配置進行設定。

若要檢查您是否遇到此問題

  1. 請檢查挑戰的端點是否可公開存取:curl <端點>
  2. 請檢查挑戰端點是否無法從負載平衡器後面的內部存取:使用 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 請求不會被主機攔截。