Azure Red Hat OpenShift 的網路拓撲和聯機考慮
當您使用 Azure Red Hat OpenShift 登陸區域加速器時,請檢閱網路拓撲和連線的設計考慮和建議。
設計考量
Azure Red Hat OpenShift 需要主要子網和次要子網。
- 使用主要子網來部署叢集的主要節點。
- 使用次要子網來部署叢集的背景工作節點。
- 次要子網和主要子網應該是最小
/27
路由。 - 部署叢集之後,您無法變更次要子網或主要子網。
- 主要子網和次要子網不能有與其相關聯的網路安全組。 Azure Red Hat OpenShift 叢集會自動建立和管理網路安全組。
- 次要子網和主要子網無法與內部部署網路或 Azure 中的其他任何網路重疊。
請仔細規劃IP位址和虛擬網路子網的大小,以支援調整叢集。 您可能需要新增節點。
您可以使用公用或內部負載平衡器來公開 Azure Red Hat OpenShift 服務和 路由 。 在與次要節點相同的子網中設定內部負載平衡器。 在受限制的輸出叢集中,由於非對稱式路由,您無法使用公用負載平衡器。
Azure Red Hat OpenShift 會使用 CoreDNS,為叢集中執行的 Pod 提供名稱解析。
- CoreDNS 會直接解析叢集內部網域。
- Azure Red Hat OpenShift 也支援 虛擬網路中的自定義 DNS 伺服器 。
- 其他網域會轉送至您在 Azure 虛擬網絡 中設定的 DNS 伺服器。 DNS 伺服器會是預設的 Azure DNS 解析程式,或是您在虛擬網路層級設定的任何自定義 DNS 伺服器。
- 您可以在 Azure Red Hat OpenShift CoreDNS 中自定義 DNS 轉送。
- 如果未在虛擬網路中設定任何自定義 DNS 伺服器,Azure Red Hat OpenShift 會使用預設的 Azure DNS 解析程式。
如需 DNS 的詳細資訊,請參閱 Azure 私人端點 DNS 設定。
您可以透過 Azure 防火牆 或透過網路虛擬設備叢集傳送輸出(輸出)網路流量。
- 根據預設,Azure Red Hat OpenShift 叢集具有不受限制的輸出因特網存取。
- 您可以藉由新增具有
0.0.0.0/0
Azure 防火牆 或網路虛擬設備路由的使用者定義路由 (UDR),部署具有受限輸出流量的 Azure Red Hat OpenShift。 Azure Red Hat OpenShift 具有 輸出鎖定 功能,可確保存取,即使輸出流量受限於防火牆設備或其他方式也一樣。 - 您可以選擇兩種 Azure Red Hat OpenShift 部署模型:
- 如果您使用不受限制的輸出存取,您必須仔細管理輸出埠,以確保您不會使用所有可用的輸出埠。 如需詳細資訊,請參閱 使用來源網路位址轉換 (SNAT) 進行輸出連線。
根據預設,Azure Red Hat OpenShift 叢集中的所有 Pod 都可以傳送和接收流量,而不受限制。 專案中的所有Pod都可從其他Pod和網路端點存取。 若要隔離專案中的一或多個 Pod,您可以在專案中建立
NetworkPolicy
物件,以指出允許的連入連線。 Red Hat OpenShift 軟體定義網路功能 (SDN) 支援在其預設網路隔離模式中使用 網路 原則。服務網格提供流量管理、復原、原則、安全性、強身分識別和可觀察性等功能。 如需 Red Hat OpenShift Service Mesh 的詳細資訊,請參閱 Service Mesh 和 Istio 差異。
全域負載平衡機制,例如 Azure 流量管理員 和 Azure Front Door,可透過跨多個叢集路由傳送流量來提升復原能力,這些機制可能位於不同的 Azure 區域中。
私人叢集
Azure Red Hat OpenShift API 叢集 IP 位址可以是公用或私人位址。 私人叢集會 透過私人IP位址公開 Azure Red Hat OpenShift API,但不會透過公用IP位址公開。 Azure Red Hat OpenShift API 不應該透過其IP位址來存取。 相反地,請透過其 完整功能變數名稱 (FQDN) 存取 Azure Red Hat OpenShift API。 Azure DNS 會將 Azure Red Hat OpenShift API FQDN 解析為其 IP 位址。
與經過證實的 Azure 登陸區域經過證實 的做法一致,Azure 工作負載的 DNS 解析是由部署在連線訂用帳戶中的集中式 DNS 伺服器所提供。 Azure DNS 伺服器位於中樞虛擬網路或連線至 Azure 虛擬 WAN 實例的共用服務虛擬網路中。 DNS 伺服器會使用 Azure DNS(IP 位址 168.63.129.16
)有條件地解析 Azure 特定和公用名稱。 伺服器會使用公司 DNS 伺服器解析私人名稱。 此連線模型很常見,如果您使用私人端點,請務必允許私人存取其他 Azure 資源。
從應用程式使用者到叢集的流量
使用傳入(輸入)控制器來公開在 Azure Red Hat OpenShift 叢集中執行的應用程式。
- 輸入控制器 提供應用層級路由,但複雜度略有增加。
- Azure Red Hat OpenShift 會建立一般 DNS 專案,以簡化對叢集中公開應用程式的存取。 範例 DNS 專案為
*.apps.<cluster-ID>.<region>.aroapp.io
。 私人叢集可用來路由傳送應用程式的流量。 - Azure Red Hat OpenShift 提供內建的 輸入控制器和路由。
- 您可以使用 Azure Red Hat OpenShift 輸入搭配 Azure Front Door。
- 將您的設定與輸出篩選設計對齊,以避免非對稱式路由。 UDR 可能會造成非對稱式路由。
- 如果您的案例需要 TLS 終止,請考慮您將如何管理 TLS 憑證。
重要
如果您使用 Azure 防火牆 來限制輸出流量,並建立 UDR 以強制所有輸出流量,請務必在 Azure 防火牆 中建立適當的目的地網路位址轉換 (DNAT) 規則,以正確允許輸入流量。 將 Azure 防火牆搭配 UDR 使用,會因為非對稱式路由而中斷連入設定。 如果 Azure Red Hat OpenShift 子網有預設路由傳送至防火牆的私人 IP 位址,但您使用的是公用負載平衡器(類型 Load Balancer
為 的輸入或 Kubernetes 服務),就會發生此問題。 在此情況下,系統會透過傳入負載平衡器流量的公用 IP 位址接收它,但傳回路徑則會通過防火牆的私人 IP 位址。 因為防火牆是具狀態的,所以會卸除傳回的封包,因為防火牆不會偵測到已建立的會話。 若要了解如何整合 Azure 防火牆與您的連入或服務負載平衡器,請參閱整合 Azure 防火牆與 Azure Standard Load Balancer \(部分機器翻譯\)。
如果您搭配 Azure Red Hat OpenShift 私人叢集和輸入控制器使用 Azure Front Door ,下列步驟會說明流程:
- 來自公用因特網的用戶端會解析指向 Azure Front Door 之應用程式的 DNS 名稱。
- Azure Front Door 會使用 Azure Private Link 服務來存取 Azure 內部網路負載平衡器的私人 IP 位址,並在 Azure Red Hat OpenShift 輸入控制器中存取應用程式。
這些步驟說明存取 Azure Red Hat OpenShift 私人叢集之非 Web 應用程式的流程:
- 來自公用因特網的用戶端會解析指向 Azure 防火牆 公用IP位址或網路虛擬設備之應用程式的 DNS 名稱。
- Azure 防火牆 或網路虛擬設備會使用 Azure 內部網路負載平衡器的私人 IP 位址,將流量 (DNAT) 轉送至 Azure Red Hat OpenShift 私人叢集,以存取 Azure Red Hat OpenShift 輸入控制器中的應用程式。
從 Azure Red Hat OpenShift Pod 到後端服務的流量
在 Azure Red Hat OpenShift 叢集內執行的 Pod 可能需要存取後端服務,例如 Azure 儲存體、Azure 金鑰保存庫、Azure SQL 資料庫 和 Azure Cosmos DB。 您可以使用 虛擬網路服務端點 和 Azure Private Link 來保護這些 Azure 受控服務的連線。
如果您使用 Azure 私人端點進行後端流量,您可以使用 Azure 私用 DNS 區域進行 Azure 服務的 DNS 解析。 由於整個環境的 DNS 解析程式位於中樞虛擬網路中(或在共用服務虛擬網路中,如果您使用虛擬 WAN 連線模型),請在連線訂用帳戶中建立這些私人區域。 若要建立解析私人服務 FQDN 所需的 A 記錄,您可以將連線訂用帳戶中的私人 DNS 區域與應用程式訂用帳戶中的私人端點產生關聯。 此作業需要這些訂用帳戶中的特定許可權。
您可以手動建立 A 記錄,但建立私人 DNS 區域與私人端點的關聯,會導致設定較不容易設定錯誤。
從 Azure Red Hat OpenShift Pod 到透過私人端點公開的 Azure 平台即服務 (PaaS) 服務的後端聯機會遵循下列順序:
- Azure Red Hat OpenShift Pod 會使用連線訂用帳戶中的中央 DNS 伺服器來解析 Azure PaaS 的 FQDN,其定義為 Azure Red Hat OpenShift 虛擬網路中的自定義 DNS 伺服器。
- 解析的IP位址是私人端點的私人IP位址,可直接從 Azure Red Hat OpenShift Pod 存取。
Azure Red Hat OpenShift Pod 與私人端點之間的流量預設不會通過中樞虛擬網路中的 Azure 防火牆 實例(或如果您使用虛擬 WAN 的安全虛擬中樞),即使 Azure Red Hat OpenShift 叢集已設定為使用 Azure 防火牆 進行輸出篩選也一樣。 私人端點會在 /32
部署 Azure Red Hat OpenShift 的應用程式虛擬網路子網中建立路由。
設計建議
- 如果您的安全策略要求您針對 Azure Red Hat OpenShift API 使用私人 IP 位址, 請部署私人 Azure Red Hat OpenShift 叢集。
- 除非您在集中式訂用帳戶中使用 Azure 防火牆 或 Web 應用程式防火牆,否則請使用 Azure DDoS 保護來保護您用於 Azure Red Hat OpenShift 叢集的虛擬網路。
- 使用與 Azure 虛擬 WAN 或中樞和輪輻架構、Azure DNS 區域和您自己的 DNS 基礎結構連結至整體網路設定的 DNS 組態。
- 使用 Azure Private Link 來保護網路連線,並使用私人 IP 型連線到支援 Private Link 的其他受控 Azure 服務,例如 Azure 儲存體、Azure Container Registry、Azure SQL 資料庫 和 Azure 金鑰保存庫。
- 使用輸入控制器提供進階 HTTP 路由和安全性,並為應用程式提供單一端點。
- 您設定為使用輸入的所有 Web 應用程式都應該使用 TLS 加密,且不應允許透過未加密的 HTTP 進行存取。
- 使用 Azure Front Door 搭配 Web 應用程式防火牆,安全地將 Azure Red Hat OpenShift 應用程式發佈至因特網。
- 如果您的安全策略要求您檢查 Azure Red Hat OpenShift 叢集中產生的所有輸出因特網流量,請使用 Azure 防火牆 或部署在受控中樞虛擬網路的第三方網路虛擬設備來保護輸出網路流量。 如需詳細資訊,請參閱 控制 Azure Red Hat OpenShift 叢集的輸出流量。
- 使用 Azure Load Balancer Standard 層,而不是非 Web 應用程式的基本層。
下一步
- 規劃 Azure Red Hat OpenShift 的資源組織。