為您的 Satellite 主機設定 HTTP 代理伺服器

您可以設定一個 HTTP 代理伺服器,讓所有來自 Satellite 主機的出站流量皆透過該代理伺服器進行路由。

僅限列入白名單的帳戶可設定 HTTP 代理伺服器。

使用 HTTP 代理伺服器時,需要哪種類型的位置?

請考量下列類型的位置。

現有 RHEL 型位置
若要設定 Proxy,必須針對 Red Hat CoreOS (RHCOS) 啟用您的位置。 若您現有的位置未啟用 RHCOS,則無法設定 HTTP 代理伺服器。 建立一個已啟用 RHCOS 的位置,然後 設定您的 HTTP 代理伺服器
具有已連接主機的現有 Red Hat CoreOS 已啟用位置
若要設定 HTTP 代理伺服器,您必須先從您所在的位置 刪除您的 hosts 檔案。 移除主機後,請參閱《 設定 HTTP 代理伺服器 》。 請注意,您也必須更新組成位置控制平面的主機。 請參閱「更新 Satellite 位置的控制平面主機」。
新的 Red Hat CoreOS 啟用位置
在將主機綁定至您的位置之前,請先設定您的 HTTP 代理伺服器

我可以使用哪種類型的主機?

在設定 HTTP 代理伺服器時,您可以使用 RHEL 或 Red Hat CoreOS 主機。 您必須編輯每一個連接至您的位置的主機,包括組成控制平面的主機。 請記得在 proxy.conf 檔案中包括 httphttps

關於 HTTP 代理伺服器,我還需要了解哪些資訊?

若要讓 Satellite 位置及叢集使用 Proxy,部署至 Satellite 位置的控制平面基礎架構節點上的 kubelet 必須能夠與 IBM Cloud 控制平面節點 API 伺服器進行通訊。 若要啟用此通訊,您必須符合下列其中一項需求。

  • 選項 1: 使用減少的防火牆連接 Script。

  • 選項 2:目前的代理伺服器可支援長效的 TCP 連線( TCP 隧道傳輸)。

  • 選項 3:您可以在與您的 Satellite 主機位於同一網路的 VSI 上建立一個次要代理伺服器,該代理伺服器需支援長效的 TCP 連線。

  • 選項 4:您可以開啟防火牆的外發連接,以允許 TCP 的連線。 如需相關資訊,請參閱 所有地區中主機的必要出埠連線功能,然後尋找地區的特定出埠網路需求。

您無法為工作節點與主節點之間的通訊,或用於連線至套件鏡像伺服器,設定 HTTP 代理伺服器。

設定 TCP 隧道連線

您的代理伺服器必須設定為使用 TCP 隧道傳輸。 以下步驟說明了 TCP 隧道功能的一般設定;有關特定服務供應商的操作說明,請參閱該供應商的文件。

  1. 設定您的 HTTP 代理伺服器,以隧道傳輸您所有四個位置的公共服務端點的流量。 若要尋找您的端點,

    ibmcloud sat location get --location LOCATION_NAME
    

    在輸出結果中,找出欄位「公共服務端點 URL」。 您可以從該欄位衍生端點。 例如,如果欄位值為 https://c131-e.us-south.satellite.cloud.ibm.com:31726,則端點為 https://c131-1.us-south.satellite.cloud.ibm.com:31726https://c131-2.us-south.satellite.cloud.ibm.com:31726https://c131-3.us-south.satellite.cloud.ibm.com:31726

  2. 請確保 HTTP 代理伺服器的聆聽埠與 IBM Cloud 上的聆聽埠相同。

  3. 更新所有 Satellite 主機上的 /etc/hosts,以包括位置公用服務端點將資料流量轉遞至 Proxy,而不是 IBM Cloud 端點。

設定細節因服務供應商而異。 請先在 Satellite 環境之外設定您的代理伺服器,以確認該設定在您的基礎架構中能正常運作,然後再於 Satellite 環境中設定您的代理伺服器。 如需有關設定與配置 HTTP 代理伺服器的更多資訊,請參閱這篇部落格文章 Proxying In Cluster Kube-APIServer Traffic in IBM Cloud Satellite

要求存取容許清單

若要將您的網址加入 HTTP 代理伺服器的白名單,請透過 建立工單 並使用 IBM 技術支援服務。

例如,使用下列要求作為範本。

Title: Request for addition of HTTP_PROXY config to
       location <LOCATION_ID>
Request Body:
We are requesting the following HTTP_PROXY info be added to
the location_ID listed in the title of this ticket.
Use the following HTTP_PROXY info
BE SURE to include the protocol (http:// or https://)
AND the port (`:PORT_NUMBER`) in the endpoint.
HTTP_PROXY: https://my-proxy-endpoint.com:PORT_NUMBER
HTTPS_PROXY: https://my-proxy-endpoint.com:PORT_NUMBER

當支援團隊處理完該工單後,您將收到一則通知,告知您的位置已更新。 若需進行變更,請開啟一張新工單,並在其中註明新的參數。 若要找出您的 LOCATIONID,請執行 ibmcloud sat locations

設定您的 HTTP 代理伺服器

若要設定 HTTP 代理伺服器,您必須編輯所有主機,包括控制平面中的主機。 如果主機已連接至某個位置 (包括構成控制平面的那些主機),則必須先 從位置中移除它們,然後才能編輯它們。 配置 Proxy 之後,請 將主機重新連接至位置。 有關更新控制平面主機的更多資訊,請參閱 《更新 Satellite 位置的控制平面主機》

  1. 選擇您要用於 Proxy 的 鏡映位置。 當您設定 Proxy 時,會使用這個鏡映位置。

  2. 尋找 NO_PROXY 的值。

    • 若為控制平面主機,請使用 172.20.0.1 (若為 RHCOS) 及 NO_PROXY=172.20.0.1,$<REDHAT_PACKAGE_MIRROR_LOCATION> (若為 RHEL)。
    • 對於 Red Hat OpenShift 主機,Red Hat OpenShift 主機的 NO_PROXY 必須包括用於 Red Hat OpenShift 叢集的服務子網路的第一個 IP。 若要尋找此 IP,請執行 cluster get 指令。
        ibmcloud ks cluster get --cluster <ClusterID>
        ```
        輸出範例
    
        ```sh {: screen}
        Name:                           hyp-20220306-1-d2   
        ID:                             <ClusterID>  
        ...
        Service Subnet:                 172.21.0.0/16
        ...
        ```
        從這個輸出中,請注意第一個 IP 是 `172.21.0.1`,在此範例中,對於 RHEL 主機,它會對與此特定叢集相關聯的主機產生完整輸出 `NO_PROXY=172.20.0.1,172.21.0.1,$REDHAT_PACKAGE_MIRROR_LOCATION`,對於 RHCOS 主機,則為 `NO_PROXY=172.20.0.1,172.21.0.1,.REGION.satellite.appdomain.cloud`。 例如,`NO_PROXY=172.20.0.1,172.21.0.1,.eu-gb.satellite.appdomain.cloud` 對於 RHCOS 主機的倫敦鏡映位置是正確的。 請注意,RHCOS 值在地區之前包括 `.`。
    
        從工作者節點到叢集服務的任何資料流量都必須包含在 `NO_PROXY` 中。 例如,若要使用映像檔登錄服務來儲存映像檔,請針對每一個工作者節點將 `image-registry.openshift-image-registry.svc` 新增至 `NO_PROXY` ; 控制平面不需要包含此值。
    
    
    
    
  3. 導覽至主機上的 /etc/systemd/system.conf.d。 如果該檔案不存在,請使用以下指令建立該檔案。 輸入步驟 2 中 NO_PROXY<VALUE>

    mkdir -p /etc/systemd/system.conf.d
    cat >"/etc/systemd/system.conf.d/proxy.conf" <<EOF
    [Manager]
    DefaultEnvironment="HTTP_PROXY=https://my-proxy-endpoint.com:PORT_NUMBER" "HTTPS_PROXY=https://my-proxy-endpoint.com:PORT_NUMBER" "NO_PROXY=<VALUE>"
    EOF
    chmod 0644 /etc/systemd/system.conf.d/proxy.conf
    
  4. 請執行以下指令,建立名為 ibm-proxy.sh 的檔案。 輸入步驟 2 中 NO_PROXY<VALUE>

    mkdir -p /etc/profile.d
    cat >"/etc/profile.d/ibm-proxy.sh" <<EOF
    #!/usr/bin/env bash
    HTTP_PROXY="https://my-proxy-endpoint.com:PORT_NUMBER"
    HTTPS_PROXY="https://my-proxy-endpoint.com:PORT_NUMBER"
    NO_PROXY="<VALUE>"
    export HTTP_PROXY
    export HTTPS_PROXY
    export NO_PROXY
    EOF
    chmod 0755 /etc/profile.d/ibm-proxy.sh
    
  5. 將主機重新開機以取得此變更。

  6. 將主機 連接或重新連接 至該位置。

  7. 將主機指派回 控制平面,或指派回先前指派的 服務

  8. 請針對每台主機重複執行這些步驟。

REDHAT_PACKAGE_MIRROR_LOCATION 的值取決於 Red Hat 套件鏡像站的位置。 如果使用多個鏡映,則 REDHAT_PACKAGE_MIRROR_LOCATION 可以是萬用字元。 如需相關資訊,請參閱 如何套用全系統 Proxy

共用鏡映位置

下列清單提供一些一般鏡映位置。

Azure
個別定義: rhui-1.microsoft.comrhui-2.microsoft.comrhui-3.microsoft.com
/etc/yum.repos.d/rh-cloud.repobaseurl
Google Cloud 提供者
cds.rhel.updates.googlecloud.com
/etc/yum.repos.d/rh-cloud.repomirrorlist
Amazon Web 服務
萬用字元: aws.ce.redhat.com
rhui3.REGION.aws.ce.redhat.com
/etc/yum.repos.d/redhat-rhui.repomirrorlist
IBM Cloud
萬用字元: service.networklayer.com
dal10: rhncapdal1001.service.networklayer.com
/etc/yum.repos.d/redhat.repobaseurl