×

如果您使用的是现有的虚拟私有云 (VPC),您可以在安装 AWS 上的 Red Hat OpenShift 服务 (ROSA) 集群期间或集群安装后配置集群范围代理。启用代理后,核心集群组件将被拒绝直接访问互联网,但代理不会影响用户工作负载。

只有集群系统出口流量被代理,包括对云提供商 API 的调用。

如果您使用集群范围代理,则您有责任维护代理对集群的可用性。如果代理不可用,则可能会影响集群的健康状况和可支持性。

配置集群范围代理的先决条件

要配置集群范围代理,您必须满足以下要求。这些要求在安装期间或安装后配置代理时均有效。

一般要求

  • 您是集群所有者。

  • 您的帐户具有足够的权限。

  • 您拥有集群的现有虚拟私有云 (VPC)。

  • 代理可以访问集群的 VPC 和 VPC 的私有子网。代理也可以从集群的 VPC 和 VPC 的私有子网访问。

  • 您已将以下端点添加到您的 VPC 端点

    • ec2.<aws_region>.amazonaws.com

    • elasticloadbalancing.<aws_region>.amazonaws.com

    • s3.<aws_region>.amazonaws.com

      这些端点是完成节点到 AWS EC2 API 请求所必需的。由于代理在容器级别工作,而不是在节点级别工作,因此您必须通过 AWS 私有网络将这些请求路由到 AWS EC2 API。将 EC2 API 的公共 IP 地址添加到代理服务器中的允许列表是不够的。

      使用集群范围代理时,必须将s3.<aws_region>.amazonaws.com端点配置为Gateway类型。

网络要求

  • 如果您的代理重新加密出口流量,则必须为域和端口组合创建排除项。下表提供了有关这些例外的指导。

    • 您的代理必须排除重新加密以下 OpenShift URL

      地址 协议/端口 功能

      observatorium-mst.api.openshift.com

      https/443

      必需。用于托管 OpenShift 特定的遥测。

      sso.redhat.com

      https/443

      https://cloud.redhat.com/openshift站点使用来自sso.redhat.com的认证来下载集群拉取密钥,并使用Red Hat SaaS解决方案来促进对您的订阅、集群清单和收费报告的监控。

    • 您的代理必须排除重新加密以下站点可靠性工程 (SRE) 和管理 URL

      地址 协议/端口 功能

      *.osdsecuritylogs.splunkcloud.com

      inputs1.osdsecuritylogs.splunkcloud.com inputs2.osdsecuritylogs.splunkcloud.com inputs4.osdsecuritylogs.splunkcloud.com inputs5.osdsecuritylogs.splunkcloud.com inputs6.osdsecuritylogs.splunkcloud.com inputs7.osdsecuritylogs.splunkcloud.com inputs8.osdsecuritylogs.splunkcloud.com inputs9.osdsecuritylogs.splunkcloud.com inputs10.osdsecuritylogs.splunkcloud.com inputs11.osdsecuritylogs.splunkcloud.com inputs12.osdsecuritylogs.splunkcloud.com inputs13.osdsecuritylogs.splunkcloud.com inputs14.osdsecuritylogs.splunkcloud.com inputs15.osdsecuritylogs.splunkcloud.com

      tcp/9997

      splunk-forwarder-operator用作日志转发端点,供Red Hat SRE用于基于日志的警报。

      http-inputs-osdsecuritylogs.splunkcloud.com

      https/443

      splunk-forwarder-operator用作日志转发端点,供Red Hat SRE用于基于日志的警报。

附加资源

额外信任捆绑包的责任

如果您提供额外的信任捆绑包,您有责任满足以下要求

  • 确保额外信任捆绑包的内容有效

  • 确保额外信任捆绑包中包含的证书(包括中间证书)未过期

  • 跟踪过期时间并对额外信任捆绑包中包含的证书执行任何必要的续订

  • 使用更新的额外信任捆绑包更新集群配置

安装期间配置代理

您可以在将 AWS 上的 Red Hat OpenShift 服务 (ROSA) 集群安装到现有的虚拟私有云 (VPC) 时配置 HTTP 或 HTTPS 代理。您可以使用 Red Hat OpenShift 集群管理器或 ROSA CLI (rosa) 在安装期间配置代理。

使用 OpenShift 集群管理器在安装期间配置代理

如果您将 AWS 上的 Red Hat OpenShift 服务 (ROSA) 集群安装到现有的虚拟私有云 (VPC),则可以使用 Red Hat OpenShift 集群管理器在安装期间启用集群范围的 HTTP 或 HTTPS 代理。

安装之前,必须验证从安装集群的VPC可以访问代理。代理也必须可以从VPC的私有子网访问。

有关使用OpenShift集群管理器在安装过程中配置集群范围代理的详细步骤,请参阅使用OpenShift集群管理器创建具有自定义设置的集群

使用CLI在安装过程中配置代理

如果将Red Hat OpenShift Service on AWS (ROSA)集群安装到现有的虚拟私有云 (VPC) 中,则可以使用ROSA CLI (rosa) 在安装过程中启用集群范围的HTTP或HTTPS代理。

以下步骤详细介绍了用于在安装过程中配置集群范围代理的ROSA CLI (rosa) 参数。有关使用ROSA CLI进行一般安装步骤的信息,请参阅使用CLI创建具有自定义设置的集群

先决条件
  • 您已验证可以从安装集群的VPC访问代理。代理也必须可以从VPC的私有子网访问。

步骤
  • 创建集群时指定代理配置

    $ rosa create cluster \
     <other_arguments_here> \
     --additional-trust-bundle-file <path_to_ca_bundle_file> \   (1) (2) (3)
     --http-proxy http://<username>:<password>@<ip>:<port> \  (1) (3)
     --https-proxy https://<username>:<password>@<ip>:<port> \  (1) (3)
     --no-proxy example.com (4)
    
    1 additional-trust-bundle-filehttp-proxyhttps-proxy参数都是可选的。
    2 additional-trust-bundle-file参数是文件路径,指向包含PEM编码的X.509证书的捆绑包,所有证书都连接在一起。如果使用TLS检查代理,除非代理的身份证书由Red Hat Enterprise Linux CoreOS (RHCOS)信任捆绑包中的权威机构签名,否则需要additional-trust-bundle-file参数。这适用于代理是透明的还是需要使用http-proxyhttps-proxy参数进行显式配置,无论哪种情况。
    3 http-proxyhttps-proxy参数必须指向有效的URL。
    4 要排除代理的目的地域名、IP地址或网络CIDR的逗号分隔列表。

    .作为域名前缀,仅匹配子域。例如,.y.com匹配x.y.com,但不匹配y.com。使用*绕过所有目的地的代理。如果扩展了安装配置中networking.machineNetwork[].cidr字段定义的网络中未包含的工作节点,则必须将它们添加到此列表中,以防止连接问题。

    如果未设置httpProxyhttpsProxy字段,则忽略此字段。

安装后配置代理

您可以将HTTP或HTTPS代理配置到现有的虚拟私有云 (VPC) 中已安装的Red Hat OpenShift Service on AWS (ROSA) 集群中。您可以使用Red Hat OpenShift集群管理器或ROSA CLI (rosa) 在安装后配置代理。

使用OpenShift集群管理器安装后配置代理

您可以使用Red Hat OpenShift集群管理器将集群范围的代理配置添加到虚拟私有云 (VPC) 中现有的Red Hat OpenShift Service on AWS集群中。

您还可以使用OpenShift集群管理器更新现有的集群范围代理配置。例如,您可能需要更新代理的网络地址,或者如果代理的任何证书颁发机构过期,则替换额外的信任捆绑包。

集群将代理配置应用于控制平面和计算节点。应用配置时,每个集群节点将暂时处于不可调度状态,并将其工作负载排出。每个节点都作为流程的一部分重新启动。

先决条件
  • 您拥有一个Red Hat OpenShift Service on AWS集群。

  • 您的集群部署在VPC中。

步骤
  1. 导航到OpenShift集群管理器并选择您的集群。

  2. 网络页面上的虚拟私有云 (VPC)部分下,单击编辑集群范围代理

  3. 编辑集群范围代理页面上,提供您的代理配置详细信息

    1. 至少在一个字段中输入一个值

      • 指定有效的HTTP代理URL

      • 指定有效的HTTPS代理URL

      • 附加信任捆绑包字段中,提供PEM编码的X.509证书捆绑包。如果您要替换现有的信任捆绑包文件,请选择替换文件以查看该字段。该捆绑包将添加到集群节点的受信任证书存储中。如果您使用TLS检查代理,除非代理的身份证书由Red Hat Enterprise Linux CoreOS (RHCOS)信任捆绑包中的权威机构签名,否则需要附加信任捆绑包文件。此要求适用于代理是透明的还是需要使用http-proxyhttps-proxy参数进行显式配置,无论哪种情况。

    2. 单击确认

验证
  • 网络页面上的虚拟私有云 (VPC)部分下,验证集群的代理配置是否符合预期。

使用CLI安装后配置代理

您可以使用Red Hat OpenShift Service on AWS (ROSA) CLI (rosa) 将集群范围的代理配置添加到虚拟私有云 (VPC) 中现有的ROSA集群中。

您还可以使用rosa更新现有的集群范围代理配置。例如,您可能需要更新代理的网络地址,或者如果代理的任何证书颁发机构过期,则替换额外的信任捆绑包。

集群将代理配置应用于控制平面和计算节点。应用配置时,每个集群节点将暂时处于不可调度状态,并将其工作负载排出。每个节点都作为流程的一部分重新启动。

先决条件
  • 您已在安装主机上安装并配置了最新的ROSA (rosa) 和OpenShift (oc) CLI。

  • 您有一个部署在VPC中的ROSA集群。

步骤
  • 编辑集群配置以添加或更新集群范围的代理详细信息

    $ rosa edit cluster \
     --cluster $CLUSTER_NAME \
     --additional-trust-bundle-file <path_to_ca_bundle_file> \   (1) (2) (3)
     --http-proxy http://<username>:<password>@<ip>:<port> \  (1) (3)
     --https-proxy https://<username>:<password>@<ip>:<port> \  (1) (3)
      --no-proxy example.com (4)
    
    1 additional-trust-bundle-filehttp-proxyhttps-proxy参数都是可选的。
    2 additional-trust-bundle-file参数是文件路径,指向包含PEM编码的X.509证书的捆绑包,所有证书都连接在一起。additional-trust-bundle-file参数是文件路径,指向包含PEM编码的X.509证书的捆绑包,所有证书都连接在一起。如果使用TLS检查代理,除非代理的身份证书由Red Hat Enterprise Linux CoreOS (RHCOS)信任捆绑包中的权威机构签名,否则需要additional-trust-bundle-file参数。这适用于代理是透明的还是需要使用http-proxyhttps-proxy参数进行显式配置,无论哪种情况。

    您不应尝试直接更改集群上的代理或附加信任捆绑包配置。必须使用ROSA CLI (rosa) 或Red Hat OpenShift集群管理器应用这些更改。对集群直接进行的任何更改都将自动恢复。

    3 http-proxyhttps-proxy参数必须指向有效的URL。
    4 要排除代理的目的地域名、IP地址或网络CIDR的逗号分隔列表。

    .作为域名前缀,仅匹配子域。例如,.y.com匹配x.y.com,但不匹配y.com。使用*绕过所有目的地的代理。如果扩展了安装配置中networking.machineNetwork[].cidr字段定义的网络中未包含的工作节点,则必须将它们添加到此列表中,以防止连接问题。

    如果未设置httpProxyhttpsProxy字段,则忽略此字段。

验证
  1. 列出机器配置池的状态并验证它们是否已更新

    $ oc get machineconfigpools
    示例输出
    NAME     CONFIG                                             UPDATED   UPDATING   DEGRADED   MACHINECOUNT   READYMACHINECOUNT   UPDATEDMACHINECOUNT   DEGRADEDMACHINECOUNT   AGE
    master   rendered-master-d9a03f612a432095dcde6dcf44597d90   True      False      False      3              3                   3                     0                      31h
    worker   rendered-worker-f6827a4efe21e155c25c21b43c46f65e   True      False      False      6              6                   6                     0                      31h
  2. 显示集群的代理配置,并验证详细信息是否符合预期

    $ oc get proxy cluster -o yaml
    示例输出
    apiVersion: config.openshift.io/v1
    kind: Proxy
    spec:
      httpProxy: http://proxy.host.domain:<port>
      httpsProxy: https://proxy.host.domain:<port>
      <...more...>
    status:
      httpProxy: http://proxy.host.domain:<port>
      httpsProxy: https://proxy.host.domain:<port>
      <...more...>

删除集群范围代理

您可以使用ROSA CLI删除集群范围的代理。删除集群后,还应删除添加到集群的任何信任捆绑包。

使用CLI删除集群范围代理

必须使用Red Hat OpenShift Service on AWS (ROSA) CLI,rosa,从集群中删除代理的地址。

先决条件
  • 您必须拥有集群管理员权限。

  • 您已安装 ROSA 命令行界面 (rosa)。

步骤
  • 使用 rosa edit 命令修改代理。您必须将空字符串传递给 --http-proxy--https-proxy 参数才能从集群中清除代理。

    $ rosa edit cluster -c <cluster_name> --http-proxy "" --https-proxy ""

    虽然您的代理可能只使用其中一个代理参数,但空字段会被忽略,因此将空字符串传递给 --http-proxy--https-proxy 参数都不会造成任何问题。

    示例输出
    I: Updated cluster <cluster_name>
验证
  • 您可以使用 rosa describe 命令验证代理是否已从集群中移除。

    $ rosa describe cluster -c <cluster_name>

    移除之前,代理 IP 显示在代理部分。

    Name:                       <cluster_name>
    ID:                         <cluster_internal_id>
    External ID:                <cluster_external_id>
    OpenShift Version:          .0
    Channel Group:              stable
    DNS:                        <dns>
    AWS Account:                <aws_account_id>
    API URL:                    <api_url>
    Console URL:                <console_url>
    Region:                     us-east-1
    Multi-AZ:                   false
    Nodes:
     - Control plane:           3
     - Infra:                   2
     - Compute:                 2
    Network:
     - Type:                    OVNKubernetes
     - Service CIDR:            <service_cidr>
     - Machine CIDR:            <machine_cidr>
     - Pod CIDR:                <pod_cidr>
     - Host Prefix:             <host_prefix>
    Proxy:
     - HTTPProxy:               <proxy_url>
    Additional trust bundle:    REDACTED

    移除代理后,代理部分将被移除。

    Name:                       <cluster_name>
    ID:                         <cluster_internal_id>
    External ID:                <cluster_external_id>
    OpenShift Version:          .0
    Channel Group:              stable
    DNS:                        <dns>
    AWS Account:                <aws_account_id>
    API URL:                    <api_url>
    Console URL:                <console_url>
    Region:                     us-east-1
    Multi-AZ:                   false
    Nodes:
     - Control plane:           3
     - Infra:                   2
     - Compute:                 2
    Network:
     - Type:                    OVNKubernetes
     - Service CIDR:            <service_cidr>
     - Machine CIDR:            <machine_cidr>
     - Pod CIDR:                <pod_cidr>
     - Host Prefix:             <host_prefix>
    Additional trust bundle:    REDACTED

移除 AWS 上 Red Hat OpenShift Service 集群上的证书颁发机构

您可以使用 Red Hat OpenShift Service on AWS (ROSA) 命令行界面 rosa 从集群中移除证书颁发机构 (CA)。

先决条件
  • 您必须拥有集群管理员权限。

  • 您已安装 ROSA 命令行界面 (rosa)。

  • 您的集群已添加证书颁发机构。

步骤
  • 使用 rosa edit 命令修改 CA 信任捆绑包。您必须将空字符串传递给 --additional-trust-bundle-file 参数才能从集群中清除信任捆绑包。

    $ rosa edit cluster -c <cluster_name> --additional-trust-bundle-file ""
    示例输出
    I: Updated cluster <cluster_name>
验证
  • 您可以使用 rosa describe 命令验证信任捆绑包是否已从集群中移除。

    $ rosa describe cluster -c <cluster_name>

    移除之前,“附加信任捆绑包”部分会出现,出于安全考虑,其值已被屏蔽。

    Name:                       <cluster_name>
    ID:                         <cluster_internal_id>
    External ID:                <cluster_external_id>
    OpenShift Version:          .0
    Channel Group:              stable
    DNS:                        <dns>
    AWS Account:                <aws_account_id>
    API URL:                    <api_url>
    Console URL:                <console_url>
    Region:                     us-east-1
    Multi-AZ:                   false
    Nodes:
     - Control plane:           3
     - Infra:                   2
     - Compute:                 2
    Network:
     - Type:                    OVNKubernetes
     - Service CIDR:            <service_cidr>
     - Machine CIDR:            <machine_cidr>
     - Pod CIDR:                <pod_cidr>
     - Host Prefix:             <host_prefix>
    Proxy:
     - HTTPProxy:               <proxy_url>
    Additional trust bundle:    REDACTED

    移除代理后,“附加信任捆绑包”部分将被移除。

    Name:                       <cluster_name>
    ID:                         <cluster_internal_id>
    External ID:                <cluster_external_id>
    OpenShift Version:          .0
    Channel Group:              stable
    DNS:                        <dns>
    AWS Account:                <aws_account_id>
    API URL:                    <api_url>
    Console URL:                <console_url>
    Region:                     us-east-1
    Multi-AZ:                   false
    Nodes:
     - Control plane:           3
     - Infra:                   2
     - Compute:                 2
    Network:
     - Type:                    OVNKubernetes
     - Service CIDR:            <service_cidr>
     - Machine CIDR:            <machine_cidr>
     - Pod CIDR:                <pod_cidr>
     - Host Prefix:             <host_prefix>
    Proxy:
     - HTTPProxy:               <proxy_url>