選擇應用程式曝光服務

透過 Red Hat OpenShift Ingress 控制器或 IBM Cloud® Kubernetes ServiceNodePort, 網路負載平衡器,安全地將您的應用程式暴露於外部流量中。

瞭解用於公開應用程式的選項

若要安全地將您的應用程式暴露於外部流量,您可以選擇下列服務。

Red Hat OpenShift 進入控制器

使用 Red Hat OpenShift Ingress 控制器設定遞送,以公開叢集裡的多個應用程式。 Ingress 控制器將 Ingress 子網域用作安全且唯一的公開或私有入口點,以路由傳入的請求。 您可以使用一個子網域,將叢集裡的多個應用程式公開為服務。 Ingress 控制器解決方案使用三個元件。

  • 管理叢集中 Ingress 控制器的 Ingress 操作器。
  • Ingress 控制器是基於 HAProxy的 Kubernetes 服務,透過實作應用程式的遞送規則來管理叢集裡應用程式的所有送入資料流量。 此控制器由 Ingress 操作器管理。 Ingress 控制器會監聽傳入的 HTTP,或 HTTPS 服務請求,然後僅根據 Ingress 資源中定義並由 Ingress 控制器實作的規則,將請求轉發至該應用程式的 Pod。
  • Route 資源定義了如何為應用程式路由及進行進來請求的負載平衡的規則。

「路由」會以 <service_name>-<project>.<cluster_name>-<random_hash>-0000.<region>.containers.appdomain.cloud 這種格式,將服務以主機名稱的形式公開。 系統預設會在您的叢集中部署一個 Ingress 控制器,這使得外部客戶端能夠使用 Routes。 Ingress 控制器會使用服務選擇器來查找該服務及其對應的端點。 您可以配置服務選取器,以透過一個路徑將資料流量導向多個服務。 您也可以使用 Ingress 控制器為您的主機名稱指派的 TLS 憑證,來建立非加密或加密的路由。 請注意,Ingress 控制器僅支援 HTTP 和 HTTPS 通訊協定。

NodePort

當您使用 NodePort 服務公開應用程式時,會將 30000 到 32767 範圍內的 NodePort 及內部叢集 IP 位址指派給服務。 若要從叢集外部存取此服務,請使用任一工作節點的公開或私有 IP 位址,並搭配 NodePort,格式如下:<IP_address>:<nodeport>。 不過,工作者節點的公用及專用 IP 位址不是永久性的。 移除或重建工作者節點時,會將新的公用及新的專用 IP 位址指派給工作者節點。 NodePort 適用於測試公用或專用存取,或僅提供短時間的存取。

LoadBalancer

根據叢集的基礎架構提供者,LoadBalancer 服務類型的實作方式有所不同。

  • 標準叢集: 網路負載平衡器(NLB)。 每個標準叢集都會佈建四個可攜式公用 IP 位址及四個可攜式專用 IP 位址,可用來建立應用程式的第 4 層 TCP/UDP 網路負載平衡器 (NLB)。 您可以公開應用程式所需的任何埠來自訂 NLB。 分配給 NLB 的可攜式公網 IP 位址和私有 IP 位址是永久性的,即使在叢集中重新建立工作節點時也不會改變。 如果建立公用 NLB,則可以為應用程式建立子網域,其使用 DNS 項目登錄公用 NLB IP 位址。 您也可以在每個子網域的 NLB IP 上啟用性能檢查監視器。
  • VPC 叢集: Load Balancer for VPC。 為叢集裡的應用程式建立 Kubernetes LoadBalancer 服務時,將在叢集外部的 VPC 中自動建立第 7 層 VPC 負載平衡器。 VPC 負載平衡器是多區域負載平衡器,透過在工作者節點上自動開啟的專用 NodePort 來遞送應用程式的要求。 依預設,也會使用您可以用來存取應用程式的主機名稱來建立負載平衡器,但您也可以為應用程式建立子網域來建立 DNS 項目。
Ingress

您可以使用 Ingress,透過 Red Hat OpenShift Ingress 控制器將應用程式公開給外部資料流量。 Red Hat OpenShift Controller Manager 會將 Ingress 資源轉換為 Route 資源,且 Red Hat OpenShift Ingress 控制器會處理這些路由。

在不同負載平衡解決方案之間進行選擇

既然您已經了解在 Red Hat OpenShift 叢集中公開應用程式的 各種選項,請根據您的工作負載選擇最適合的解決方案。

下表比較了每種應用程式公開方法的特點。

叢集 Red Hat OpenShift 應用程式外部網路的比較
特徵 NodePort LoadBalancer(標準 - NLB) LoadBalancer(VPC 負載平衡器) Ingress 控制器
穩定外部 IP
外部主機名稱
SSL 終止 是 * 是 *
HTTP(S) 負載平衡
自訂遞送規則
每個路徑或服務多個應用程式
一致的混合式多雲端部署

* SSL 終止透過 ibmcloud oc nlb-dns 指令提供。 在標準叢集裡,僅公用 NLB 支援這些指令。

規劃公用外部負載平衡

將叢集裡的應用程式以公用方式公開至網際網路。

標準 叢集裡,工作者節點會連接至公用 VLAN。 公用 VLAN 會判定指派給每一個工作者節點的公用 IP 位址,以將公用網路介面提供給每一個工作者節點。 公用網路服務使用公用 IP 位址及選用公用 URL 來提供應用程式,以連接至此公用網路介面。

VPC 叢集裡,工作者節點僅連接至專用 VPC 子網路。 但是,建立公用網路服務時,會自動建立 VPC 負載平衡器。 VPC 負載平衡器可以藉由向應用程式提供公用 URL,將公用要求遞送到應用程式。 以公用方式公開應用程式時,具有公用 URL 的任何人都可以將要求傳送至應用程式。

公開應用程式時,具有您為應用程式設定的公用服務 IP 位址或 URL 的任何人都可以將要求傳送至應用程式。 因此,請儘可能公開最少的應用程式。 僅當應用程式準備好接受來自外部 Web 用戶端或使用者的資料流量時,才向大眾公開應用程式。

工作者節點的公用網路介面受到預先定義的 Calico 網路原則設定所保護,這些設定是在建立叢集期間配置於每個工作者節點上。 依預設,所有工作者節點都允許所有出埠網路資料流量。 除了少數埠之外,入埠網路資料流量會遭到封鎖。 這些埠已開啟,以便 IBM 可以監視網路資料流量,並自動為 Kubernetes 主節點安裝安全更新,同時還可以建立與公用網路連線功能服務的連線。 如需這些原則的相關資訊,包括如何修改它們,請參閱網路原則

標準叢集的公用應用程式網路

若要在經典叢集中將應用程式對網際網路公開,請選擇一種使用路由、NodePorts, 負載平衡器 (NLB) 或設定 Ingress 的應用程式公開方式。 下表說明了每種可能的方法,以及可能要使用該方法的原因和設定該方法的方式。 有關所列網路服務的基本資訊,請參閱 《 Kubernetes 瞭解服務類型 》。

您無法對同一款應用程式使用多種應用程式曝光方式。

公用應用程式公開方法的性質
名稱 負載平衡方法 使用案例 實作
路由 使用子網域公開應用程式以及使用自訂遞送規則的 HTTP(S) 負載平衡

實作多個應用程式的自訂遞送規則及 SSL 終止。 選擇此方法可保持與 Red Hat OpenShift 原生相容;例如,您可以使用 Red Hat OpenShift 網頁控制台來建立和管理路由。

  1. 建立 ClusterIP 服務 ,以將內部 IP 位址指派給應用程式。
  2. 設定 Red Hat OpenShift 路線
  3. 使用 選用配置來自訂遞送規則。
NodePort 工作者節點上的埠,可在工作者節點的公用 IP 位址上公開應用程式 測試某個應用程式的公用存取,或僅提供短時間的存取。 建立公用 NodePort 服務
NLB 1.0 版(+ 子網域) 透過 IP 位址或子網域提供應用程式存取的基本負載平衡功能。 使用支援 SSL 終止的 IP 位址或子網域,快速將一個應用程式公開給大眾使用。 單一多區域 叢集裡 建立公用網路負載平衡器 (NLB) 1.0。 選擇性地登錄子網域及性能檢查。
NLB 2.0 版(+ 子網域) 透過 IP 位址或子網域公開應用程式的 DSR 負載平衡。

將可能接收大量流量的應用程式,透過支援 SSL 終端處理的 IP 位址或子網域對外公開。

  1. 完成 必要條件
  2. 單一多區群集中建立公用 NLB 2.0。
  3. 選擇性地登錄子網域及性能檢查。
Ingress 控制器 使用子網域公開應用程式以及使用自訂遞送規則的 HTTP(S) 負載平衡 實作多個應用程式的自訂遞送規則及 SSL 終止。 為預設公用 Ingress 控制器建立 Ingress 資源

VPC 叢集的公用應用程式網路

若要在 VPC 叢集中將應用程式對網際網路公開,請選擇一種使用路由、VPC 負載平衡器或設定 Ingress 的應用程式公開方式。 下表說明了每種可能的方法,以及可能要使用該方法的原因和設定該方法的方式。 有關所列網路服務的基本資訊,請參閱 《 Kubernetes 瞭解服務類型 》。

您無法對同一款應用程式使用多種應用程式曝光方式。

公用應用程式公開方法的性質
名稱 負載平衡方法 使用案例 實作
路由 使用子網域公開應用程式以及使用自訂遞送規則的 HTTP(S) 負載平衡 實作多個應用程式的自訂遞送規則及 SSL 終止。 選擇此方法可維持與 Red Hat OpenShift 原生相容;例如,您可以使用 Red Hat OpenShift 網頁控制台來建立和管理路由。 在具有公用雲端服務端點的叢集裡使用預設公用 Ingress 控制器來 建立路徑,或在具有專用雲端服務端點的叢集裡使用自訂公用 Ingress 控制器來 建立路徑
VPC 負載平衡器 透過主機名提供應用程式存取的基本負載平衡機制。 使用 VPC 負載平衡器指派的主機名稱,快速將一個應用程式公開給大眾使用。 在叢集裡 建立公用 LoadBalancer 服務。 系統會在您的 VPC 中自動建立一個多區域 VPC 負載平衡器,該平衡器會為您的應用程式所使用的 LoadBalancer 服務指派一個主機名稱。
Ingress HTTP (S) 負載平衡,該機制透過子網域提供應用程式存取,並採用自訂路由規則。 實作多個應用程式的自訂遞送規則及 SSL 終止。 在具有公用雲端服務端點的叢集裡為預設公用 Ingress 控制器 建立 Ingress 資源,或在僅具有專用雲端服務端點的叢集裡為自訂公用 Ingress 控制器 建立 Ingress 資源

規劃專用外部負載平衡

只將叢集裡的應用程式私下公開至專用網路。

當您在 IBM Cloud Kubernetes Service 的 Kubernetes 叢集裡部署應用程式時,建議您只讓位於與叢集相同專用網路上的使用者和服務存取應用程式。 專用負載平衡適用於讓叢集外的要求使用您的應用程式,而不將應用程式公開給一般大眾使用。 您也可以先使用專用負載平衡來測試應用程式的存取、要求遞送及其他配置,稍後再使用公用網路服務將應用程式公開給大眾使用。

舉例來說,假設您為應用程式建立專用負載平衡器。 可以透過下列方式存取此專用負載平衡器:

  • 該相同叢集裡的任何 Pod。
  • 相同 IBM Cloud 帳戶中任何叢集的任何 Pod。
  • 透過 VPN 連線來連線到負載平衡器 IP 所在子網路的任何系統(如果您不在 IBM Cloud 帳戶中,但仍在公司防火牆後)。
  • 如果您屬於不同的 IBM Cloud 帳戶,則為透過 VPN 連線連至負載平衡器 IP 所在的子網路的任何系統
  • 在經典叢集環境中,若已啟用 VRF 或 VLAN 跨叢集功能,則任何連接到同一 IBM Cloud 帳戶內任一私有 VLAN 的系統。
  • 在 VPC 叢集裡:
    • 相同 VPC 中的任何系統(如果允許 VPC 子網路之間的資料流量)。
    • 有權存取叢集所在 VPC 的任何系統(如果允許 VPC 子網路之間的資料流量)。

標準叢集的專用應用程式網路

當您的工作節點同時連接到公共 VLAN 和私有 VLAN 時,您可以透過建立私有路由、NodePorts, 負載平衡器 (NLB),或設定 Ingress,讓您的應用程式僅能從私有網路存取。 然後,您可以建立 Calico 原則來封鎖服務的公用資料流量。

工作者節點的公用網路介面受到預先定義的 Calico 網路原則設定所保護,這些設定是在建立叢集期間配置於每個工作者節點上。 依預設,所有工作者節點都允許所有出埠網路資料流量。 除了少數埠之外,入埠網路資料流量會遭到封鎖。 開啟這些埠讓 IBM 可以監視網路資料流量,並自動安裝 Kubernetes 主節點的安全更新項目,以及可以建立與 NodePort、LoadBalancer 及 Ingress 服務的連線。

因為預設 Calico 網路原則容許入埠公用資料流量進入這些服務,所以您可以建立 Calico 原則,改為封鎖服務的所有公用資料流量。 例如,NodePort 服務會在工作者節點的專用及公用 IP 位址上開啟工作者節點上的埠。 具有可攜式專用 IP 位址的 NLB 服務會在每個工作者節點上開啟一個公用 NodePort。 您必須建立 Calico DNAT 前網路原則,以封鎖公用 NodePort。

參閱用於專用應用程式網路連線功能的下列方法:

公用和專用 VLAN 設定的網路部署模式特徵
名稱 負載平衡方法 使用案例 實作
路由 使用子網域公開應用程式以及使用自訂遞送規則的 HTTP(S) 負載平衡 實作多個應用程式的自訂遞送規則及 SSL 終止。 選擇此方法可維持與 Red Hat OpenShift 原生相容;例如,您可以使用 Red Hat OpenShift 網頁控制台來建立和管理路由。
  1. 建立 ClusterIP 服務 ,為您的應用程式指定內部 IP 位址。
  2. 建立侵入控制器 由私有負載平衡器暴露。
  3. 設定 Red Hat OpenShift 路線
  4. 使用 可選組態自訂路由規則。
NodePort 工作者節點上的埠,可在工作者節點的專用 IP 位址上公開應用程式 測試某個應用程式的專用存取,或僅提供短時間的存取。
  1. 建立一個 NodePort 服務
  2. NodePort 服務會透過工作者節點的專用及公用 IP 位址在工作者節點上開啟埠。 您必須使用 Calico DNAT 前網路原則來封鎖對公用 NodePort 的資料流量。
NLB 1.0 使用專用 IP 位址公開應用程式的基本負載平衡 使用專用 IP 位址將某個應用程式快速公開至專用網路。
  1. 建立一個私有 NLB 服務。 即使 NLB 具有可攜式私有 IP 位址,每個工作節點上仍會開啟一個公共節點埠。
  2. 建立 Calico DNAT 前網路原則來封鎖對公用 NodePort 的資料流量。
NLB 2.0 版 使用專用 IP 位址公開應用程式的 DSR 負載平衡 使用 IP 位址,將可能收到大量資料流量的應用程式公開至專用網路。
  1. 完成先決條件。
  2. 單一 區域或 多區域 叢集中建立私人 2.0 NLB。 即使 NLB 具有可攜式私有 IP 位址,每個工作節點上仍會開啟一個公用節點埠。
  3. 建立 Calico DNAT 前網路原則來封鎖對公用 NodePort 的資料流量。
Ingress 使用子網域公開應用程式以及使用自訂遞送規則的 HTTP(S) 負載平衡 實作多個應用程式的自訂遞送規則及 SSL 終止。 請參閱 使用 Ingress 公開應用程式

VPC 叢集的專用應用程式網路

若要僅在 VPC 叢集裡透過專用網路提供應用程式,請根據叢集的服務端點設定選擇負載平衡部署型樣: 公用及專用雲端服務端點,或僅限專用雲端服務端點。 對於每一個服務端點設定,下表說明每一個可能的應用程式公開方法、您可能使用它的原因,以及如何設定它。

VPC 叢集的專用網路部署型樣
名稱 負載平衡方法 使用案例 實作
路由 使用子網域公開應用程式以及使用自訂遞送規則的 HTTP(S) 負載平衡 實作多個應用程式的自訂遞送規則及 SSL 終止。 選擇此方法可維持與 Red Hat OpenShift 原生相容;例如,您可以使用 Red Hat OpenShift 網頁控制台來建立和管理路由。 僅在具有專用雲端服務端點的叢集裡使用預設專用 Ingress 控制器來建立 Ingress 控制器,或 在具有公用雲端服務端點的叢集裡使用自訂專用 Ingress 控制器來建立路徑
NodePort 工作者節點上的埠,可在工作者節點的專用 IP 位址上公開應用程式 測試某個應用程式的專用存取,或僅提供短時間的存取。 建立專用 NodePort 服務
VPC 負載平衡器 使用專用主機名稱公開應用程式的基本負載平衡 使用 VPC 負載平衡器指派的專用主機名稱,快速將一個應用程式公開至專用網路。 在叢集裡建立專用 LoadBalancer 服務。 多區域 VPC 負載平衡器會自動建立在您的 VPC 中,該 VPC 會針對應用程式指派主機名稱給您的 LoadBalancer 服務。
Ingress 使用子網域公開應用程式以及使用自訂遞送規則的 HTTP(S) 負載平衡 實作多個應用程式的自訂遞送規則及 SSL 終止。 僅在具有專用雲端服務端點的叢集裡為預設專用 Ingress 控制器建立 Ingress 資源,或 在具有公用雲端服務端點的叢集裡為自訂專用 Ingress 控制器建立 Ingress 資源