將您自己的網路安全組 (NSG) 帶到 Azure Red Hat OpenShift (ARO) 叢集
一般而言,設定 ARO 叢集時,您必須指定資源群組來部署 ARO 叢集物件(如下圖所示的基底資源群組)。 在這種情況下,您可以針對虛擬網路 (VNET) 和叢集使用相同的資源群組,也可以只針對 VNET 選擇個別的資源群組。 這兩個資源群組都未直接對應至單一 ARO 叢集,讓您完全控制它們。 這表示您可以自由建立、修改或刪除這些資源群組內的資源。
在叢集建立程序期間,ARO 資源提供者 (RP) 會建立叢集需求專屬的專用資源群組。 此群組包含各種叢集特定資源,例如節點 VM、負載平衡器和網路安全組 (NSG),如下圖所示的受控資源群組。 受控資源群組受到嚴密保護,禁止修改其內容,包括連結至叢集建立期間所指定 VNET 子網的 NSG。 在某些情況下,ARO RP 所產生的 NSG 可能不會遵守特定組織的安全策略。
本文說明如何使用「自備」網路安全組 (NSG) 功能,將位於Base/VNET資源群組 (RG) 的預先設定NSG附加至 ARO 叢集子網,如下圖所示。 由於您擁有此預先設定的 NSG,因此您可以在 ARO 叢集的存留期間新增/移除規則。
一般功能和限制
建立叢集之前,您必須將預先設定的NSG附加至主要和背景工作角色子網。 無法將預先設定的 NSG 附加至這兩個子網會導致錯誤。
您可以選擇針對主要和背景工作角色子網使用相同的或不同的預先設定 NSG。
使用您自己的 NSG 時,ARO RP 仍會在受控資源群組中建立 NSG(預設 NSG),但 NSG 並未附加至背景工作或主要子網。
您無法在現有的 ARO 叢集上啟用預先設定的 NSG 功能。 目前,此功能只能在叢集建立時啟用。
預先設定的 NSG 選項無法從 Azure 入口網站 進行設定。
如果您在預覽期間使用此功能,則現在完全支援您現有的預先設定叢集。
注意
如果您使用「攜帶您自己的」NSG 功能,且想要使用NSG流量記錄,請參閱 Azure 網路監看員 檔案中網路安全組的流量記錄,而不是 ARO 特定的流量記錄檔(這不適用於自備 NSG 功能)。
使用規則
警告
當您在 ARO 叢集中建立 Kubernetes LoadBalancer 類型服務或 OpenShift 路由時,預先設定的 NSG 不會自動更新規則。 因此,您必須視需要手動更新這些規則。 此行為與原始 ARO 行為不同,其中預設 NSG 會在這類情況下以程式設計方式更新。
當您在 ARO 叢集內建立 Kubernetes LoadBalancer 類型服務或 OpenShift 路由時,預設的 ARO 叢集 NSG(未附加至任何子網)仍會更新為規則。
您可以將預先設定的 NSG 與使用這項功能所建立之叢集的子網中斷連結。 這會導致具有沒有 NSG 之子網的叢集。 然後,您可以將一組預先設定的 NSG 附加至叢集。 或者,您可以將 ARO 預設 NSG 連結至叢集子網(此時您的叢集會像任何其他未使用此功能的叢集一樣)。
預先設定的 NSG 不應該有下列類型的輸入/輸出 DENY 規則,因為這些規則可能會干擾叢集的作業和/或阻礙 ARO 支援/SRE 小組提供支援/管理。 (在此,子網會指出子網中的任何或所有IP位址,以及對應至該子網的所有埠):
主要子網←→主要子網
背景工作子網←→背景工作子網
主要子網←→背景工作子網
設定錯誤的規則會導致 Azure 監視器 用來協助針對預先設定的 NSG 進行疑難解答的訊號。
若要允許連入到 ARO 公用叢集的流量,請在 NSG 中設定下列輸入允許規則(或對等規則)。 如需特定詳細數據,請參閱叢集的預設 NSG,以及部署中顯示的範例 NSG。 即使 NSG 中沒有這類規則,您也可以建立叢集。
- 針對 API 伺服器存取→從因特網(或您慣用的來源 IP)到主要子網上的埠 6443。
- 若要存取 OpenShift 路由器(因此 OpenShift 控制台和 OpenShift 路由)→從因特網(或您慣用的來源 IP)到叢集公用負載平衡器上預設 v4 公用 IP 上的埠 80 和 443。
- 若要存取任何負載平衡器類型 Kubernetes 服務,→從因特網(或您慣用的來源 IP)存取與叢集公用負載平衡器上服務對應的公用 IP 上的服務埠。
部署
建立 VNET 並建立及設定預先設定的 NSG
建立 VNET,然後在其中建立主要和背景工作角色子網。
使用預設規則建立預先設定的NSG(或完全沒有規則),並將其附加至主要和背景工作角色子網。
建立 ARO 叢集並更新預先設定的 NSG
建立叢集。
az aro create \ --resource-group BASE_RESOURCE_GROUP_NAME \ --name CLUSTER_NAME \ --vnet VNET_NAME \ --master-subnet MASTER_SUBNET_NAME \ --worker-subnet WORKER_SUBNET_NAME \ --client-id CLUSTER_SERVICE_PRINCIPAL_ID \ --client-secret CLUSTER_SERVICE_PRINCIPAL_SECRET \ --enable-preconfigured-nsg
根據您的需求,使用規則更新預先設定的 NSG,同時考慮功能和限制中所述的點。
下列範例具有叢集公用負載平衡器,如螢幕快照/CLI 輸出所示:
$ oc get svc | grep tools tools LoadBalancer 172.30.182.7 20.141.176.3 80:30520/TCP 143m $ $ oc get svc -n openshift-ingress | grep Load router-default LoadBalancer 172.30.105.218 20.159.139.208 80:31157/TCP,443:31177/TCP 5d20