在 Satellite 位置和叢集中自訂網路設定
Satellite Red Hat CoreOS
您可以使用數個特性來自訂 Satellite 網路設定,以更好地隔離及分段在您所在位置執行的服務和工作量。 請參閱以下各節以獲取更多資訊。
這些自訂功能僅適用於 Red Hat CoreOS-enabled 位置。
視您要套用的網路自訂作業而定,在建立位置、建立叢集或設定位置及叢集之後,您可能需要在 CLI 中指定特定選項。 下列標籤指出何時套用自訂作業。
- 在建立位置期間: 在建立位置期間,必須從 CLI 套用這些自訂作業。
- 在叢集建立期間: 在叢集建立期間,可以從 CLI 套用這些自訂作業。
- 在建立位置和叢集之後: 在建立位置和叢集之後,可以套用這些自訂作業。
建立位置時定義自訂子網路
在位置建立期間
當您在 CLI 中建立位置時,可以定義下列參數,以在您的位置中自訂網路功能。 如需相關資訊,請參閱 ibmcloud sat location create 指令參考手冊。
您可以指定 --pod-subnet 選項來指定自訂子網路 CIDR,以提供 Pod 的專用 IP 位址。 此選項僅在您同時啟用 Red Hat CoreOS 並使用 --coreos-enabled 標誌時,方可使用。 子網必須至少為 /23 或更大。 預設值為 172.16.0.0/16。
您也可以指定 --service-subnet 選項來指定自訂子網路 CIDR,以提供服務的專用 IP 位址。 此選項僅在您同時啟用 Red Hat CoreOS 並使用 --coreos-enabled 標誌時,方可使用。 子網必須至少為 /24 或更大。 預設值為 172.20.0.0/16。
建立位置時定義 Pod 網路介面
在位置建立期間
當您在 CLI 中建立位置時,可以定義 --pod-network-interface 來設定 Pod 網路介面。 可用的方法為 can-reach 和 interface。
- 若要提供直接 URL 或 IP 位址,請指定
can-reach=<url>或can-reach=<ip_address>。 如果網路介面可以到達所提供的 URL 或 IP 位址,則使用此選項。 例如,使用can-reach=www.exampleurl.com指定 URL,使用can-reach=172.19.0.0指定 IP 位址。 - 若要選擇具有 Regex 字串的介面,請指定
interface=<regex_string>; 例如interface=eth.*。
如需相關資訊,請參閱 ibmcloud sat location create 指令參考手冊。
建立叢集時定義 Pod 網路介面
群集建立期間
當您在 CLI 中建立叢集時,可以定義 --pod-network-interface 來設定 Pod 網路介面。 可用的方法為 can-reach 和 interface。
- 若要提供直接 URL 或 IP 位址,請指定
can-reach=<url>或can-reach=<ip_address>。 如果網路介面可以到達所提供的 URL 或 IP 位址,則使用此選項。 例如,使用can-reach=www.exampleurl.com指定 URL,使用can-reach=172.19.0.0指定 IP 位址。 - 若要選擇具有 Regex 字串的介面,請指定
interface=<regex_string>; 例如interface=eth.*。
如需相關資訊,請參閱 ibmcloud oc cluster create satellite 指令參考手冊。
限制對 Satellite 叢集的存取權
定位和群組建立後
建立位置及叢集之後,您可以使用 ibmcloud ks cluster master satellite-service-endpoint allowlist add 指令,將子網路新增至 Satellite 叢集的服務端點允許清單。 源自該子網的、發送至叢集主節點的授權請求,將透過 Satellite 服務端點予以允許。 允許清單必須 已啟用,才能套用限制。
使用 Calico 主機端點建立網路原則
定位和群組建立後
如果您建立 4.12 版以及更新版本的 Satellite 叢集,則每個工作者節點的網路介面都有部署至叢集的 Calico Hostendpoint 實例。
您可以使用這些 Hostendpoint 實例,利用新增至每一個 Hostendpoint 實例的 “ibm-cloud.kubernetes.io/interface-name: <network_interface_name>” 標籤來定義廣域網路原則。
除了此標籤之外,還會針對其他自訂作業選項新增所有工作者節點的標籤。
這些 Hostendpoints 具有 “projectcalico-default-allow" 設定檔,這表示當您更新至 4.12 時,這些 Hostendpoints 可能會改變先前預期的行為。
在更新至 4.12之前,請確定所有先前預期的網路規則、原則 Hostendpoints 在更新之後也會相同運作。
如需相關資訊,請參閱 Calico 文件。
限制 NodePort 服務存取
定位和群組建立後
依預設,可以在叢集可用的所有網路介面上存取 NodePort 服務,例如 0.0.0.0。
不過,在多個網路可供主機使用的 Satellite 位置中,您可以限制服務的可用網路介面。
若要限制範圍,您可以在叢集層次限制 NodePort 服務的接聽位址。 此限制可讓叢集管理者使用 IP 子網路作為容許的接聽位址範圍,來限制對特定網路介面的存取權。 請完成下列步驟來重新配置 kube-proxy 元件,以限制 NodePort 服務的接聽位址範圍。
不正確地配置 node-port-addresses 可能會將您的服務與有效來源隔離。 請確定您已規劃好服務所需的所有必要子網路。IBM Cloud 不需要存取任何子網路來管理叢集。
-
準備您想要容許存取 NodePort 服務的計劃來源子網路 CIDR 清單。
-
執行下列指令,以取得
network.operator.openshift.io配置並儲存副本,以防您需要回復變更。kubectl get network.operator.openshift.io cluster -o yaml -
編輯
network.operator.openshift.io配置,並在spec區段下設定子網路清單,並包括 NodePort 服務的必要子網路。spec: kubeProxyConfig: proxyArguments: node-port-addresses: - 192.0.2.0/24 - 198.51.100.0/24 -
儲存變更並將其套用至叢集。
oc apply -f updated-network-config.yaml -
若為叢集 4.10.x 版及更舊版本,請將叢集網路操作員的管理狀態設為
Unmanaged。oc patch network.operator.openshift.io cluster --type=merge --patch '{"spec": {"managementState": "Unmanaged"}}' -
重新啟動
kube-proxyDaemonSet 以套用變更。 這項操作不會造成干擾。oc rollout restart ds -n openshift-kube-proxy openshift-kube-proxy -
等到所有
kube-proxyPod 都重新啟動為止。 請執行以下指令以檢查狀態。oc get po -n openshift-kube-proxy --selector app=kube-proxy -
若為 4.10.x 及更早版本的叢集版本,請將叢集網路操作員的管理狀態重設為
Managed。 請注意,此動作可能會重新啟動 Proxy Pod。oc patch network.operator.openshift.io cluster --type=merge --patch '{"spec": {"managementState": "Managed"}}'
重新啟動所有 Pod 之後,您的叢集即會配置受限子網路。 您可以視需要重複這些步驟來更新或移除子網路清單。
您可以根據每個服務使用 NetworkPolicies 來進一步限制資料流量。