为您的 Satellite 主机配置 HTTP 代理

您可以配置一个 HTTP 代理,以便将 Satellite 主机上的所有出站流量都路由到该代理。

仅允许列入白名单的账户设置 HTTP 代理。

使用 HTTP 代理需要什么样的位置?

请考虑以下类型的位置。

基于 RHEL 的现有位置
要设置代理,必须为 Red Hat CoreOS (RHCOS) 启用您的位置。 如果您的现有站点未启用 RHCOS,则无法配置 HTTP 代理。 创建一个支持 RHCOS 的位置,然后 配置您的 HTTP 代理
具有已连接主机的现有 Red Hat CoreOS 启用位置
要设置 HTTP 代理,您必须先从您所在的位置访问 删除您的主机。 删除主机后,请参阅《 配置 HTTP 代理 》。 请注意,您还必须更新构成位置控制平面的主机。 请参阅《 更新 Satellite 位置控制平面主机 》。
新的 Red Hat CoreOS 启用位置
在将主机关联到您的位置之前,请访问 配置您的 HTTP 代理

我可以使用哪种类型的主机?

在设置 HTTP 代理时,您可以使用 RHEL 或 Red Hat CoreOS 主机。 您必须编辑连接到位置的每个主机,包括构成控制平面的主机。 请记住在 proxy.conf 文件中包含 httphttps

关于 HTTP 代理,我还需要了解什么?

要使 Satellite 位置和集群能够使用代理,部署到 Satellite 位置的控制平面基础结构节点上的 kubelet 必须能够与 IBM Cloud 控制平面节点 API 服务器进行通信。 要启用此通信,必须满足下列其中一个需求。

  • 选项 1: 使用减少的防火墙连接脚本。

  • 选项 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,以包括位置公共服务端点将流量转发到代理,而不是转发到 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 代理,您必须编辑每个主机,包括控制平面中的主机。 如果您的主机已连接到某个位置 (包括构成控制平面的那些主机),那么必须先 从该位置除去这些主机,然后才能对其进行编辑。 配置代理后,将主机重新连接到位置。 有关更新控制平面主机的更多信息,请参阅 《更新 Satellite 位置的控制平面主机》

  1. 选择要用于代理的 镜像位置。 此镜像位置在您设置代理时使用。

  2. 查找 NO_PROXY 的值。

    • 对于控制平面主机,请使用 172.20.0.1 for RHCOS 和 NO_PROXY=172.20.0.1,$<REDHAT_PACKAGE_MIRROR_LOCATION> for 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`,这将使与此特定集群相关联的主机在此示例中的完整输出 `NO_PROXY=172.20.0.1,172.21.0.1,$REDHAT_PACKAGE_MIRROR_LOCATION` for RHEL hosts and `NO_PROXY=172.20.0.1,172.21.0.1,.REGION.satellite.appdomain.cloud` for RHCOS hosts。 例如,对于 RHCOS 主机的伦敦镜像位置,`NO_PROXY=172.20.0.1,172.21.0.1,.eu-gb.satellite.appdomain.cloud` 是正确的。 请注意,RHCOS 值在区域之前包含 `.`。
    
        从工作程序节点到集群服务的任何流量都必须包含在 `NO_PROXY` 中。 例如,要使用映像注册表服务来存储映像,请针对每个工作程序节点将 `image-registry.openshift-image-registry.svc` 添加到 `NO_PROXY` ; 此值不需要包含在控制平面中。
    
    
    
    
  3. 浏览至主机上的 /etc/systemd/system.conf.d。 如果该文件不存在,请使用以下命令创建它。 从步骤 2 中输入 <VALUE> for NO_PROXY

    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 中输入 <VALUE> for NO_PROXY

    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 可以是通配符。 有关更多信息,请参阅 如何应用系统范围的代理

公共镜像位置

以下列表提供了一些公共镜像位置。

Azure
单独定义: rhui-1.microsoft.comrhui-2.microsoft.comrhui-3.microsoft.com
baseurl 下的 /etc/yum.repos.d/rh-cloud.repo
Google Cloud 提供者
cds.rhel.updates.googlecloud.com
mirrorlist 下的 /etc/yum.repos.d/rh-cloud.repo
亚马逊网络服务
通配符: aws.ce.redhat.com
rhui3.REGION.aws.ce.redhat.com
mirrorlist 下的 /etc/yum.repos.d/redhat-rhui.repo
IBM Cloud
通配符: service.networklayer.com
dal10: rhncapdal1001.service.networklayer.com
baseurl 下的 /etc/yum.repos.d/redhat.repo